本章主要讲训练模型的方法。git
线性回归模型算法
首先,给出线性回归模型的预测公式网络
将上述公式向量化函数
当公式存在后,咱们因为须要最优参数,所以须要成本函数。线性回归模型通常的成本函数是RMSE或者MSE,这里用MSE性能
而后,开始求优。学习
一、使用标准方程(闭式解或者叫公式解)测试
这个变化是根据线性代数中的矩阵求逆以及相关运算求出的一个公式,要注意,这里的X是一个全数据的矩阵,行为特征数,列为训练集数量。优化
经过上述理论,给出代码进行求解:spa
代码中首先随机生成数据集并添加噪声,而后经过闭式解求出参数集,而后进行预测。.net
绘制结果
注意,使用标准方程时,通常来讲特征数量越多矩阵求逆运算越复杂,计算复杂度越高,更加不容易求解,可是好处是当求出来后,预测很快。
二、梯度降低
具体来讲,就是迭代调整参数,使得成本函数最小化。
首先,使用一个随机的θ值,而后逐步让θ变化,使得更加靠近咱们的目标,直到算法收敛到一个最小值。
在这个方法中,θ值的取值很关键,由于它表明步长,过大可能算法不能收敛,致使发散,太小,会致使算法收敛速度变慢。
梯度降低在非凸函数中,可能会收敛到一个局部最优值,而在凸函数中会收敛到全局最优。
梯度降低速度与参数的大小也有关系
梯度降低须要计算公式的梯度,咱们固然须要计算成本函数关于参数θ的偏导数
这里有三个变种,分别是
批量梯度降低
批量梯度降低最关键的是一次计算使用所有的训练函数进行,采用线性代数中的矩阵计算实现。
每个的θ都是经过所有的训练函数计算出来。最后生成参数的梯度向量。
梯度降低的更新公式:
代码:
能够发现,预测结果与以前的标准方程基本一致。
这里注意:能够经过网格搜索肯定学习率θ,限制迭代次数。
随机梯度降低
随机梯度降低的关键是随机二字,在操做的时候,随机选取一个训练集上的数据,根据以前的梯度公式给出相应的偏导数,而后用该偏导数去更新所有的参数θ。随机梯度降低的最大的优点在于计算很是迅速,每次更新都是基于单个实例。
固然,有利就有弊,随机梯度降低的成本函数的图像是不断上上下下的,它的降低不规则,但整体趋势必定是降低的。但即便达到了最小值,依旧还会不断的反弹,永远不会中止。
随机梯度降低还有一个比较好的优点在于它比批量梯度降低更加的能找到全局最优值,由于它的不规则性,它比批量梯度降低更加可以跳出局部最小值,但永远定位不到最小值。
通常采起的策略是模拟退火,意思是刚开始步长能够设置的稍大,而后将步长愈来愈小,让算法接近全局最小值。
这里的SGDRegressor类中,默认的优化的成本函数是平方偏差。
小批量梯度降低
是批量梯度降低的简化形式,主要是经过小批量的训练集数据进行参数更新,这样作的好处是可以在矩阵运算的硬件优化中得到显著的性能提高。固然,小批量梯度降低在同等的条件下,能比随机梯度降低更加接近最小值。
三者比较
多项式回归模型
这种模型是在线性模型的基础上,为每一个特征的幂次方做为一个新特征添加,而后在这个拓展的训练集上训练。
咱们能够发现,模型的预测效果比线性要好。
这里注意:特征的数量越多,组合的特征就越多,就会存在爆炸的状况,所以在操做PolynomialFeatures(degree=d)这个类时,必定注意控制计算的大小!
学习曲线
咱们训练集训练出的模型,最佳的性能是拥有对其余测试集数据的泛化能力,所以要求咱们的模型要拟合训练集上的数据要充足且不能过拟合。
经过图像可以发现,数据在线性回归中没有很好的拟合数据,是欠拟合,在高阶(300)多项式中被过拟合,在2次回归中是较好拟合,所以把握回归的度是一个关键。
咱们能够观察学习曲线,即画出模型在训练集上的表现,同时画出以训练集规模为自变量的训练集的图像曲线。
注意:若是模型再怎么训练都不能很好的拟合数据,说明模型自己能力较弱,没法适应当前任务,须要更换复杂度更高的模型去处理。
在学习曲线中,若是训练集的结果比验证集好,说明模型仍是存在过拟合的现象,咱们最终想看到的是两条曲线的重合或者几乎重合,能作的方法有提供更多的训练数据。
方差、误差与不可约偏差
误差:泛化偏差的这部分偏差是因为错误的假设决定的。例如实际是一个二次模型,你却假设了一个线性模型。一个高误差的模型最容易出现欠拟合。
方差:这部分偏差是因为模型对训练数据的微小变化较为敏感,一个多自由度的模型更容易有高的方差(例如一个高阶多项式模型) ,所以会致使模型过拟合。
不可约偏差:这部分偏差是因为数据自己的噪声决定的。下降这部分偏差的惟一方法就是进行数据清洗(例如:修复数据源,修复坏的传感器,识别和剔除异常
值) 。
解决过拟合问题——正则化
咱们要懂得一个规则,就是模型拥有越少的自由度,就越难拟合数据,过拟合的状况发生的几率就会越少。
四个正则化方式:
一、岭回归
超参数α控制着惩罚的轻重,太小则正则化的约束能力变弱,过大则约束力太强,模型失去意义。
注意:使用岭回归前,对数据进行放缩(可使用 StandardScaler ) 是很是重要的,算法对于输入特征的数值尺度(scale) 很是敏感。
二、套索回归
与岭回归很类似,但这里使用的正则项是l1范数。
这个正则化有个好处,在于它倾向于将不重要的特征权重设置为0。
还要注意的是,因为某些θ值设置为0,所以在该处是不容许求偏导的,须要子梯度向量
三、弹性网络
超参数r是控制弹性的标准,r=1就是套索回归,r=0就是岭回归。
四、早期中止法
方法即为观察预测偏差降低到最低点时,中止训练,并将该时候的训练模型做为最佳模型使用。
注意:随机梯度降低或小批量梯度降低中,因为不是平滑曲线,所以须要偏差曲线高于最小值一段时间后再回滚到最小值对应的最佳模型上。
逻辑回归模型
Logistic 回归(也称为 Logit 回归) 一般用于估计一个实例属于某个特定类别的几率 。
其单个样本的损失函数为:
下面代码给出对于某类型花的逻辑回归分类器
softmax回归模型
思路:当给定一个实例 时,Softmax 回归模型首先计算 类的分数 ,而后将分数应用在 Softmax 函数(也称为归一化指数) 上,估计出每类的几率。
它的成本函数表示为
经过计算每一个类别的梯度向量,使用梯度降低找到合适的θ。
用softmax进行分类花种类的划分:
对于softmax最后个人理解就是一个归一化操做,寻找一个得分最高的类别做为预测类别。