应用joblib实现模型的保存与加载
纪要
2.1 线性回归简介
1.定义
  利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式
2.表示方式:
  h(w) = w1x1 + w2x2 + w3x3 + ... + b<br />            = W转置x + b
3.分类
  线性关系<br />        非线性关系
2.2 线性回归api初步使用
1.api
  sklearn.linear_model.LinearRegression()<br />            属性:<br />            LinearRegression.coef_:回归系数
2.4 线性回归的损失和优化[**]
1.损失
  最小二乘法
2.优化
  正规方程<br />        梯度下降法
3.正规方程 — 一蹴而就
  利用矩阵的逆,转置进行一步求解<br />        只是适合样本和特征比较少的情况
4.梯度下降法 — 循序渐进
  举例:<br />            山  -- 可微分的函数<br />            山底 -- 函数的最小值<br />        梯度的概念<br />            单变量 -- 切线<br />            多变量 -- 向量<br />        梯度下降法中关注的两个参数<br />            α  -- 就是步长<br />                步长太小 -- 下山太慢<br />                步长太大 -- 容易跳过极小值点(*****)<br />            为什么梯度要加一个负号<br />                梯度方向是上升最快方向,负号就是下降最快方向
5.梯度下降法和正规方程对比:
  梯度下降                 正规方程<br />        需要选择学习率          不需要<br />        需要迭代求解            一次运算得出<br />        特征数量较大可以使用     需要计算方程,时间复杂度高O(n3)
6.选择:
  小规模数据:<br />            LinearRegression(不能解决拟合问题)<br />            岭回归<br />        大规模数据:<br />            SGDRegressor
2.5 梯度下降法介绍[###]
1 全梯度下降算法(FG)
  在进行计算的时候,计算所有样本的误差平均值,作为我的目标函数
2 随机梯度下降算法(SG)
  每次只选择一个样本进行考核
3 小批量梯度下降算法(mini-bantch)
  选择一部分样本进行考核
4 随机平均梯度下降算法(SAG)
  会给每个样本都维持一个平均值,后期计算的时候,参考这个平均值
2.6 api
正规方程
  sklearn.linear_model.LinearRegression(fit_intercept=True)
梯度下降法
  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 欠拟合和过拟合【**】
欠拟合
  在训练集上表现不好,在测试集上表现不好<br />        解决方法:<br />            继续学习<br />            1.添加其他特征项<br />            2.添加多项式特征
过拟合
  在训练集上表现好,在测试集上表现不好<br />        解决方法:<br />            1.重新清洗数据集<br />            2.增大数据的训练量<br />            3.正则化<br />            4.减少特征维度
正则化
  通过限制高次项的系数进行防止过拟合<br />            L1正则化<br />                理解:直接把高次项前面的系数变为0<br />                Lasso回归<br />            L2正则化<br />                理解:把高次项前面的系数变成特别小的值<br />                岭回归
2.9  正则化线性模型【*】
1.Ridge Regression 岭回归
  就是把系数添加平方项<br />        然后限制系数值的大小<br />        α值越小,系数值越大,α越大,系数值越小
2.Lasso 回归
  对系数值进行绝对值处理<br />        由于绝对值在顶点处不可导,所以进行计算的过程中产生很多0,最后得到结果为:稀疏矩阵
3.Elastic Net 弹性网络
  是前两个内容的综合<br />        设置了一个r,如果r=0--岭回归;r=1--Lasso回归
4.Early stopping
  通过限制错误率的阈值,进行停止
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.加载模型是需要通过一个变量进行承接