最小二乘法的简单应用

下面的例子用最小二乘法求解一个线性模型。
假设有10条船,分别测得它们的长度和宽度。以长度LL(单位:米)为横轴,宽度WW(单位:米)为纵轴,画出散点图如下:

示例图

由于散点近似落在一条直线上,尝试使用线性模型来描述长度和宽度之间的关系。
假设W=kL+bW = k L + b,其中kkbb是线性模型的参数,是求解的具体对象。
定义损失函数J(k,b)=1mi=1m(kLi+bWi)2J(k, b) = \frac{1}{m} \sum_{i=1}^{m} (k L_i + b - W_i)^2
用来衡量模型与实际的差距。其中(Li,Wi)(L_i, W_i)是第ii个样本(观察对象)的长宽。
根据最小二乘法的定义,kkbb的最优值通过优化目标函数得到:mink,bJ(k,b)\min_{k, b} J(k, b)
由于目标函数是凸函数,局部最小值等同于全局最小值。对于连续可导函数,一个点是极值点的充要条件是在该点的一阶导数值为0。因此,令Jk=2mi=1m(kLi+bWi)Li=0\frac{\partial J}{\partial k} = \frac{2}{m} \sum_{i=1}^{m} (kL_i + b - W_i)L_i = 0 Jb=2mi=1m(kLi+bWi)=0\frac{\partial J}{\partial b} = \frac{2}{m} \sum_{i=1}^{m} (kL_i + b - W_i) = 0
可以解得b=1mi=1m(WikLi)b^{*} = \frac{1}{m} \sum_{i=1}^{m} (W_i - kL_i) k=i=1mLi(Wib)i=1mLi2k^{*} = \frac{\sum_{i=1}^{m} L_i (W_i - b) }{\sum_{i=1}^{m} L_i^2}
因此描述船的长度和宽度的关系的线性模型可以表示为W=kL+bW = k^{*} L + b^{*}

得到的直线如下图:
shilitu