机器学习算法(一)线性回归
本文主要梳理一下线性回归和逻辑斯蒂回归这两大算法。这两个算法的关系是什么呢?答案是并没有什么关系。
这样说其实也不对,逻辑斯蒂回归里有线性回归的重要组成部分。但是二者又一个本质区别,就是线性回归是一个“回归”算法,而逻辑斯蒂回归是一个“分类”算法。这就导致两个算法永远像牛郎织女一样隔着银河。本文主要介绍线性回归,下篇文章会在本文的基础上介绍逻辑斯蒂回归。本文思路主要来自邹博的机器学习课程。本文为作者自己学习整理的笔记,转载请注明出处。
线性回归
1、输入描述:
有训练数据集D,其中共有m条数据,n个特征,如下表所示。
数据id | 数学 | 语文 | 英语 | 物理 |
---|---|---|---|---|
学生1 | 98 | 92 | 96 | 83 |
学生2 | 95 | 79 | 86 | 23 |
... | 34 | 35 | 92 | 92 |
学生m | 67 | 68 | 94 | 72 |
上表是一个数据表的简单示例,其中包含m条数据,每条数据代表了一名学生;4个特征,分别是数学成绩、语文成绩、英语成绩、物理成绩。
以上是一个具体的表格,我们可以抽象表格如下:
数据id | 属性1 | 属性2 | ... | 属性n | 预测值 |
---|---|---|---|---|---|
1 | x11 | x12 | ... | x1n | y1 |
2 | x21 | x22 | ... | x2n | y2 |
... | ... | ... | ... | ... | ... |
m | xm1 | xm2 | ... | xmn | ym |
对于其中的某一条数据,可以认为如下:
属性1 | 属性2 | ... | 属性n | 预测值 |
---|---|---|---|---|
x1 | x2 | ... | xn | y |
2、问题描述
线性回归就是要解决以下问题:
要建立一如下公式1:
$$y=h_{ heta }left( x
ight) = heta _{0}+ heta {1}x{1}+ heta {2}x{2}+ldots + heta {n}x{n}$$
我们的目标就是在已知一些数据后,求出该方程的系数,即( heta _{0}),( heta _{1}),...,( heta _{n}).
3、算法推导
上面公式1可做如下变形(公式2)$$widehat{y}=h_{ heta }left( x ight) =sum ^{n}_{i=1} heta {i}x{i}= heta ^{T}x$$
对于数据标签的真实值,我们可以设为(y),而对于数据用公式1和所有(x)计算得到的值为估计值,设为(widehat{y}).
因此有公式3$$y=widehat {y}+varepsilon $$
其中,这个(varepsilon)可以认为是噪声。
根据中心极限定理,我们可以认为这个(varepsilon)服从正态分布,即$$varepsilon sim Nleft( 0,sigma ^{2}
ight) $$
因此,有公式4$$Pleft( varepsilon
ight) =dfrac {1}{sqrt {2pi sigma }}expleft( -dfrac {varepsilon ^{2}}{2sigma ^{2}}
ight) $$
因为$$varepsilon=y-widehat {y}$$
带入公式4,将(varepsilon)和(x)视为常数,则可将(Pleft( varepsilon
ight))看成是关于( heta)的函数。即$Pleft( varepsilon
ight) =gleft( heta
ight) (
根据最大似然定理,可得关于) heta(的似然函数为公式5)$Lleft( heta
ight) =prod ^{m}{i=1}dfrac {1}{sqrt {2pi }sigma }expleft( -dfrac {left( y^{i}- heta {T}x{i}
ight) ^{2}}{2sigma ^{2}}
ight) $$
其中,(i)表示第(i)条数据。该式中,仅( heta)为未知量,我们要做的事就是求出一组( heta),使(Lleft( heta
ight))最大。
对于公式5,可以对其取(log)求出其对数似然函数。对其对数似然函数可以进一步化简,最终,我们可得到如下的目标函数(公式6):求出一组( heta)使$$Jleft( heta
ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i}
ight) ^{2}$$最小。
此处略去求解过程,该式的解决方式是令(Jleft( heta
ight))对( heta)求导并令其等于0。最后可求得公式7:$$ heta =left( x^{T}x
ight) {-1}x{T}y$$
当以公式6为目标函数时,并没有考虑过拟合的问题。若想减少过拟合风险,可以对该目标函数加入正则项,常用的方法有以下两种:
1、L1正则(又称LASSO回归)
其目标函数是公式8:$$Jleft( heta
ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i}
ight) ^{2}+lambda sum ^{n}{j=1}left| heta _{j}
ight| $$
2、L2正则(又称岭回归)
其目标函数是公式9:$$Jleft( heta
ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i}
ight) ^{2}+lambda sum ^{n}{j=1} heta ^{2}_{j}$$
实际上,一般用公式7直接求出( heta)是很难的。一般我们会采用梯度下降的方法来求出一个局部最优的( heta)。
综上,线性回归的目标函数为:公式6、公式8或公式9。即$$loss=Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}$$或$$loss=Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}+lambda sum ^{n}{j=1}left| heta {j} ight| $$或$$loss=Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}+lambda sum ^{n}{j=1} heta ^{2}_{j}$$