线性回归

线性回归

@(机器学习经典算法总结)


最大似然估计(Maximum likelihood Estimate)

在开始我们第一个算法之前呢,先介绍机器学习中一个非常重要的准则,这是一种参数估计的方法——最大似然估计MLE(Maximum Likelihood Estimate)
最大似然估计应用场景是模型已定,参数未定 比如掷硬币我们知道服从伯努利分布,班上同学整个成绩服从高斯分布,这些情况下模型已经确定了,但是伯努利的概率,高斯分布的期望和方差都还没确定,很适合用最大似然求解。
我们定义给定模型下,数据的似然为$$P(dataset\ |\ M)=P(x_1,x_2,...,x_n\ | \ M)=\prod_{k=1}^{n}P(x_k\ | \ M)$$
即是说,数据集dataset在模型M下发生的概率等同于数据集各数据在模型M下发生概率的连乘。
我们可以明确,概率值$P(x_k\ | \ M)介于0-1之间$,而一般$n值比较大$,连乘得到的值会非常小,小数点后很多位,造成下溢。
所以一直使用对数似然,即在连乘前加个$log$将连乘转换为求和。
$$logP(dataset\ |\ M)=log\prod_{k=1}^{n}P(x_k\ | \ M)=\sum_{k=1}^{n}{logP(x_k\ | \ M)}$$
由此我们已经得到了对数似然函数,最大似然意思就是说调整模型参数使当前数据集情况发生概率最大。那么此时应该使似然函数对模型参数求偏导为0,解出我们的模型参数。
简而言之,最大似然求模型参数的过程为:

  • 列出对数似然函数
  • 对数似然函数对模型参数分别求偏导并为0,求出各参数值

下面通过两个例子来求最大似然进而求出模型参数。
1、掷硬币(伯努利分布)

比如我们通过十次实验,出现了七次正面,三次反面。
则我们假设出现正面的概率为$\rho$,这也是伯努利分布的唯一参数。
则原始似然函数为:
$$P(dataset\ |\ \rho)=P(x_1,x_2,...,x_n\ | \ \rho)=\prod_{k=1}^{n}P(x_k\ | \ \rho)$$
转换为对数似然函数为:
$$
\begin{split}
logP(dataset\ |\ \rho)&=\sum_{k=1}^{n}{logP(x_k\ | \ \rho)} \
&=7log(\rho)+3log(1-\rho)
\end{split}
$$
似然函数求导=0解出来$\rho=0.7$

思考

我们发现解出来的概率值为0.7,很符合我们的观察数据,但是我们从过往的经验中得知,掷硬币正反面的概率各为0.5,我们这里确为0.7,那么问题在什么地方呢?我们的样本很少,实验只做了10。
如果在样本数很少的情况下,也想得到更符合实际情况的概率值?怎么进行参数估计呢?就引出了最大后验概率MAP贝叶斯估计两种参数估计方法了,它们在参数估计中加入了先验概率,比如加入掷硬币正反概率各为0.5的先验概率。这两种参数估计我在后面的博客也会总结。


2、班级成绩分布(高斯or正态分布)
高斯分布的概率密度函数为
$$
f(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)2}{2\sigma2})
$$
则对数似然函数
$$
log \ L(x\ |\ \mu,\sigma)=\sum_{i=1}{n}log(\frac{1}{\sqrt{2\pi}\sigma})-\sum_{i=1}{n}\frac{(x_i-\mu)2}{2\sigma2}
$$
分别对$\mu和\sigma$求导为0,可解出$$
\begin{split}
\mu&=\frac{\sum_{i=1}^{n}x_i}{n}\
\sigma&=\frac{1}{n}\sum_{i=1}{n}(x_i-\mu)2
\end{split}
$$


极大似然估计推导最小二乘法


一句话解释:模型是参数的线性函数。
最简单的线性回归,模型既是输入变量的线性函数,又是参数的线性函数。
$$f(x)=\omega_0+\omega_1x_1+\omega_2x_2+...+\omega_nx_n$$
假设$x_0=1,$则,$f(x)=\sum_{i=0}^{n}\omega_i
x_i$
那么我们现在的目的就是确定模型的参数$\omega_i$来尽可能完美的拟合训练数据集,如何去量化我们这个目标?基本所以的博客或者教科书都是说使用最小二乘法来确定参数$\omega_i$。
西瓜书《机器学习》上说通过均方误差最小化对模型求解称为最小二乘法
数学表达式就是:
$$\omega*=\mathop{\arg\min}\limits_{\omega*}\sum_{i=1}{m}(f(x_i)-y_i)2$$
并且说明,均方误差几何意义对应欧氏距离,试图找到一条直线,使得所有样本到直线上的欧氏距离(距离平方)之和最小。
则,均方误差也即是线性回归的损失函数:$$J(\omega)=\sum_{i=1}{m}(f(x_i)-y_i)2$$.

到此为止都是教科书式的内容,那么思考一下为什么我们会使用最小二乘即均方误差最小来求线性回归的参数呢?换言之为什么线性回归的损失函数是平方损失函数?

我在CMU的线性回归教材中发现,CMU Slides Linear Regression,线性回归的完整式子是这样:
$$y=\omega*x+\xi$$
带有一个噪声项,表示测量所致或者数据自带的噪声,并且假设噪声服从高斯分布(为什么假设成高斯分布呢?其实因为中心极限定理)更详细的可以看正态分布的前世今生,详细说明了最小二乘的由来以及和正态分布的关系,看完了真心崇拜高斯。
$$\xi_i-N(0,\sigma^2),则y_i-N(\omega x_i,\sigma^2)$$
即$$
f(y_i)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y_i-\omega x_i)2}{2\sigma2})
$$
则,似然函数$$\begin{split}
L(yi\ |\ \omega,\sigma)&=\prod_{i=1}^{n}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y_i-\omega x_i)2}{2\sigma2})\
&=({\sqrt{2\pi}\sigma})nexp(-\sum_{i=1}n(\frac{(y_i-\omega x_i)2}{2\sigma2}))
\end{split}
$$
到此我们可以看出,如果使得似然函数取极大,则括号内的求和运算需要取最小,即$$
min\sum_{i=1}^n{(y_i-\omega x_i)^2}
$$
这就等价于最小二乘法了。
至此,我们可以看出为什么使用最小二乘法求解线性回归,或者说线性回归为什么使用平方损失函数。
知乎陈清扬分析里面还说了,如果噪声服从的拉普拉斯分布的话,
$$
f(x\ |\ \mu,b)=\frac{1}{2b}exp(-\frac{|x-\mu|}{b})
$$
此时,指数不在是平方而是绝对值,几何意义上来说,不再对应欧氏距离而是曼哈顿距离,即选出一条线使得各点到直线距离之和最小。
所以结论是,采用何种方法拟合换言之损失函数选择什么,是取决于样本的噪声被假定为何种分布,而在自然情况下,该噪声服从高斯分布,所以线性回归使用最小二乘法。

比较有意思的是,看上面链接的《正态分布的前世今生》,发现,其实勒让德这个数学家早于高斯几年发表了的最小二乘法,但是没有给出数学证明,只是单纯的觉得这个方法不错,而且欧式距离求解容易,慢慢的形成惯例使用最小二乘法求解线性模型,这其实和我一开始学线性回归时候一样,倒不是说我也想到了最小二乘这种方法,哈哈,只是看到几何意义上的解释,也就没有关注数学层面上的证明了,直到最近想把这个搞明白,在国外大学上的slide发现了线性回归的公式后面有个小尾巴——噪声项,觉得比较神奇,最后才搞清楚。感觉搞算法还是追根溯源,才能豁然开朗。


多元线性回归和非线性基函数(multivariate regression and non-linear basis function)

当我们对上面的线性回归做一个扩充:
$$
f(x)=\omega_0+\omega_1x_1+\omega_2x_22+\omega_3*x_33+...
$$
请问上式还是不是线性回归了?
答案却是是线性回归。不要觉得$x的幂次项$就不是线性回归了,线性回归的定义我在上小节给出了,模型是参数的线性函数。模型是不是变量的线性函数其实没有关系。而且正因为没有这层约束,线性回归才有更大的价值。
这里引入了一个叫做非线性基函数的概念,有点类似SVM中的核函数。
将上式转换为:
$$
f(x_i)=\sum_{i=0}^{n}\omega_i*\phi(x_i)
$$
常用的基函数为:

  • 多项式基函数 $\phi_j(x)=x^j \ for\ j=0,...,n$
  • 高斯基函数 $\phi_j(x)=\frac{(x-\mu_j)}{2\sigma_j^2}$
  • sigmoid基函数 $\phi_j(x)=\frac{1}{1+exp(-x)}$

你可能感兴趣的:(线性回归)