求解线性模型的基本思想
线性模型的目标是使得 y h a t y_{hat} yhat(预测值) 尽量逼近 y y y(真值),通过 y y y 和 y h a t y_{hat} yhat 的距离来衡量预测的准确性,即,使用距离来构造损失函数。而在线性模型中这个损失函数其实也是我们的目标函数,因为我们的目标就是让预测值和真值之间的距离(差距)尽可能的小。损失函数(目标函数)接近于0是最好的情况,说明预测值和真值几乎相同了。
那么怎样计算 y y y 和 y h a t y_{hat} yhat 的距离呢?
最简单的想法就是直接用 d = y h a t − y d=y_{hat} - y d=yhat−y,但是这样数值有正有负,而距离是恒正的,最简单的去除符号的方式是加绝对值(曼哈顿距离) d = ∣ y h a t − y ∣ d=|y_{hat} - y| d=∣yhat−y∣ ,但在这里,绝对值比较不方便计算。
常采用均方误差MSE
来判定距离,也就是 d = ( y h a t − y ) 2 d={(y_{hat} - y)}^2 d=(yhat−y)2 ,使用MSE构造我们的目标函数(损失函数)为 D = E ( y h a t − y ) 2 D=E{(y_{hat} - y)}^2 D=E(yhat−y)2,E表示期望,一般是在很多数据的情况下,对所有数据的预测值累加再求平均。再确定了目标函数之后,就可以使用最小二乘法
等各种方法进行求解,求出能够使得D最优的w*
和 b*
。
还有没有别的距离判别方式?
考虑到MSE的平方会扩大/缩小距离(大于1的放大,小于1的缩小),所以想到了开平方,就变成了欧氏距离
,但是欧式距离求导会稍复杂,涉及到复合函数。此外,还有曼哈顿距离
,但是其绝对值符号,求导时很麻烦。此外,还有马氏距离
,其中s是协方差矩阵,此外在NLP领域还有汉明距离,编辑距离等判别方式。
最常用的判别方式是均方误差MSE,如果数据稀疏或者维度较高,一般可用曼哈顿,如果数据是多维的情况,可用马氏,比如:
如果在圆形平面求两个点的距离,可以按照欧式、MSE、等等。但如果在一个椭圆曲面(流形曲面),尽管直观看来是xy更大,xz更小,但如果对于每个维度进行归一化和加权之后,最终xy可能比xz更小。这种情况下,不能直接用直观距离的数值来衡量,而是需要我们在数据预处理时加权,把椭圆变成圆形,这种流形模型也被称为度量学习,适用马氏距离,如果马氏距离公式的s变成单位矩阵,那么就退化成为欧氏距离了。
总结:
我们使用MSE来判定距离, D = E ( y h a t − y ) 2 D=E{(y_{hat} - y)}^2 D=E(yhat−y)2
使用距离构建对应的目标函数, min ∑ i = 1 N ( y i − f ( x i ) ) 2 / N \min \sum_{i=1}^{N}\left(y_{i}-f\left(x_{i}\right)\right)^{2} /N min∑i=1N(yi−f(xi))2/N 【因为目标是min,所以可直接忽略末尾的 /N (期望)】
通过调整参数来使目标函数最小(模型预测值更贴近真实值) 【调整w,b可改变f(x)】
综上,我们的任务就是:求解w和b,使目标函数(距离)最小。
( w ∗ , b ∗ ) = arg min ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg min ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 \begin{aligned}\left(\boldsymbol{w}^{*}, \boldsymbol{b}^{*}\right) &=\underset{(\boldsymbol{w}, \boldsymbol{b})}{\arg \min } \sum_{i=1}^{m}\left(\boldsymbol{f}\left(\boldsymbol{x}_{i}\right)-\boldsymbol{y}_{i}\right)^{2} \\ &=\underset{(\boldsymbol{w}, \boldsymbol{b})}{\arg \min } \sum_{i=1}^{m}\left(\boldsymbol{y}_{i}-\boldsymbol{w} \boldsymbol{x}_{i}-\boldsymbol{b}\right)^{2} \end{aligned} (w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m