机器学习-线性回归算法梳理

学习内容

  1. 机器学习的一些概念
    有监督、无监督、泛化能力、过拟合欠拟合(方差和偏差以及各自解决办法)、交叉验证
  2. 线性回归的原理
  3. 线性回归损失函数、代价函数、目标函数
  4. 优化方法(梯度下降法、牛顿法、拟牛顿法等)
  5. 线性回归的评估指标
  6. sklearn参数详解

1.基本概念

有监督:训练数据有标记信息,如分类和回归。

无监督:训练数据无标记信息,如聚类。

泛化能力(generalization ability):训练好的模型适用于新样本的能力,而不是仅仅在训练样本上表现得很好。具有强泛化能力的模型能很好地适用于整个样本空间。

过拟合(overfitting):学习器把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,从而导致泛化性能下降。在过拟合时,方差>偏差。
解决方法:数据集扩增(Data augmentation)、正则化(Regularization)等。

欠拟合(underfitting):对训练样本的一般性质尚未学好。在欠拟合时,偏差主导了泛化错误率,偏差>方差。
解决方法:增强学习能力,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等。

交叉验证(cross validation):也称为k折交叉验证,将数据集划分为k个大小相似的互斥子集,每个自己尽可能保持数据分布的一致性;每次用k-1个子集的并集作为训练集,剩余的那个子集作为测试集,即可进行k次训练和测试;最终返回k次测试结果的均值。

2.线性回归的原理

线性回归通过学得一个线性模型(f(x)=wTx+b)从而尽可能准确地预测输出label。如此一来,可根据训练数据得到估计的label值(y hat),使用cost function来衡量预测值与真实y的距离,可通过最小二乘法、极大似然方法、梯度下降等使cost function达到最小,从而得到估计的参数值,推导出最佳线性模型。

3.线性回归损失函数、代价函数、目标函数

损失函数(loss function):单个样本
代价函数(cost function):训练集上所有样本
损失/代价函数越小,代表模型拟合得越好。一般而言,不必过度区分以上二者。

目标函数:代价函数+L1/L2正则化项

深入理解:
1.《统计机器学习》第一章P8-9
2.博客:
https://blog.csdn.net/qq_28448117/article/details/79199835?from=singlemessage

4.优化方法

梯度下降:repeat{θj := θj - α* (J(θ)对θj求偏导}
注意同步更新所有θj;
α为学习率(learning rate),即不能过大(可能不收敛)),也不能过小(下降速度慢)。

牛顿法:牛顿方法收敛速率更快。核心思想是通过一个严格的二次凹/凸方程对目标函数作拒不近似,且保证每一次迭代这个二次方程都是优化的。
第t+1次迭代算法如下:
NR算法

拟牛顿法:通过正定矩阵近似海森矩阵的逆矩阵或海森矩阵,简化了牛顿算法求解海森矩阵的逆矩阵这一计算过程。

5.线性回归的评估指标

均方误差(MSE):对应欧氏距离,有非常好的几何意义。对应均方误差最小化的方法为最小二乘法,即试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。

其他:残差、决定系数(R-square)、adjusted R-square。

6.sklearn参数详解

目前用过的sklearn如下:
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import RobustScaler

from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet

from sklearn.ensemble import GradientBoostingRegressor

from sklearn.pipeline import make_pipeline

【着重看sklearn.linear_model】

待动手用一遍:

交叉验证:
from sklearn.cross_validation import cross_val_score
使用:cross_val_score(model, X, y),返回k次测试结果的均值

均方误差(MSE):
from sklearn.metrics import mean_squared_error
使用:mean_squared_error(y_true, y_pred)

添加正则化项:
from sklearn.linear_model import Lasso
lasso = Lasso(alpha= ) #L1正则化系数
lasso.fit(X_train, y_train)
y_train_pred = lasso.predict(X_train)

你可能感兴趣的:(机器学习)