台湾国立大学机器学习基石.听课笔记(第十讲):Logistic Regression
2015-08-17 16:44
330 查看
台湾国立大学机器学习基石.听课笔记(第十讲)
:Logistic Regression
上一讲是关于线性回归,重点是求解w 的解析方案(通过pseudo-inverse 求解w)。
这一讲关注另一个很重要的方法,逻辑斯蒂回归(logistic regression)。
通过二值分类,我们仅仅能够预测病人是否会患上心脏病,不同于此的是,现在我们还关心患病的可能性,即 f(x) = P(+1|x),取值范围是区间 [0,1]。然而,我们能够获取的训练数据却与二值分类完全一样,x
是病人的基本属性,y 是+1(患心脏病)或 -1(没有患心脏病)。输入数据并没有告诉我们有关“概率” 的信息。在二值分类中,我们通过w*x 得到一个"score" 后,通过取符号运算sign 来预测y 是+1 或 -1。而对于当前问题,我们如同能够将这个score 映射到[0,1] 区间,问题似乎就迎刃而解了。
逻辑斯蒂回归选择的映射函数是S型的sigmoid 函数。sigmoid 函数: f(s) = 1 / (1 + exp(-s)), s 取值范围是整个实数域, f(x) 单调递增,0 <= f(x) <=1。
于是,我们有:
logistic
regression的目标是 f(x) = P(+1|x):
当y = +1 时, P(y|x) = f(x);
当y = -1 时, P(y|x) = 1 - f(x).
在机器学习假设中,数据集D 是由f 产生的,我们可以按照这个思路,考虑f 和假设 h 生成训练数据D的概率:
训练数据的客观存在的,显然越有可能生成该数据集的假设越大越好。所以此处用的是相乘。
通过一系列的简单转换和化简,我们得到最终的优化目标函数:
注意上图中的"cross-entropy
error" 是互信息熵的定义。此处我认为是借用信息论里面的知识。
3、Logistic
我们此处的目标是min
E_in(w),找到E_in的最小值,所以我们就想计算其梯度,使其梯度为0。
这梯度是以sita为权重,此函数为非线性的函数,不能直接计算,因此我们需要用其他方法进行计算,我们这下一节选择的是梯度下降法。
要寻找目标函数曲线的波谷,采用贪心法:想象一个小人站在半山腰,他朝哪个方向跨一步,可以使他距离谷底更近(位置更低),就朝这个方向前进。这个方向可以通过微分得到。选择足够小的一段曲线,可以将这段看做直线段,为了方便计算,将上式近似可得,那么有:
接下来使用巧妙的化简:
说最优的v是与梯度相反的方向的原因,想象一下:如果一条直线的斜率k>0,说明向右是上升的方向,应该向左走;反之,斜率k<0,向右走。
解决的方向问题,步幅也很重要。步子太小的话,速度太慢;过大的话,容易发生抖动,可能到不了谷底。
显然,距离谷底较远(位置较高)时,步幅大些比较好;接近谷底时,步幅小些比较好(以免跨过界)。距离谷底的远近可以通过梯度(斜率)的数值大小间接反映,接近谷底时,坡度会减小。
因此,我们希望步幅与梯度数值大小正相关。原式子可以改写为:
最后,完整的Logistic Regression Algorithm:
:Logistic Regression
上一讲是关于线性回归,重点是求解w 的解析方案(通过pseudo-inverse 求解w)。
这一讲关注另一个很重要的方法,逻辑斯蒂回归(logistic regression)。
1、逻辑斯蒂回归问题
有一组病人的数据,我们需要预测他们在一段时间后患上心脏病的“可能性”,就是我们要考虑的问题。通过二值分类,我们仅仅能够预测病人是否会患上心脏病,不同于此的是,现在我们还关心患病的可能性,即 f(x) = P(+1|x),取值范围是区间 [0,1]。然而,我们能够获取的训练数据却与二值分类完全一样,x
是病人的基本属性,y 是+1(患心脏病)或 -1(没有患心脏病)。输入数据并没有告诉我们有关“概率” 的信息。在二值分类中,我们通过w*x 得到一个"score" 后,通过取符号运算sign 来预测y 是+1 或 -1。而对于当前问题,我们如同能够将这个score 映射到[0,1] 区间,问题似乎就迎刃而解了。
逻辑斯蒂回归选择的映射函数是S型的sigmoid 函数。sigmoid 函数: f(s) = 1 / (1 + exp(-s)), s 取值范围是整个实数域, f(x) 单调递增,0 <= f(x) <=1。
于是,我们有:
2、逻辑斯蒂回归的优化方法
对于上面的公式,如何定义E_in(w)呢?logistic
regression的目标是 f(x) = P(+1|x):
当y = +1 时, P(y|x) = f(x);
当y = -1 时, P(y|x) = 1 - f(x).
在机器学习假设中,数据集D 是由f 产生的,我们可以按照这个思路,考虑f 和假设 h 生成训练数据D的概率:
训练数据的客观存在的,显然越有可能生成该数据集的假设越大越好。所以此处用的是相乘。
通过一系列的简单转换和化简,我们得到最终的优化目标函数:
注意上图中的"cross-entropy
error" 是互信息熵的定义。此处我认为是借用信息论里面的知识。
3、Logistic
Regression Error 的梯度
我们此处的目标是min
E_in(w),找到E_in的最小值,所以我们就想计算其梯度,使其梯度为0。
这梯度是以sita为权重,此函数为非线性的函数,不能直接计算,因此我们需要用其他方法进行计算,我们这下一节选择的是梯度下降法。
4、梯度下降法
梯度下降法是最经典、最常见的优化方法之一。要寻找目标函数曲线的波谷,采用贪心法:想象一个小人站在半山腰,他朝哪个方向跨一步,可以使他距离谷底更近(位置更低),就朝这个方向前进。这个方向可以通过微分得到。选择足够小的一段曲线,可以将这段看做直线段,为了方便计算,将上式近似可得,那么有:
接下来使用巧妙的化简:
说最优的v是与梯度相反的方向的原因,想象一下:如果一条直线的斜率k>0,说明向右是上升的方向,应该向左走;反之,斜率k<0,向右走。
解决的方向问题,步幅也很重要。步子太小的话,速度太慢;过大的话,容易发生抖动,可能到不了谷底。
显然,距离谷底较远(位置较高)时,步幅大些比较好;接近谷底时,步幅小些比较好(以免跨过界)。距离谷底的远近可以通过梯度(斜率)的数值大小间接反映,接近谷底时,坡度会减小。
因此,我们希望步幅与梯度数值大小正相关。原式子可以改写为:
最后,完整的Logistic Regression Algorithm:
相关文章推荐
- 06变量与内存
- Lightoj 1094 - Farthest Nodes in a Tree 【树的直径 裸题】
- android studio 编码
- Lua语言基础
- 用java页面下载图片
- 转:C# DataGridView控件清空数据出错解决方法
- [转]SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定
- Win10应用商店中出现更新应用错误0x803F8001怎么办?
- bandGridView合并表头
- Grunt的配置及使用(压缩合并js/css)
- js实现浏览本地文件并显示扩展名的方法
- 根据概率密度函数生成随机数的代码
- SAP实施方法论之探讨-现状调研与需求分析
- orocos Logger 类的设计
- eclipse屏蔽恶心的系统alt键
- 解决Bitmap导致的内存溢出问题
- DBI-1.634之selectrow_array与fetchrow_array的区别
- 英文换行
- [题解+总结]20150815
- [底层] 大端小端