逻辑回归 (Logistic Regression)
目前最流行,使用最广泛的一种学习算法。
分类问题,要预测的变量 y 是离散的值。
逻辑回归算法的性质是:它的输出值永远在 0 到 1 之间。
逻辑回归模型的假设是:
其中:
X 代表特征向量
g 代表logistic function,是一个常用的Sigmoid function。
Sigmoid function:一个良好的阈值函数
导数:f'(x)=f(x)*[1-f(x)]
公式为:
图像为:
合起来,得到Logistic回归模型的假设:
对于给定的输入变量,根据选择的参数计算输出变量=1 的可能性(estimated probablity):
即
代价函数:
整理得:
带入到代价函数(凸函数):
得到代价函数后, 便可以用梯度下降算法来求得能使代价函数最小的参数了。
算法为:
注:
1、虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样, 但是这里的 hθ(x)=g(θTX)与线性回归不同,
所以实际上是不一样的。
2、在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。
逻辑回归,这是一种非常强大,甚至可能世界上使用最广泛的一种分类算法。
————————————————————————————————————————————————————————
高级优化(Advanced Optimization)
梯度下降并不是我们可以使用的唯一算法,还有其他一些算法,更高级、更复杂。
共轭梯度法 BFGS (变尺度法) 和 L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法。
它们需要有一种方法来计算 J(θ),以及需要一种方法计算导数项, 然后使用比梯度下降更复杂的算法来最小化代价函数。
这些算法的具体细节超出了本门课程的范畴。
实际上你最后通常会花费很多天,或几周时间研究这些算法,你可以专门学一门课来提高数值计算能力。
这些算法有许多优点: 一个是使用这其中任何一个算法, 你通常不需要手动选择学习率 α。
实际上, 我过去使用这些算法已经很长一段时间了, 也许超过十年了, 使用得相当频繁。
而直到几年前我才真正搞清楚共轭梯度法 BFGS 和 L-BFGS 的细节。
我们实际上完全有可能成功使用这些算法, 并应用于许多不同的学习问题, 而不需要真正理解这些算法的内环间在做什么。
如果说这些算法有缺点的话, 那么我想说主要缺点是它们比梯度下降法复杂多了。
特别是你最好不要使用 L-BGFS、 BFGS 这些算法, 除非你是数值计算方面的专家。
实际上,我不会建议你们编写自己的代码来计算数据的平方根,或者计算逆矩阵。
因为对于这些算法,我还是会建议你直接使用一个软件库。
比如说,要求一个平方根, 我们所能做的就是调用一些别人已经写好用来计算数字平方根的函数。
幸运的是现在我们有 Octave 和与它密切相关的 MATLAB 语言可以使用。
所以当我有一个很大的机器学习问题时,我会选择这些高级算法,而不是梯度下降。
有了这些概念, 你就应该能将逻辑回归和线性回归应用于更大的问题中, 这就是高级优化的概念。
————————————————————————————————————————————————————————
(Multiclass Classification_ One-vs-all)
有几类,就训练几个分类器。
预测时,将所有的分类机都运行一遍,选择最高可能性。