您的位置:首页 > 其它

NTU-Coursera机器学习:linear回归与logistic回归

2015-03-14 13:08 323 查看

线性回归问题

例如,信用卡额度预测问题:特征是用户的信息(年龄,性别,年薪,当前债务,...),我们要预测可以给该客户多大的信用额度。 这样的问题就是回归问题。
目标值y 是实数空间R。线性回归假设:


线性回归假设的思想是:寻找这样的直线/平面/超平面,使得输入数据的残差最小。通常采用的error measure 是squared error:



线性回归算法

squared error 的矩阵表示:



Ein 是连续可微的凸函数,可以通过偏微分求极值的方法来求参数向量w。



求得Ein(w) 的偏微分:



另上式等于0,即可以得到向量w。



上面分两种情况来求解w。当XTX(X 的转置乘以X) 可逆时,可以通过矩阵运算直接求得w;不可逆时,直观来看情况就没这么简单。实际上,无论哪种情况,我们都可以很容易得到结果。因为许多现成的机器学习/数学库帮我们处理好了这个问题,只要我们直接调用相应的计算函数即可。有些库中把这种广义求逆矩阵运算成为 pseudo-inverse。到此,我们可以总结线性回归算法的步骤(非常简单清晰):



线性回归是一个“学习算法” ?

乍一看,线性回归“不算是”机器学习算法,更像是分析型方法,而且我们有确定的公式来求解w。实际上,线性回归属于机器学习算法:

(1) 对Ein 进行优化。
(2)得到Eout 约等于 Ein。
(3)本质上还是迭代提高的:pseudo-inverse 内部实际是迭代进行的。

经过简单的分析证明可以得到Ein,Eout 的平均范围,画出学习曲线:



线性回归与线性分类器

比较一下线性分类与线性回归:



之所以能够通过线程回归的方法来进行二值分类,是由于回归的squared error 是分类的0/1 error 的上界,我们通过优化squared error,一定程度上也能得到不错的分类结果;或者,更好的选择是,将回归方法得到的w 作为二值分类模型的初始w 值。



线性回归/线性分类器 基本搞定。:-)关于线性回归,重点是求解w 的解析方案(通过pseudo-inverse 求解w)。关注另一个很重要的方法,逻辑斯蒂回归(logistic regression)。林轩田对逻辑斯蒂回归的解释思路和Andrew Ng 还是有明显区别的,都十分有助于我们的理解;但要深究其数学意义,还要自己多钻研。

逻辑斯蒂回归问题

有一组病人的数据,我们需要预测他们在一段时间后患上心脏病的“可能性”,就是我们要考虑的问题。通过二值分类,我们仅仅能够预测病人是否会患上心脏病,不同于此的是,现在我们还关心患病的可能性,即 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。于是,我们有:



逻辑斯蒂回归的优化方法

对于上面的公式,如何定义Ein(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" 的定义。

LR Error 的梯度



Ein(w) 的微分结果是:



想要上式等于零,或者sigmoid 项恒为0,这时要求数据时线性可分的(不能有噪音)。否则,需要迭代优化。直观的优化方法:



梯度下降法

梯度下降法是最经典、最常见的优化方法之一。要寻找目标函数曲线的波谷,采用贪心法:想象一个小人站在半山腰,他朝哪个方向跨一步,可以使他距离谷底更近(位置更低),就朝这个方向前进。这个方向可以通过微分得到。选择足够小的一段曲线,可以将这段看做直线段,那么有:





梯度下降的精髓:



之所以说最优的v 是与梯度相反的方向,想象一下:如果一条直线的斜率k>0,说明向右是上升的方向,应该向左走;反之,斜率k<0,向右走。解决的方向问题,步幅也很重要。步子太小的话,速度太慢;过大的话,容易发生抖动,可能到不了谷底。显然,距离谷底较远(位置较高)时,步幅大些比较好;接近谷底时,步幅小些比较好(以免跨过界)。距离谷底的远近可以通过梯度(斜率)的数值大小间接反映,接近谷底时,坡度会减小。因此,我们希望步幅与梯度数值大小正相关。
原式子可以改写为:



最后,完整的Logistic Regression Algorithm:



关于Machine Learning更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐