diff --git a/README.md b/README.md index 761b195..8859d26 100644 --- a/README.md +++ b/README.md @@ -11,24 +11,29 @@ https://www.coursera.org/learn/machine-learning 本项目包含课程中的所有课后作业以及笔记,目前正在将手写笔记进行电子化。 1. 笔记(notes)都为中文,为了便于复习和扩充等,尽量会按照视频目录,以及视频内容进行提炼整理。 + 2. 所有课后作业(assignments)都已提交并通过 Coursera 编程测验。仅供参考,请勿抄袭。 -笔记基于支持 LaTeX 的 markdown 编辑器 [Typora][2],其他类似的编辑器也可以阅读,不过可能会产生一些排版问题。 +For Andrew Ng's machine learning course on Coursera. -如要直接在 GitHub Page 上阅读,需安装 Chrome 插件 —— [GitHub with MathJax][1],测试后发现该插件无法正常渲染某些公式(已向插件作者提出 issues),故还是建议用 Typora 阅读。 +Including assignments and notes, notes are WIP. +You can read it by Typora or any other similar markdown editor. -For Andrew Ng's machine learning course on Coursera. +## 阅读及编辑 + +1. **在线阅读地址**:http://scruel.gitee.io/ml-andrewng-notes/ +2. 直接在 GitHub Page 上阅读,需安装 Chrome 插件 —— [GitHub with MathJax][1](部分公式仍无法正常解析)。 +3. 下载 .html 网页文件及 笔记图片 image 文件夹,浏览器打开阅读。 +4. 笔记源码(.md)基于支持 LaTeX 的 markdown 编辑器 [Typora][2],其他类似的编辑器也可以阅读及编辑,注意其他编辑器可能会产生排版问题。 -Including assignments and notes, notes are WIP. -You can read it by Typora or any other similar markdown editor. ## 致谢 -- Coursera 官网文档 +- Coursera 官网 - @小小人_V 笔记 - 52nlp @@ -36,7 +41,5 @@ You can read it by Typora or any other similar markdown editor. 注:由于手写笔记成稿时间较早,有所参考无法一一致谢,在此统一表示谢意! - - [1]: https://chrome.google.com/webstore/detail/ioemnmodlmafdkllaclgeombjnmnbima [2]: https://typora.io/ \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..a8ed214 --- /dev/null +++ b/index.html @@ -0,0 +1,227 @@ + + +
+ +1. 引言(Introduction)1.1 Welcome1.2 什么是机器学习(What is Machine Learning)1.3 监督学习(Supervised Learning)1.4 无监督学习(Unsupervised Learning)2 单变量线性回归(Linear Regression with One Variable)2.1 模型表示(Model Representation)2.2 损失函数(Cost Function)2.3 损失函数 - 直观理解1(Cost Function - Intuition I)2.4 损失函数 - 直观理解2(Cost Function - Intuition II)2.5 梯度下降(Gradient Descent)2.6 梯度下降直观理解(Gradient Descent Intuition)2.7 线性回归中的梯度下降(Gradient Descent For Linear Regression)3 Linear Algebra Review3.1 Matrices and Vectors3.2 Addition and Scalar Multiplication3.3 Matrix Vector Multiplication3.4 Matrix Matrix Multiplication3.5 Matrix Multiplication Properties3.6 Inverse and Transpose
随着互联网数据不断累积,硬件不断升级迭代,在这个信息爆炸的时代,机器学习已被应用在各行各业中,可谓无处不在。
一些常见的机器学习的应用,例如:
使用到机器学习的一些案例:
数据挖掘
人工无法处理的工作(量大)
个人定制
研究大脑
当然,还有更多其他的应用场景,总之,机器学习的出现让很多不可能成为了可能。
机器学习定义 +这里主要有两种定义:
Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.
这个定义有点不正式但提出的时间最早,来自于一个懂得计算机编程的下棋菜鸟,编程使得计算机通过不断的对弈,不断地计算布局的好坏来“学习”,从而积累经验,这样,这个计算机程序成为了一个厉害的棋手。
Tom Mitchell (1998) Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
Tom Mitchell 的定义更现代,也有点拗口,视频中介绍了一个例子,即垃圾邮件分类。对于垃圾邮件分类,文中的三个字母分别代表:
机器学习算法
主要有两种机器学习的算法分类
两者的区别为是否需要人工参与数据标注。这两部分的内容占比很大,并且很重要,掌握好了可以在以后的应用中节省大把大把的时间~
还有一些算法也属于机器学习领域,诸如:
监督学习,即为教计算机如何去完成预测任务(有反馈),预先给一定数据量的输入和对应的结果,建模拟合,最后让计算机预测未知数据的结果。
监督学习一般有两种:
回归问题(Regression)
回归问题即为预测一系列的连续值。
在房屋价格预测的例子中,给出了一系列的房屋面基数据,根据这些数据来预测任意面积的房屋价格。给出照片-年龄数据集,预测给定照片的年龄。

分类问题(Classification)
分类问题即为预测一系列的离散值。
即根据数据预测被预测对象属于哪个分类。
视频中举了癌症肿瘤这个例子,针对诊断结果,分别分类为良性或恶性。还例如垃圾邮件分类问题,也同样属于监督学习中的分类问题。

视频中提到支持向量机这个算法,旨在解决当特征量很大的时候(特征即如癌症例子中的肿块大小,颜色,气味等各种特征),计算机内存一定会不够用的情况。支持向量机能让计算机处理无限多个特征。
相对于监督学习,训练集不会有人为标注的结果(无反馈),我们不会给出结果或无法得知训练集的结果是什么样,而是单纯由计算机通过无监督学习算法自行分析,从而“得出结果”。计算机可能会把特定的数据集归为几个不同的簇,故叫做聚类算法。
无监督学习一般分为两种:
聚类(Clustering)
非聚类(Non-clustering)
新闻聚合
在例如谷歌新闻这样的网站中,每天后台都会收集成千上万的新闻,然后将这些新闻分组成一个个的新闻专题,这样一个又一个聚类,就是应用了无监督学习的结果。
鸡尾酒问题

在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢~~。
嗯,这块是打打鸡血的,只需要一行代码就解决了问题,就是这么简单!当然,我没复现过 ^_^……
神奇的一行代码:
+[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
编程语言建议
在机器学习刚开始时,推荐使用 Octave 类的工程计算编程软件,因为在 C++ 或 Java 等编程语言中,编写对应的代码需要用到复杂的库以及要写大量的冗余代码,比较耗费时间,建议可以在学习过后再考虑使用其他语言来构建系统。 +另外,在做原型搭建的时候也应该先考虑使用类似于 Octave 这种便于计算的编程软件,当其已经可以工作后,才将模型移植到其他的高级编程语言中。
注:Octave 与 MATLAB 语法相近,由于 MATLAB 为商业软件,课程中使用开源且免费的 Octave。
机器学习领域的发展迅速,也可使用 Tensorflow 等开源机器学习框架学习,这些框架十分友好,易于编写及应用机器学习算法。
房价预测训练集
| Size in () | Price ($) in 1000's() |
|---|---|
| 2104 | 460 |
| 1416 | 232 |
| 1534 | 315 |
| 852 | 178 |
| ... | ... |
房价预测训练集中,同时给出了输入 和输出结果 ,即给出了人为标注的”正确结果“,且预测的量是连续的,属于监督学习中的回归问题。

其中 代表结果函数,也称为假设(hypothesis) 。这个函数 根据输入(房屋的面积),给出预测结果输出(房屋的价格),即是一个 的映射。
,为其中一种可行的表达式。
: 特征/输入变量。
上式中, 为参数, 的变化才决定了输出结果,不同以往,这里的 被我们视作已知(不论是数据集还是预测前的输入),所以怎样解得 以更好地拟合数据,成了求解该问题的最终问题。
单变量,即只有一个特征(如例子中房屋的面积这个特征)。
我们的目的在于求解预测结果 最接近于实际结果 时 的取值,则问题可表达为求解 的最小值。
: 训练集中的样本总数
: 目标变量/输出变量
: 训练集中的实例
: 训练集中的第 个样本实例

上图展示了当 取不同值时, 对数据集的拟合情况,蓝色虚线部分代表建模误差(预测结果与实际结果之间的误差),我们的目标就是最小化所有误差之和。
为了求解最小值,引入损失函数(Cost Function)概念,用于度量建模误差。考虑到要计算最小值,应用二次函数对求和式建模,即应用统计学中的平方损失函数(最小二乘法):
系数 存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉 。
讨论到这里,我们的问题就转化成了求解 的最小值。
根据上节视频,列出如下定义:
为了直观理解损失函数到底是在做什么,先假设 ,并假设训练集有三个数据,分别为,这样在平面坐标系中绘制出 ,并分析 的变化。

右图 随着 的变化而变化,可见当 时,,取得最小值,对应于左图青色直线,即函数 拟合程度最好的情况。
注:该部分由于涉及到了多变量成像,可能较难理解,要求只需要理解上节内容即可,该节如果不能较好理解可跳过。
给定数据集:

参数在 不恒为 时损失函数 关于 的3-D图像,图像中的高度为损失函数的值。

由于3-D图形不便于标注,所以将3-D图形转换为轮廓图(contour plot),下面用轮廓图(下图中的右图)来作直观理解,其中相同颜色的一个圈代表着同一高度(同一 值)。
时:

大概在 时:

上图中最中心的点(红点),近乎为图像中的最低点,也即损失函数的最小值,此时对应 对数据的拟合情况如左图所示,嗯,一看就拟合的很不错,预测应该比较精准啦。
在特征量很大的情况下,即便是借用计算机来生成图像,人工的方法也很难读出 的最小值,并且大多数情况无法进行可视化,故引入梯度下降(Gradient Descent)方法,让计算机自动找出最小化损失函数时对应的 值。
梯度下降背后的思想是:开始时,我们随机选择一个参数组合即起始点,计算损失函数,然后寻找下一个能使得损失函数下降最多的参数组合。不断迭代,直到找到一个局部最小值(local minimum),由于下降的情况只考虑当前参数组合周围的情况,所以无法确定当前的局部最小值是否就是全局最小值(global minimum),不同的初始参数组合,可能会产生不同的局部最小值。
下图根据不同的起始点,产生了两个不同的局部最小值。

视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围下一步往哪走下山比较快,然后就迈出那一步,一直重复,直到我们到达山下的某一处陆地。
梯度下降公式:
: 第 个特征参数
”:=“: 赋值操作符
: 学习速率(learning rate),
: 的偏导
公式中,学习速率决定了参数值变化的速率即”走多少距离“,而偏导这部分决定了下降的方向即”下一步往哪里“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”陆地“。

这里非常重要的一个点是,在计算时要批量更新 值,否则结果上会有所出入,原因不做细究。
该节探讨 的梯度下降更新过程,即 ,注意到这里为了数学定义上的精确性,用的是 ,如果不熟悉微积分学,就把它视作之前的 即可。

把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 在初始点处有正斜率,也就是说它有正导数,则根据梯度下降公式 , 即 会向左边移动。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。
当然如果 值开始就在极小值点处时,梯度下降算法将什么也不做()。
不熟悉斜率的话,就当斜率的值等于图中三角形的高度除以水平长度好啦,精确地求斜率的方法是求导。
另外,对于学习速率 ,需要选取一个合适的值才能使得梯度下降算法运行良好。
学习速率过小:

收敛的太慢,需要更多次的迭代。
学习速率过大:

可能越过最低点,甚至导致无法收敛。
学习速率只需选定即可,不需要在运行梯度下降算法的时候进行动态改变,随着斜率越来越接近于0,损失函数的变化幅度会越来越小,直到收敛到局部极小值。
如图,品红色点为初始点,损失函数随着迭代的进行,变化的幅度越来越小。

最后,梯度下降不止可以用于线性回归中的损失函数,还通用于最小化其他的损失函数。
线性回归模型
梯度下降算法
直接将线性回归模型公式带入梯度下降公式可得出公式

对于 时,给出偏导计算公式的推导过程如下:
所以当 时:
所以当 时:
上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用所有的数据集 更新。
由于线性回归函数呈现碗状,且只有一个全局的最优值,所以函数一定总会收敛到全局最小值(学习速率不可过大)。同时,函数 被称为凸二次函数,而线性回归函数求解最小值问题属于凸函数优化问题。

另外,使用循环求解,代码较为冗余,后面会讲到如何使用向量化(Vectorization)来简化代码并优化计算,使梯度下降运行的更快更好。
这部分,学过线性代数的可以复习一下,比较基础。笔记整理暂留。
Octave/Matlab 代码:
xxxxxxxxxx171% The ; denotes we are going back to a new row.2A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]34% Initialize a vector 5v = [1;2;3] 67% Get the dimension of the matrix A where m = rows and n = columns8[m,n] = size(A)910% You could also store it this way11dim_A = size(A)1213% Get the dimension of the vector v 14dim_v = size(v)1516% Now let's index into the 2nd row 3rd column of matrix A17A_23 = A(2,3)执行结果:
xxxxxxxxxx241A =231 2 344 5 657 8 9610 11 1278v =91011121231314m = 415n = 316dim_A =17184 31920dim_v =21223 12324A_23 = 6
Octave/Matlab 代码:
xxxxxxxxxx211% Initialize matrix A and B 2A = [1, 2, 4; 5, 3, 2]3B = [1, 3, 4; 1, 1, 1]45% Initialize constant s 6s = 278% See how element-wise addition works9add_AB = A + B 1011% See how element-wise subtraction works12sub_AB = A - B1314% See how scalar multiplication works15mult_As = A * s1617% Divide A by s18div_As = A / s1920% What happens if we have a Matrix + scalar?21add_As = A + s执行结果:
xxxxxxxxxx351A =231 2 445 3 256B =781 3 491 1 11011s = 212add_AB =13142 5 8156 4 31617sub_AB =18190 -1 0204 2 12122mult_As =23242 4 82510 6 42627div_As =28290.50000 1.00000 2.00000302.50000 1.50000 1.000003132add_As =33343 4 6357 5 4
Octave/Matlab 代码:
xxxxxxxxxx101% Initialize matrix A 2A = [1, 2, 3; 4, 5, 6;7, 8, 9] 34% Initialize vector v 5v = [1; 1; 1] 67% Multiply A * v8Av = A * v910执行结果:
xxxxxxxxxx181A =231 2 344 5 657 8 967v =8911011111213Av =141561615172418
Octave/Matlab 代码:
xxxxxxxxxx101% Initialize a 3 by 2 matrix 2A = [1, 2; 3, 4;5, 6]34% Initialize a 2 by 1 matrix 5B = [1; 2] 67% We expect a resulting matrix of (3 by 2)*(2 by 1) = (3 by 1) 8mult_AB = A*B910% Make sure you understand why we got that result执行结果:
xxxxxxxxxx171A =231 243 455 667B =8911021112mult_AB =131451511161717
Octave/Matlab 代码:
xxxxxxxxxx221% Initialize random matrices A and B 2A = [1,2;4,5]3B = [1,1;0,2]45% Initialize a 2 by 2 identity matrix6I = eye(2)78% The above notation is the same as I = [1,0;0,1]910% What happens when we multiply I*A ? 11IA = I*A 1213% How about A*I ? 14AI = A*I 1516% Compute A*B 17AB = A*B 1819% Is it equal to B*A? 20BA = B*A 2122% Note that IA = AI but AB != BA执行结果:
xxxxxxxxxx361A =231 244 556B =781 190 21011I =1213Diagonal Matrix14151 0160 11718IA =19201 2214 52223AI =24251 2264 52728AB =29301 5314 143233BA =34355 7368 10
Octave/Matlab 代码:
xxxxxxxxxx131% Initialize matrix A 2A = [1,2,0;0,5,6;7,0,9]34% Transpose A 5A_trans = A' 67% Take the inverse of A 8A_inv = inv(A)910% What is A^(-1)*A? 11A_invA = inv(A)*A1213执行结果:
xxxxxxxxxx241A =231 2 040 5 657 0 967A_trans =891 0 7102 5 0110 6 91213A_inv =14150.348837 -0.139535 0.093023160.325581 0.069767 -0.04651217-0.271318 0.108527 0.0387601819A_invA =20211.00000 -0.00000 0.00000220.00000 1.00000 -0.0000023-0.00000 0.00000 1.0000024
17 Large Scale Machine Learning17.1 Learning With Large Datasets17.2 Stochastic Gradient Descent17.3 Mini-Batch Gradient Descent17.4 Stochastic Gradient Descent Convergence17.5 Online Learning17.6 Map Reduce and Data Parallelism
18 Application Example: Photo OCR18.1 Problem Description and Pipeline18.2 Sliding Windows18.3 Getting Lots of Data and Artificial Data18.4 Ceiling Analysis_ What Part of the Pipeline to Work on NextSummary and Thank You
4 多变量线性回归(Linear Regression with Multiple Variables)4.1 多特征(Multiple Features)4.2 多变量梯度下降(Gradient Descent for Multiple Variables)4.3 梯度下降实践1-特征值缩放(Gradient Descent in Practice I - Feature Scaling)4.4 梯度下降实践2-学习速率(Gradient Descent in Practice II - Learning Rate)4.5 特征和多项式回归(Features and Polynomial Regression)4.6 正规方程(Normal Equation)4.7 不可逆性正规方程(Normal Equation Noninvertibility)5 Octave/Matlab Tutorial5.1 Basic Operations5.2 Moving Data Around5.3 Computing on Data5.4 Plotting Data5.5 Control Statements_ for, while, if statement5.6 Vectorization5.x 常用函数整理
对于一个要度量的对象,一般来说会有不同维度的多个特征。比如之前的房屋价格预测例子中,除了房屋的面积大小,可能还有房屋的年限、房屋的层数等等其他特征:

这里由于特征不再只有一个,引入一些新的记号
: 特征的总数
: 代表特征矩阵中第 行,也就是第 个训练实例。
: 代表特征矩阵中第 行的第 个特征,也就是第 个训练实例的第 个特征。
参照上图,则有
多变量假设函数 表示为:
对于 ,和单特征中一样,我们将其看作基础数值。例如,房价的基础价格。
参数向量的维度为 ,在特征向量中添加 后,其维度也变为 , 则运用线性代数,可对 简化。
: 矩阵的转置
: 为了计算方便我们会假设
多变量损失函数类似于单变量损失函数,
即 ,其中 。
前文提到梯度下降对于最小化损失函数的通用性,则多变量梯度下降公式即
对其求导:
可展开为:
当然,同单变量梯度下降一样,计算时需要同时更新所有参数。
同时更新参数的向量化(Vectorization)实现:
在应用梯度下降算法实践时,由于各特征值的范围不一,可能会导致损失函数收敛过慢。
以房价预测问题为例,这里选取房屋面积大小和房间数量这两个特征。
下图中,左图是以原始数据绘制的损失函数轮廓图,右图为采用特征缩放(都除以最大值)后图像。左图中呈现的图像较扁,相对于使用特征缩放方法的右图,梯度下降算法需要更多次的迭代。

为了优化梯度下降的收敛速度,采用特征缩放的技巧,使各特征值的范围尽量一致。
除了以上图人工选择并除以一个参数的方式,均值归一化(Mean normalization)方法更为便捷,可采用它来对所有特征值统一缩放:
$
对于特征的范围,并不一定需要使得 ,类似于 等也是可取的,而诸如 ,,就显得过大/过小了。
另外注意,一旦采用特征缩放,我们就需对所有的输入采用特征缩放,包括训练集、测试集、预测输入等。
通常,有两种方法来确定函数是否收敛
多次迭代收敛法
自动化测试收敛法(比较阈值)
对于梯度下降,一般采用多次迭代收敛法来得出最小化损失函数的参数值,自动化测试收敛法(如设定 为阈值)则几乎不会被使用。
我们可以通过绘制损失函数关于迭代次数的图像,可视化梯度下降的执行过程,借助直观的图形来发现损失函数趋向于多少时能趋于收敛,依据图像变化情况,确定诸如学习速率的取值,迭代次数的大小等问题。

对于学习速率 ,一般上图展现的为适中情况,下图中,左图可能表明 过大,损失函数无法收敛,右图可能表明 过小,损失函数收敛的太慢。当然, 足够小时,损失函数在每轮迭代后一定会减少。

通过不断改变 值,绘制并观察图像,并以此来确定合适的学习速率。 尝试时可取 如
在特征选取时,我们也可以自己归纳总结,定义一个新的特征,用来取代或拆分旧的一个或多个特征。比如,对于房屋面积特征来说,我们可以将其拆分为长度和宽度两个特征,反之,我们也可以合并长度和宽度这两个特征为面积这一个特征。
线性回归只能以直线来对数据进行拟合,有时候需要使用曲线来对数据进行拟合,即多项式回归(Polynomial Regression)。
比如一个二次方模型:
或者三次方模型:
或者平方根模型:

在使用多项式回归时,要记住非常有必要进行特征缩放,比如 的范围为 1-1000,那么 的范围则为 1- 1000000。
对于一些线性回归问题来说,正规方程法给出了一个更好的解决问题的方式。
正规方程法,即令 ,通过解析函数的方式直接计算得出参数向量的值 ,Octave 中为 theta = inv(X'*X)*X'*y。
: 矩阵 的逆,在 Octave 中,
inv函数计算矩阵的逆,类似的还有pinv函数。
下表列出了正规方程法与梯度下降算法的对比
的推导过程:
展开上式可得
注意到 与 都为标量,实际上是等价的,则
接下来对 求偏导,根据矩阵的求导法则:
所以有:
令, 则有
(本部分内容为选讲)
正规方程无法应用于不可逆的矩阵,发生这种问题的概率很小,通常由于
特征之间线性相关
比如同时包含英寸的尺寸和米为单位的尺寸两个特征,它们是线性相关的
即 。
特征数量大于训练集的数量。
如果发现 的结果不可逆,可尝试:
对于这类不可逆的矩阵,我们称之为奇异矩阵或退化矩阵。
这种情况下,如果还想使用正规方程法,在Octave中,可以选用 pinv 函数,pinv 区别于 inv,pinv 函数被称为伪逆函数,在矩阵不可逆的时候,使用这个函数仍可正确地计算出 的值。
复习时可直接倍速回顾视频,笔记整理暂留。
6 逻辑回归(Logistic Regression)6.1 分类(Classification)6.2 假设函数表示(Hypothesis Representation)6.3 Decision Boundary6.4 Cost Function6.5 Simplified Cost Function and Gradient Descent6.6 Advanced Optimization6.7 Multiclass Classification_ One-vs-all7 Regularization7.1 The Problem of Overfitting7.2 Cost Function7.3 Regularized Linear Regression7.4 Regularized Logistic Regression
在分类问题中,预测的结果是离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。
肿瘤诊断问题:

肿瘤诊断问题是一个二元分类问题(binary class problems),则定义 ,其中 0 表示负向类(negative class),代表恶性肿瘤("-"),1 为正向类(positive class),代表良性肿瘤("+")。如图,定义最右边的样本为偏差项。
在未加入偏差项时,线性回归算法给出了品红色的拟合直线,若规定
,预测为 ,即正向类;
,预测为 ,即负向类。
即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果 。
接下来加入偏差项,线性回归算法给出了靛青色的拟合直线,如果阈值仍然为 0.5,可以看到算法在某些情况下会给出完全错误的结果。
不仅如此,线性回归算法的值域为 ,则当线性回归函数给出诸如 等很大/很小(负数)的数值时,结果 ,这显得非常怪异。
区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即 。
为了使 ,引入逻辑回归模型,定义假设函数
对比线性回归函数 , 表示逻辑函数(logistic function),复合起来,则为线性回归函数。
一个常用的逻辑函数是 S 形函数,叫做 sigmoid 函数(如下图),其公式为 。

应用 sigmoid 函数,则逻辑回归模型:
的作用是,根据输入 ,参数 计算得出”输出 “的可能性(estimated probability),概率学中表示为:
以肿瘤诊断为例, 表示病人有 的概率得了恶性肿瘤。
8 Neural Networks: Representation8.1 Non-linear Hypotheses8.2 Neurons and the Brain8.3 Model Representation I8.4 Model Representation II8.5 Examples and Intuitions I8.6 Examples and Intuitions II8.7 Multiclass Classification
9 Neural Networks: Learning9.1 Cost Function9.2 Backpropagation Algorithm9.3 Backpropagation Intuition9.4 Implementation Note_ Unrolling Parameters9.5 Gradient Checking9.6 Random Initialization9.7 Putting It Together9.8 Autonomous Driving
10 Advice for Applying Machine Learning10.1 Deciding What to Try Next10.2 Evaluating a Hypothesis10.3 Model Selection and Train/Validation/Test Sets10.4 Diagnosing Bias vs. Variance10.5 Regularization and Bias/Variance10.6 Learning Curves10.7 Deciding What to Do Next Revisited11 Machine Learning System Design11.1 Prioritizing What to Work On11.2 Error Analysis11.3 Error Metrics for Skewed Classes11.4 Trading Off Precision and Recall11.5 Data For Machine Learning
12 Support Vector Machines12.1 Optimization Objective12.2 Large Margin Intuition12.3 Mathematics Behind Large Margin Classification12.4 Kernels I12.5 Kernels II12.6 Using An SVM
13 Unsupervised Learning13.1 Unsupervised Learning_ Introduction13.2 K-Means Algorithm13.3 Optimization Objective13.4 Random Initialization13.5 Choosing the Number of Clusters14 Dimensionality Reduction14.1 Motivation I_ Data Compression14.2 Motivation II_ Visualization14.3 Principal Component Analysis Problem Formulation14.4 Principal Component Analysis Algorithm14.5 Reconstruction from Compressed Representation14.6 Choosing the Number of Principal Components14.7 Advice for Applying PCA
15 Anomaly Detection15.1 Problem Motivation15.2 Gaussian Distribution15.3 Algorithm15.4 Developing and Evaluating an Anomaly Detection System15.5 Anomaly Detection vs. Supervised Learning15.6 Choosing What Features to Use15.7 Multivariate Gaussian Distribution15.8 Anomaly Detection using the Multivariate Gaussian Distribution16 Recommender Systems16.1 Problem Formulation16.2 Content Based Recommendations16.3 Collaborative Filtering16.4 Collaborative Filtering Algorithm16.5 Vectorization_ Low Rank Matrix Factorization16.6 Implementational Detail_ Mean Normalization