机器学习基石
- 1 -- The Learning Problem
- 2 -- Learning to Answer Yes/No
- 3 -- Types of Learning
- 4 -- Feasibility of Learning
- 5 -- Training versus Testing
- 6 -- Theory of Generalization
- 7 -- The VC Dimension
- 8 -- Noise and Error
- 9 -- Linear Regression
- 10 -- Logistic Regression
- 11 -- Linear Models for Classification
- 12 -- Nonlinear Transformation
- 13 -- Hazard of Overfitting
- 14 -- Regularization
- 15 -- Validation
- 16 -- Three Learning Principles
机器学习技法
- 1 -- Linear Support Vector Machine
- 2 -- Dual Support Vector Machine
- 3 -- Kernel Support Vector Machine
- 4 -- Soft-Margin Support Vector Machine
- 5 -- Kernel Logistic Regression
- 6 -- Support Vector Regression
- 7 -- Blending and Bagging
- 8 -- Adaptive Boosting
- 9 -- Decision Tree
- 10 -- Random Forest
- 11 -- Gradient Boosted Decision Tree
- 12 -- Neural Network
- 13 -- Deep Learning
- 14 -- Radial Basis Function Network
- 15 -- Matrix Factorization
- 16(完结) -- Finale
10 -- Logistic Regression
上一节课,我们介绍了 Linear Regression 线性回归,以及用平方错误来寻找最佳的权重向量 w,获得最好的线性预测。本节课将介绍 Logistic Regression 逻辑回归问题。
一、Logistic Regression Problem
一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出 y 只有{-1,1}两种情况。
二元分类,一般情况下,理想的目标函数 f(x)>0.5,则判断为正类 1;若 f(x)<0.5,则判断为负类-1。
但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在 0,1 之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题(’soft’ binary classification)。这个值越接近 1,表示正类的可能性越大;越接近 0,表示负类的可能性越大。
对于软性二分类问题,理想的数据是分布在[0,1]之间的具体值,但是实际中的数据只可能是 0 或者 1,我们可以把实际中的数据看成是理想数据加上了噪声的影响。
如果目标函数是的话,我们如何找到一个好的 Hypothesis 跟这个目标函数很接近呢?
首先,根据我们之前的做法,对所有的特征值进行加权处理。计算的结果 s,我们称之为’risk score’:
但是特征加权和,如何将 s 值限定在[0,1]之间呢?一个方法是使用 sigmoid Function,记为。那么我们的目标就是找到一个 hypothesis:。
Sigmoid Function 函数记为,满足,,。这个函数是平滑的、单调的 S 型函数。则对于逻辑回归问题,hypothesis 就是这样的形式:
那我们的目标就是求出这个预测函数 h(x),使它接近目标函数 f(x)。
二、Logistic Regression Error
现在我们将 Logistic Regression 与之前讲的 Linear Classification、Linear Regression 做个比较:
这三个线性模型都会用到线性 scoring function 。linear classification 的误差使用的是 0/1 err;linear regression 的误差使用的是 squared err。那么 logistic regression 的误差该如何定义呢?
先介绍一下“似然性”的概念。目标函数,如果我们找到了 hypothesis 很接近 target function。也就是说,在所有的 Hypothesis 集合中找到一个 hypothesis 与 target function 最接近,能产生同样的数据集 D,包含 y 输出 label,则称这个 hypothesis 是最大似然 likelihood。
logistic function: 满足一个性质:。那么,似然性 h:
因为对所有的 h 来说,都是一样的,所以我们可以忽略它。那么我们可以得到 logistic h 正比于所有的乘积。我们的目标就是让乘积值最大化。
如果将 w 代入的话:
为了把连乘问题简化计算,我们可以引入 ln 操作,让连乘转化为连加:
接着,我们将 maximize 问题转化为 minimize 问题,添加一个负号就行,并引入平均数操作:
将 logistic function 的表达式带入,那么 minimize 问题就会转化为如下形式:
至此,我们得到了 logistic regression 的 err function,称之为 cross-entropy error 交叉熵误差:
三、Gradient of Logistic Regression Error
我们已经推导了的表达式,那接下来的问题就是如何找到合适的向量 w,让最小。
Logistic Regression 的是连续、可微、二次可微的凸曲线(开口向上),根据之前 Linear Regression 的思路,我们只要计算的梯度为零时的 w,即为最优解。
对计算梯度,学过微积分的都应该很容易计算出来:
最终得到的梯度表达式为:
为了计算最小值,我们就要找到让等于 0 的位置。
上式可以看成是的线性加权。要求与的线性加权和为 0,那么一种情况是线性可分,如果所有的权重为 0,那就能保证为 0。是 sigmoid function,根据其特性,只要让,即。表示对于所有的点,与都是同号的,这表示数据集 D 必须是全部线性可分的才能成立。
然而,保证所有的权重为 0 是不太现实的,总有不等于 0 的时候,那么另一种常见的情况是非线性可分,只能通过使加权和为零,来求解 w。这种情况没有 closed-form 解,与 Linear Regression 不同,只能用迭代方法求解。
之前所说的 Linear Regression 有 closed-form 解,可以说是“一步登天”的;但是 PLA 算法是一步一步修正迭代进行的,每次对错误点进行修正,不断更新 w 值。PLA 的迭代优化过程表示如下:
w 每次更新包含两个内容:一个是每次更新的方向,用表示,另一个是每次更新的步长。参数和终止条件决定了我们的迭代优化算法。
四、Gradient Descent
根据上一小节 PLA 的思想,迭代优化让每次 w 都有更新:
我们把曲线看做是一个山谷的话,要求最小,即可比作下山的过程。整个下山过程由两个因素影响:一个是下山的单位方向;另外一个是下山的步长。
利用微分思想和线性近似,假设每次下山我们只前进一小步,即很小,那么根据泰勒 Taylor 一阶展开,可以得到:
关于 Taylor 展开的介绍,可参考我另一篇博客:
多元函数的泰勒(Taylor) 展开式
迭代的目的是让越来越小,即让。是标量,因为如果两个向量方向相反的话,那么他们的内积最小(为负),也就是说如果方向与梯度反向的话,那么就能保证每次迭代都成立。则,我们令下降方向为:
是单位向量,每次都是沿着梯度的反方向走,这种方法称为梯度下降(gradient descent)算法。那么每次迭代公式就可以写成:
下面讨论一下的大小对迭代优化的影响:如果太小的话,那么下降的速度就会很慢;如果太大的话,那么之前利用 Taylor 展开的方法就不准了,造成下降很不稳定,甚至会上升。因此,应该选择合适的值,一种方法是在梯度较小的时候,选择小的,梯度较大的时候,选择大的,即正比于。这样保证了能够快速、稳定地得到最小值。
对学习速率做个更修正,梯度下降算法的迭代公式可以写成:
其中:
总结一下基于梯度下降的 Logistic Regression 算法步骤如下:
- 初始化
- 计算梯度
- 迭代跟新
- 满足或者达到迭代次数,迭代结束
五、总结
我们今天介绍了 Logistic Regression。首先,从逻辑回归的问题出发,将作为目标函数,将作为 hypothesis。接着,我们定义了 logistic regression 的 err function,称之为 cross-entropy error 交叉熵误差。然后,我们计算 logistic regression error 的梯度,最后,通过梯度下降算法,计算时对应的值。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论