学习目标

  • 掌握线性回归的实现过程
  • 应用LinearRegression或SGDRegressor实现回归预测
  • 知道回归算法的评估标准及其公式
  • 知道过拟合与欠拟合的原因以及解决方法
  • 知道岭回归的原理及与线性回归的不同之处
  • 应用Ridge实现回归预测
  • 应用joblib实现模型的保存与加载

    纪要

    2.1 线性回归简介

    1.定义

    1. 利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式

    2.表示方式:

    1. h(w) = w1x1 + w2x2 + w3x3 + ... + b<br /> = W转置x + b

    3.分类

    1. 线性关系<br /> 非线性关系

    2.2 线性回归api初步使用

    1.api

    1. sklearn.linear_model.LinearRegression()<br /> 属性:<br /> LinearRegression.coef_:回归系数

    2.4 线性回归的损失和优化[**]

    1.损失

    1. 最小二乘法

    2.优化

    1. 正规方程<br /> 梯度下降法

    3.正规方程 — 一蹴而就

    1. 利用矩阵的逆,转置进行一步求解<br /> 只是适合样本和特征比较少的情况

    4.梯度下降法 — 循序渐进

    1. 举例:<br /> -- 可微分的函数<br /> 山底 -- 函数的最小值<br /> 梯度的概念<br /> 单变量 -- 切线<br /> 多变量 -- 向量<br /> 梯度下降法中关注的两个参数<br /> α -- 就是步长<br /> 步长太小 -- 下山太慢<br /> 步长太大 -- 容易跳过极小值点(*****)<br /> 为什么梯度要加一个负号<br /> 梯度方向是上升最快方向,负号就是下降最快方向

    5.梯度下降法和正规方程对比:

    1. 梯度下降 正规方程<br /> 需要选择学习率 不需要<br /> 需要迭代求解 一次运算得出<br /> 特征数量较大可以使用 需要计算方程,时间复杂度高O(n3)

    6.选择:

    1. 小规模数据:<br /> LinearRegression(不能解决拟合问题)<br /> 岭回归<br /> 大规模数据:<br /> SGDRegressor

    2.5 梯度下降法介绍[###]

    1 全梯度下降算法(FG)

    1. 在进行计算的时候,计算所有样本的误差平均值,作为我的目标函数

    2 随机梯度下降算法(SG)

    1. 每次只选择一个样本进行考核

    3 小批量梯度下降算法(mini-bantch)

    1. 选择一部分样本进行考核

    4 随机平均梯度下降算法(SAG)

    1. 会给每个样本都维持一个平均值,后期计算的时候,参考这个平均值

    2.6 api

    正规方程

    1. sklearn.linear_model.LinearRegression(fit_intercept=True)

    梯度下降法

    1. sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01)<br /> 参数:<br /> 1.loss -- 损失 (最小二乘)<br /> 2.learning_rate -- 学习率<br /> 一般时都是进行动态的更新,也可以指定成为一个常数,但是不推荐。

    2.7 案例[**]

    1.获取数据
    # 2.数据基本处理
    # 2.1 数据集划分
    # 3.特征工程 —标准化
    # 4.机器学习(线性回归)
    # 5.模型评估

    2.8 欠拟合和过拟合【**

    欠拟合

    1. 在训练集上表现不好,在测试集上表现不好<br /> 解决方法:<br /> 继续学习<br /> 1.添加其他特征项<br /> 2.添加多项式特征

    过拟合

    1. 在训练集上表现好,在测试集上表现不好<br /> 解决方法:<br /> 1.重新清洗数据集<br /> 2.增大数据的训练量<br /> 3.正则化<br /> 4.减少特征维度

    正则化

    1. 通过限制高次项的系数进行防止过拟合<br /> L1正则化<br /> 理解:直接把高次项前面的系数变为0<br /> Lasso回归<br /> L2正则化<br /> 理解:把高次项前面的系数变成特别小的值<br /> 岭回归

    2.9 正则化线性模型【*

    1.Ridge Regression 岭回归

    1. 就是把系数添加平方项<br /> 然后限制系数值的大小<br /> α值越小,系数值越大,α越大,系数值越小

    2.Lasso 回归

    1. 对系数值进行绝对值处理<br /> 由于绝对值在顶点处不可导,所以进行计算的过程中产生很多0,最后得到结果为:稀疏矩阵

    3.Elastic Net 弹性网络

    1. 是前两个内容的综合<br /> 设置了一个r,如果r=0--岭回归;r=1--Lasso回归

    4.Early stopping

    1. 通过限制错误率的阈值,进行停止

    2.10 线性回归的改进-岭回归【**】

    api

    sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver=”auto”, normalize=False)
    具有l2正则化的线性回归
    alpha — 正则化
    正则化力度越大,权重系数会越小
    正则化力度越小,权重系数会越大
    normalize
    默认封装了,对数据进行标准化处理

    2.11 模型的保存和加载【*】

    api:

    sklearn.externals import joblib
    保存:joblib.dump(estimator, ‘test.pkl’)
    加载:estimator = joblib.load(‘test.pkl’)
    注意:
    1.保存文件,后缀名是**.pkl
    2.加载模型是需要通过一个变量进行承接