线性回归属于回归问题。所谓回归(regression),用已知样本对未知公式参数的估计。线性回归(linear regression):回归的一种,回归函数是一次函数
linear regression
线性回归
回归问题不同于分类,回归的目的使预测目标的数值。以电影为例,内地上映几部爱情电影,小红让小明帮忙从几部电影中买电影票,小明希望买到小红满意的电影,如果已知小红对爱情电影的评分公式可能为: 分数 = 3演员颜值 + 5甜蜜程度 + 2*剧情,那么小明就可以轻松判断出小红喜欢看的是哪一部,该评分公式就是所谓的回归方程,而所乘的系数为回归系数。但现实情况往往是小明并不知道小红的评分公式,但小明可以根据以往和小红一起看电影的情况,去估计出一组回归系数,用于接下来的预测。
cost function(如何评判回归系数的好坏?)
线性回归方程可表示为:
$$\hat y=\omega^Tx+b$$
小明根据以往于小红看电影的情况估计出了小红的评分公式,此公式准确意味着用此公式给电影打分,与小红给电影打分基本一致,因此可用 cost function (损失函数)表示模型的好坏,$cost = \sum_{i=1}^{m}(y_i-\hat y_i)^2$,从函数可看出,公式越准确,cost function 越小,cost function 的几何意义为预测值到真实值之间的欧式距离。
minimize cost function
如此一来,小明的任务变成了找到一个使 cost function 最小的回归方程,即最小化 cost function,可以通过:
- least-square method(最小二乘法)
- Gradient Descent(梯度下降)
least-square method
可以将 cost function 对 $w$ 和 $b$ 求导,并令倒数等于0,得到:
$$\frac{\partial cost}{\partial w}=2(w\sum_{i=1}^{m}x_i^2-\sum_{i=1}^{m}(y_i-b)x_i)=0$$
$$\frac{\partial cost}{\partial b}=2(mb-\sum_{i=1}^{m}(y_i-wx_i))=0$$
联立求解
$$w=\frac{\sum_{i=1}^{m}y_i(x_i-\overline{x})}{\sum_{i=1}^{m}x_{i}^{2}-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2}$$
$$b=\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i)$$
对于多元线性函数则有:
$$\hat{w}=arg min(\boldsymbol{y}-\mathbf{X})^T(\boldsymbol{y}-\mathbf{X}w)$$
对 $w$ 求导得(推导过程见此)
$$\frac{\partial cost}{\partial w} =2\mathbf{X}^T(\mathbf{X}w-y)$$
令上式等于0,当 $\mathbf{X}^T\mathbf{X}$ 为满秩矩阵时,得
$$\hat{w}=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^Ty$$
当 $\mathbf{X}^T\mathbf{X}$ 非满秩矩阵时(出现这个情况的原因可能是1.各个特征不独立、有关联;2.特征数量大于所给训练集样本个数),可以求得多个 $\hat{w}$ 使误差最小,可以引入正则化的方法。
Gradient Descent
此部分可参考刘建平Pinard
梯度下降法基本步骤:
- 确定当前位置的损失函数的梯度,对于 $\theta _i$ ,其梯度表达式如下:$\frac{\partial}{\partial\theta_i}J(\theta_0, \theta_1…, \theta_n)$
- 用步长乘以损失函数的梯度,得到当前位置下降的距离,即$\alpha\frac{\partial}{\partial\theta_i}J(\theta_0, \theta_1…, \theta_n)$对应于前面登山例子中的某一步。
- 确定是否所有的$\theta _i$,梯度下降的距离都小于$\varepsilon$,如果小于$\varepsilon$则算法终止,当前所有的$\theta_i(i=0,1,…n)$即为最终结果。否则进入步骤4.
- 更新所有的$\theta$,对于$\theta_i$,其更新表达式如下。更新完毕后继续转入步骤1.
$\theta_i = \theta_i - \alpha\frac{\partial}{\partial\theta_i}J(\theta_0, \theta_1…, \theta_n)$
梯度下降法的直观解释
在设计域中任意选取一初始点,从该点开始寻找下山方向,每走一步,便计算一下该点导数,并继续沿负梯度方向(梯度下降最快方向)走,直到达到极值点为止。
参考资料
http://wiki.jikexueyuan.com/project/deep-learning/getting-start.html
https://zhuanlan.zhihu.com/p/22474562
https://blog.csdn.net/xiazdong/article/details/7950084