本栏目主要介绍机器学习中的算法模型,具体包含算法推导、应用场景、代码实现以及模型优缺点这几个模块。本文先介绍机器学习中最简单的一个算法模型——线性回归。
李航老师的《统计学习方法》中提到,统计学习方法都是由模型、策略和算法构成的,因此本文在算法推导也主要从这三部分进行展开讨论。
模型通俗来说就是最后要得到一个什么样的方程。线性回归的模型如下: f ( x ) = w 0 T x + b = w T x f(x) = w_{0}^Tx + b=w^Tx f(x)=w0Tx+b=wTx 其中在训练阶段 f ( x ) 和 x f(x)和x f(x)和x都是已知的, w 和 b w和b w和b是需要估计的参数。
有了模型,接下来就需要考虑按照什么样准则学习或选择最优的模型。选择最优模型的原则一般是最小化损失函数,所以策略其实是给出损失函数。线性回归的损失函数一般采用平方损失函数: J ( w ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 = 1 m ∑ i = 1 m ( w T x i − y i ) 2 J(w)=\frac{1}{m} \sum_{i=1}^{m}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}\right)^{2}=\frac{1}{m} \sum_{i=1}^{m}\left(w^Tx_{i}-y_{i}\right)^{2} J(w)=m1i=1∑m(f(xi)−yi)2=m1i=1∑m(wTxi−yi)2 其中 f ( x i ) f(x_{i}) f(xi)是模型的预测值, y i y_{i} yi是真实值。
算法部分就是通过最小化Loss来求出参数 w w w,求最小值的方法有很多,最常用的是通过梯度下降迭代求得最小值。但是对于线性回归的损失函数,我们有更简单的方式: J ( w ) J(w) J(w)直接对 w w w求导,令其导数等于0。 ∂ J ( w ) ∂ w = 0 \frac{\partial J(w)}{\partial w}=0 ∂w∂J(w)=0 得到: X T X w = X y X^{T} X w=X y XTXw=Xy 其中 X X X是样本矩阵,求得 w 的 最 优 解 w的最优解 w的最优解 w ∗ = ( X T X ) − 1 X T y w^{*}=\left(X^{T} X\right)^{-1} X^{T} y w∗=(XTX)−1XTy 将 w ∗ w^* w∗代入模型中即可得到最终方程。
线性回归由于比较简单,可解释性强,因此在经济学这种重解释的领域应用的比较多,绝大部分的计量方法都是基于线性回归的。平时生活的一些比较简单的相关关系也可以使用线性回归来进行预测。
这里主要使用sklearn这个库来实现机器学习算法。
计算均方误差MSE
print('MSE:%.3f'%(mean_squared_error(y_test,y_pred))) MSE:0.543其实上面用的方法是留出法,我们也可以使用交叉验证法来计算模型误差。这样就把划分训练集和测试集、建立模型以及评估模型这几步合并在一起。
mse = -np.mean(cross_val_score(LinearRegression(),X,y,cv=10,scoring='neg_mean_squared_error')) print('MSE:%.3f'%(mse)) MSE:0.551可以看到两者比较接近。
(1)可解释性强,可以清晰的知道每个特征对模型的影响 (2)简单快速
(1)只适用于数据之间的线性关系,但现实生活中大多数特征之间的关系是非线性的。 (2)需要满足一些假设,特征之间不能存在共线性
