如图所示是线性回归的三种情况:
图一是欠拟合 数据点没有全部被(另一种说法这个算法有高偏差)
图二的二次函数来拟合效果很不错
图三用了4次多项式有5个参数 但是曲线歪歪扭扭的 显得非常的奇葩
我们称为过度拟合 以前学术的说法叫这个算法具有高方差
我们拟合这样一个高阶的假设函数 他几乎能拟合训练集中所有数据 但是变量太多 我们没有足够的数据去约束它来获得一个好的假设函数 到后面新来的数据的预测过程中 可能会导致预测值非常偏离样本值 泛化能力很弱
当然对于逻辑回归也是同样对应这三种情况:
总的来说过度拟合会出现在使用过多特征的情况下 这时候训练出的假设能很好的拟合训练集 所以你的代价函数很接近于0甚至等于0 但是你可能会得到这样的曲线 它千方百计的拟合训练集导致他无法泛化到新来的数据上(泛化指的是一个假设模型应用到新样本的能力) 用房价例子来说就算无法预测训练集之外新来的房子样本的价格 用之前的例子来说
类似的说法同样可以用于逻辑回归
为了解决过拟合 我们有两个办法:
为了解决过拟合 我们有两个办法:
第一:尽量减少特征的数量 其中又有两个思路:
1.我们可以人工检查变量清单 并以此决定 哪些变量更重要则保留 哪些可以舍弃 比如房屋长宽可以合二为一成面积,如房子的颜色(假如他不是很有用)就可以直接删了 。
2. 后面会讲到模型选择算法 这种算法可以自动筛选哪些特征应该保留哪些该删除 。这种方法的缺点就是你舍弃特征的同时也舍弃了问题的一些信息。
第二:正则化 我们保留所有特征,但是减少量级或参数θ的大小。这样会使得我们的曲线更简单更平滑。
当特征过多时,我们又很难手工剔除参数,那采用正则化就很舒服了。
我们希望消除θ3 θ4这样高阶项的影响 得到右边的二次函数图像
我们不是直接删掉θ3θ4的项而是修改代价函数,我们的目的是最小化代价函数的值,所以加上惩罚项(Penalty Term)后:为了最小化J(θ),由于惩罚性的存在:如下图取1000,那就要让θ3θ4尽可能小了
人为的在代价函数后面加上两个罚因子,这样函数图像就相当于从蓝色的过拟合到粉红了
参数的值越小,一般曲线就越光滑,也就更简单,更不容易过拟合
一般化后得到正则化的代价函数如下图所示,一般化的意思就是比如有很多特征,我们不知道怼哪几个所以全部怼上再说。(由于θ0的是常数项所以约定俗称不怼θ0):
其中λ叫正则化参数,λ若过大则会导致欠拟合、梯度下降无法收敛,过小则抑制θj的效果变小即避免过拟合失败
做GRADIENT DESCENT时 由于我们只惩罚θ1 θ2…… 所以把θ0单独写出来进行操作
不难发现天蓝色就是导数(θj的那一坨也同理)
移项整理后
因为α很小m很大所以粉红括号里可以想成是0.99这样的数 所以更新结果就变成了
θj=0.99θj 也就意味正则化后每次迭代θj都往数轴左边走一点点
当然还可以用正规方程来做
之前我们说过,如果m≤n(变量个数小于等于特征数)那么不可逆,若使用伪逆函数计算虽然会看到一个有意义的解但最后不会得到很好的假设模型。幸运的是在正则化中,只要正则化参数λ>0那这个矩阵就一定不是奇异矩阵(不可逆矩阵)
逻辑回归用梯度下降法和线性回归的其实在表面上形式完全一样,只不过因为假设函数的定义不一样所以它的本质、内涵不一样。 但是计算过程也是完全一样的。
还有一个用于逻辑回归正则化的方法叫
我们写一个costFunction函数以向量θ作为输入,函数的功能是计算非条件极值,函数会有两个返回值:一个是J(θ)的值另一个是梯度如gradient(0)是对θ0的偏导(若以0开始索引)刚才说了,θ0的偏导正不正则化都是
而θ1以后的偏导是