8. 机器学习基石-How can Machine Learn?
来源:互联网 发布:网络电视客户端 编辑:程序博客网 时间:2024/06/04 18:57
How can Machine Learn? - Logistic Regression
- How can Machine Learn? - Logistic Regression
- 1. Introduction of Logistic Regression
- 2. Comparison of Linear Regression, Logistic Classification and Logistic Regression
- 3. Error Measurement of Logistic Regression - cross-entropy error
- 4. Gradient of Logistic Regression Error
- 5. Use Gradient Descent to Minimize the Error of Logistic Regression
- 6. Choose Step Length for Gradient Descent
- 7. Stochastic Gradient Descent - Another Approach of Gradient Descent
- Summary
- Reference
这一节讨论与 Linear Regression 非常类似的Logistic Regression
1. Introduction of Logistic Regression
使用二元分类分析心脏病复发问题,其输出空间只含有两项{+1,-1},分别表示复发和不发复发。在含有噪音的情况下,目标函数f可以使用目标分布P来表示,如公式(1)所示
但是实际情况,医生往往不会直接告诉病人说是否会心脏病复发,而是用概率,例如说有80%的可能性会复发,此种情况被称为软二元分类(soft binary classification),目标函数f的表达如公式(2)所示,其输出以概率的形式,在0~1之间。
但是病人的病历里面不可能记录以前有多少多少的几率复发/不复发,而是真实的记录病人是否复发。所以概率的情况来说,复发/不复发的情况就像是噪音了(因为偏离中间的概率值大),所以我们把实际的训练数据看成是含有噪音的理想训练数据。这种问题如何求解呢?我们可以通过输入各属性
这里的s的值不在 0~1之间,所以我们还需要将他进行归一化处理,那就可以使用Logistic Regression。函数用表示
观察函数的图形,该函数是一个平滑(处处可微分),单调(monotonic)的S形(sigmoid)函数,因此又被称为sigmoid函数。
Logistic Regression 是当前业界比较常用的机器学习方法,用于估计某种事物的可能性,应用场合如:广告预测,购物推荐,患病可能性判断等。 Logistic Regression既可以做回归,也可以做分类(二分类为主)。
2. Comparison of Linear Regression, Logistic Classification and Logistic Regression
将logisitic回归与之前学习的二元分类和线性回归做一对比,如图二所示。
其中分数s是在每个假设函数中都会出现的,前两个学习模型的错误衡量分别对应着0/1错误和平方错误,而logistic回归所使用的err函数应如何表示则是本节要介绍的内容。
3. Error Measurement of Logistic Regression - cross-entropy error
这一节的推导需要对最大似然法和条件概率求解有一定的了解。
TODO:最大似然法 和 条件概率
1.首先从 Logistic Function 可以推导出下面的公式(6),花括号上半部分不难理解,是将目标函数等式左右对调的结果,而下半部分的推导也很简单,因为+1与-1的总概率为1。
2.假设存在一个数据集
3.把公式(6)的公式带入公式(7)中,可以得到公式(8)。
4.f(x)是理想的函数,而我们实际训练得到的是hypothesis h(x),所以我们还得想办法用h(x)代替f(x),但是这样的前提是我们假设函数h(x)对数据集与f(x)产生的可能性很大,即likelihood(似然),即我们在之前在VC Bound的推论中,知道在数据量足够大的情况下g(x)是会接近于f(x)的,如公式(8)所示
5.那么最大似然我们表示为 likelihood(h),在代入simoid函数的特性
6.那么最大的likelihood(h)如公式(10)所示,在计算最大的likelihood(h)时,所有
7.连乘公式不容易求解最大问题,因此求其对数,此处以自然对数e为底,并代入sigmoid 方程,令
4. Gradient of Logistic Regression Error
上一节中,推导出logistic回归的 ,下一步的工作是寻找使得最小的权值向量w。
对公式(12)进行求导,可以得到公式(13),推导过程参考老师用的方法:用圈圈代替exp里面的数,用正方形代替ln里面的表达式,这样可以使得推导过程看起来更加明白
从公式(13)可以看出,该函数是一个
但是,求该问题的解不能使用类似求解线性回归时使用的闭式解的求解方式,此最小值又该如何计算?我们可以借鉴之前PLA的方法进行迭代求解,如公式(14)
从公式(14)可以看出,当
5. Use Gradient Descent to Minimize the Error of Logistic Regression
上面我们根据PLA的方法求得针对Logistic回归问题的误差方程,现在我们就需要找到最佳的参数
为了分工明确,设
但是公式(16)依然很难求得最小的
Tylor Expansion
接着我们继续分析公式(18),其中
两个向量最小的情况为其方向相反,即内积为负,得到公式(20),这种情况下
所以把公式(20)带入公式(15),可以得到公式(21)
从公式(21)可以看出,每次更新权值,w都是减少一点(具体多少要看我们谁的哪个的步长,已经误差大小),按照此种方式更新可以找到使得最小的w。此种方式称作梯度下降(gradient descent)。
6. Choose Step Length for Gradient Descent
由上面的公式(21)可以看出,w受 步长大小
因为
结合公式(21)(22),我们调整的公式(21)为(23)
此时的
1. 设置权值w为
2. 不断迭代,并更新权值向量w,
Gradient Descent 劣势分析:
1. 不稳定:如果选择的步长太大太小,都会对算法有影响
2. 局部最优:如果函数不是凸函数的话,可能存在多个局部最优点,那样的话,Gradient Descent只能找到最近的局部最优。
3. 计算复杂度大,为O(N),因为导数需要对所有的点进行一次遍历
7. Stochastic Gradient Descent - Another Approach of Gradient Descent
上面讨论了 Gradient Descent,以及计算复杂度大的问题,这一节我们讨论另一种方法,可以将计算复杂度降成O(1)级别。这种方法就是Stochastic Gradient Descent(随机梯度),用符号
Logistic Regression 的SGD的迭代如公式(23)所示。
对比之前的PLA算法的公式(如公式(24)),容易发现两个公式很类似,因此logistic Regession 的SGD算法又叫”软”PLA,因为权值并没有那么绝对不是1就是0,而是一个在0~1之间的值。如果
SGD算法关键是找出两个最佳的参数: 迭代次数
1. 对于迭代次数
2. 学习步长
SGD算法的优缺点:
1. 优点:计算简单快速,适用于大数据或者流式数据;
2. 缺点:不稳定,需要一定的调试时间。
Summary
- 首先引入了 Logistic Regression
- 然后对比了 Logistic Regression 和 Linear Regression, Linear Classification。
- 接着分析Logistic Regression 的误差方程,梯度方程,并用Gradient Descent 来最小化误差,并分析如何选择步长。
Reference
[1] 机器学习基石(台湾大学-林轩田)\10\10 - 1 - Logistic Regression Problem (14-33)
[2] 机器学习基石(台湾大学-林轩田)\10\10 - 2 - Logistic Regression Error (15-58)
[3] 机器学习基石(台湾大学-林轩田)\10\10 - 4 - Gradient Descent (19-18)
- 8. 机器学习基石-How can Machine Learn?
- 7. 机器学习基石-How can Machine Learn?
- 9. 机器学习基石-How can Machine Learn?
- 10. 机器学习基石-How can Machine Learn?
- 12. 机器学习基石-How can Machine Learn Better?
- 13. 机器学习基石-How can Machine Learn Better?
- 14. 机器学习基石-How can Machine Learn Better?
- 1. 机器学习基石-When can Machine Learn?
- 2. 机器学习基石-When can Machine Learn?
- 3. 机器学习基石-When can Machine Learn?
- 4. 机器学习基石-When can Machine Learn?
- 5. 机器学习基石-Why can Machine Learn?
- 6. 机器学习基石-Why can Machine Learn?
- 11.How can Machine Learn Better?
- 机器学习基石-Dual Support Vector Machine
- 机器学习基石HOW部分(1)
- 机器学习基石HOW部分(2)
- 机器学习基石HOW部分(3)
- git忽略已经被提交的文件
- 初学Java,用notepad++时遇到的编码问题
- Spring 4.2集成 Quartz Scheduler 2.2.2 任务调度简单实现示例
- 使用AppScan进行扫描
- c++ 宏的奇淫技巧
- 8. 机器学习基石-How can Machine Learn?
- 自己动手写一个动态的三(多)级联动
- 导出设置
- 【unity插件】Tiled2Unity-非常方便的将Tiled导入到unity3d
- android 蓝牙调用
- 七牛云上传图片
- Windows Server2008服务器ping不通问题解决
- 嵌入式系统启动后,动态扩容根分区空间到扇区大小
- jQuery 簡介