吴恩达老师机器学习课程chapter02——分类

本文是非计算机专业新手的自学笔记,高手勿喷,欢迎指正与其他任何合理交流。

本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第六章。



二分类

流入垃圾邮件的分类,或去医院医生诊断病人身体里的肿瘤是否是恶性的,这些是常见的分类问题。

抽象成数学关系后,输出y为整数,这样的问题被称之为分类问题。

基本概念

例题如下:

可以看出,当出现偏离所有样本均值很远的样本时,很有可能导致简单的线性回归结果判断不准。且hθ(x)可以大于0或者小于1。

因此,有需要引入Sigmoid函数,又名Logistic函数。这种函数平滑、易于求导。可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。这里将Sigmoid函数记为:

\[g(z)=\frac{1}{1+e^{-z} }
\]

与线性回归结合可得:

\[h_{\theta }(x) =g(\theta ^{T}x )=\frac{1}{1+e^{-\theta ^{T}x } }
\]

这里hθ(x)可以用来表征 概率

hθ(x) ≥ 0.5,认为y=1;否则,认为y=0。

运用 非线性的多项式回归 ,可以实现 ** 非线性分类 **:

代价函数

若选择线性回归中的代价函数,那么的得到的函数很可能不是凸函数(convex function),梯度下降法只能得到局部最优,在此失效。

这里定义对数回归代价函数(logistic regression cost function):

\[\operatorname{Cost}\left({h_{\theta}(x)}, y\right)=\left\{\begin{array}{ll}
-\log \left(h_{\theta}(x)\right) & \text { if } y=1 \\
-\log \left(1-h_{\theta}(x)\right) & \text { if } y=0
\end{array}\right.
\]

由图可见:

y=1时,若 hθ(x) → 0,惩罚很大;y=0时,若 hθ(x) → 1,惩罚很大。

将所有样本的Cost叠加取均值,可得:

\[\begin{aligned}
J(\theta) &=\frac{1}{m} \sum_{i=1}^{m} \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) \\
&=-\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]
\end{aligned}
\]

故问题转化为可以用梯度下降法 解决的优化问题如下:

其中的梯度:


多分类

对于有n个类别的多分类,可以视为n个二分类问题:

首先,训练n个训练器 $ h_{\theta}^{(i)}(x) $;

接着将新的输入x代入这n个分类器当中,选择概率最大的一个,即 $ \max {i} h^{(i)}(x)$。

吴恩达老师机器学习课程chapter02——分类的更多相关文章

  1. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

    机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave    开源  MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...

  2. 吴恩达《机器学习》课程笔记——第六章:Matlab/Octave教程

    上一篇  ※※※※※※※※  [回到目录]  ※※※※※※※※  下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...

  3. 吴恩达《机器学习》课程总结(5)_logistic回归

    Q1分类问题 回归问题的输出可能是很大的数,而在分类问题中,比如二分类,希望输出的值是0或1,如何将回归输出的值转换成分类的输出0,1成为关键.注意logistics回归又称 逻辑回归,但他是分类问题 ...

  4. 深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响

    博主 撸的  该节 代码 地址 :https://github.com/LemonTree1994/machine-learning/blob/master/%E5%90%B4%E6%81%A9%E8 ...

  5. 吴恩达《机器学习》课程笔记——第七章:Logistic回归

    上一篇  ※※※※※※※※  [回到目录]  ※※※※※※※※  下一篇 7.1 分类问题 本节内容:什么是分类 之前的章节介绍的都是回归问题,接下来是分类问题.所谓的分类问题是指输出变量为有限个离散 ...

  6. 吴恩达《机器学习》课程总结(18)_照片OCR

    18.1问题描述和流程图 (1)图像文字识别是从给定的一张图片中识别文字. (2)流程包括: 1.文字侦测 2.字符切分(现在不需要切分了) 3.字符分类 18.2滑动窗口 在行人检测中,滑动窗口是首 ...

  7. 跟我学算法-吴恩达老师(超参数调试, batch归一化, softmax使用,tensorflow框架举例)

    1. 在我们学习中,调试超参数是非常重要的. 超参数的调试可以是a学习率,(β1和β2,ε)在Adam梯度下降中使用, layers层数, hidden units 隐藏层的数目, learning_ ...

  8. 跟我学算法-吴恩达老师的logsitic回归

    logistics回归是一种二分类问题,采用的激活函数是sigmoid函数,使得输出值转换为(0,1)之间的概率 A = sigmoid(np.dot(w.T, X) + b ) 表示预测函数 dz ...

  9. 吴恩达《机器学习》编程作业——machine-learning-ex1:线性回归

    ❄❄❄❄❄❄❄❄[回到目录]❄❄❄❄❄❄❄❄ 本次编程作业中,需要完成的代码有如下几部分: [⋆] warmUpExercise.m - Simple example function in Octa ...

  10. 跟我学算法-吴恩达老师(mini-batchsize,指数加权平均,Momentum 梯度下降法,RMS prop, Adam 优化算法, Learning rate decay)

    1.mini-batch size 表示每次都只筛选一部分作为训练的样本,进行训练,遍历一次样本的次数为(样本数/单次样本数目) 当mini-batch size 的数量通常介于1,m 之间    当 ...

随机推荐

  1. CentOS 7.6 部署zabbix 6.0 支持Kubernetes

    # 基础信息 系统版本: CentOS Linux release 7.6.1810 (Core) 内核版本: 4.19.0-9.el7.ucloud.x86_64 # 听说最新版的zabbix6.0 ...

  2. 关于浏览器缓存造成的bug解决方法(页面跳转缓存,刷新生效)

    1.在执行操作时带上一个随机数/时间戳,表示每一次的都是独一无二的

  3. Clion 配置QT环境设置的注意事项

    众所周知,jetbrain家的产品用起来相当不错,clion作为专用的c/c++语言编辑工具,能够舒服很多,尤其是代码提示功能以及格式化代码的功能.最近入了Qt的坑,准备学一些简单的界面开发,但是Qt ...

  4. 解决报错Could not satisfy explicit device specification '' because the node was colocated with a group of nodes that required incompatible device '/device:GPU:0'

    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))改为如下:sess = tf.Session(config=tf. ...

  5. 微信h5调分享功能

    功能背景: 基于微信公众号的h5商城页面,实现特定商品的分享,包括朋友圈和好友分享功能. 代码实现(以vue项目为例): 首先贴上官方开发文档:https://developers.weixin.qq ...

  6. php的几种接值方式

    1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法__URL__/edit/id/1 http://localhost/index.php/user/edit/i ...

  7. A调用B方法,@Transactional事务问题

    总结:方法A调用方法B:1.如果只有A加@Transactional注解:则AB在同一事务中,任意异常都回滚:2.如果只有B加@Transactional注解:AB方法为同一类,事务失效任意异常都不回 ...

  8. JavaSE——.replace()方法替换内容

    package com.zhao.stringtest; public class Test5 { //.replace()方法替换词汇 public static void main(String[ ...

  9. Java中如何处理大批量照片上传,然后调用图片上传服务区接口,使用异步吗,是不是需要用到多线程

    bot回答: 可以使用多线程,在 Java 中,可以使用 ExecutorService 来实现线程池,让每一个处理上传批量照片的任务都子事与一个线程,然后分别调用图片上传服务区接口,进行图片的异步上 ...

  10. 集成mupdf实现手写笔签批应用

    1. 首先,需要在Android Studio中集成mupdf,使用Android Studio的Gradle构建系统,可以在dependencies中添加如下依赖: implementation ' ...