概述
文章目录
- 前言
- 一、正则化引入
- 二、代价函数
- 三、正则化线性回归
- 四、正则化逻辑回归
- 总结
前言
一、正则化引入
线性回归和逻辑回归,能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会导致它们效果很差。通过学习得到的假设函数可能能够非常好地适应训练集(代价函数可能几乎为 0),但是可能会不能推广到新的数据
eg:在回归问题中,有如下数据集和假设函数
第一个模型是一个线性模型,欠拟合,不能很好地适应训练集,第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据,可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应训练集但在新输入变量进行预测时可能会效果不好,而中间的模型似乎最合适
eg: 在分类问题中也存在同样的情况
从假设函数的阶数来说, ???? 的次数越高,拟合的越好,但相应的预测的能力就可能变差
解决办法:正则化(regularization),它可以改善或者减少过度拟合问题
二、代价函数
回归问题中,假设函数如下:正是由于高次项导致过拟合的产生,如果能让这些高次项的系数接近于 0,就能很好的拟合
所以正则化的基本方法:在一定程度上减小这些参数???? 的值
对应上述回归问题,要减少????3和????4的大小,要做的就是修改代价函数,在其中????3和????4 设置一点惩罚,在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小一些的????3和????4:
如果数据集有非常多的特征,但是并不知道其中哪些特征要惩罚,可以将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度,所以能防止过拟合的代价函数如下:
其中????又称为正则化参数( Regularization Parameter),一般不对????0 进
行惩罚
这个代价函数就是在原来的情况上,增加了末尾这一项,如果令????是一个非常大的数,为了使 Cost Function 尽可能的小,所有的 ???? 的值,不包括????0都会在一定程度上减小
正则化处理的模型与原模型的可能对比
如果选择的正则化参数 λ 过大, 则会把所有的参数都最小化了, 导致模型变成 ℎ????(????) =????0,如上图中红色直线所示,造成欠拟合
三、正则化线性回归
正则化线性回归的代价函数为:
使用梯度下降法使代价函数最小化,因为未对????0进行正则化,所以梯度下降算法将分两种情形:式子1和式子2
将式子2进行变形可以得到式子3,将2和3进行对比,可以发现式子3比式子2多减了一个式子4
因此,正则化线性回归的梯度下降算法的变化在于: 每次都在原有算法更新规则的基础上令????值减少了一个额外的值
正规方程正则化线性回归模型
图中矩阵尺寸为 (???? + 1) ∗ (???? + 1)
四、正则化逻辑回归
正则化逻辑回归的代价函数为:
实现代码
import numpy as np
def costReg(theta, X, y, learningRate):
theta = np.matrix(theta)
X = np.matrix(X)
y = np.matrix(y)
first = np.multiply(-y, np.log(sigmoid(X*theta.T)))
second = np.multiply((1 - y), np.log(1 - sigmoid(X*theta.T)))
reg = (learningRate / (2 * len(X))* np.sum(np.power(theta[:,1:the
ta.shape[1]],2))
return np.sum(first - second) / (len(X)) + reg
梯度下降算法
总结
提示:这里对文章进行总结:
最后
以上就是超帅小丸子为你收集整理的正则化(Regularization)前言一、正则化引入二、代价函数三、正则化线性回归四、正则化逻辑回归总结的全部内容,希望文章能够帮你解决正则化(Regularization)前言一、正则化引入二、代价函数三、正则化线性回归四、正则化逻辑回归总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复