正则化项java_正则化(Regularization)

我们在使用线性回归和逻辑斯特回归的时候,高次幂的多项式项可能造成过拟合的问题。而我们使用过拟合这一方法来改善或者减少这一问题。

我们所要做的就是使θ尽可能接近0,那么对于高阶项对于hθ(x)的影响也会尽量小,几乎没有。这样就预防了过拟合。

正则化的线性回归模型

03934b2fe37e12fdc42111a3995ed0fa.png

6afa21e9dbc791589d8090c50ea4a473.png是正则项,λ是正则化参数,λ的作用是控制两个目标之间的取舍,即更好地拟合训练集的目标和将参数控制得更小的目标,从而保持假设模型的相对简单避免出现过拟合的现象。所以对于λ的值应当慎重选择。

既然我们加入了正则项,那么我们在梯度下降的时候也是要做出一点改变,将梯度下降算法分为两种情形

416d63df8f4091c33daaa786e08d5446.png

对于上面的算法中j=1,2,……,n时的更新石子进行调整可得:

0b7665ffc3fb9801278f55b14277a7ad.png

可以看出,正则化线性回归的梯度洗将算法的变化在于,每次都在原有算法更新规则的基础上令θ值减少了一个额外的值。

线性回归正则方程式正则化

3279ada52086310ba59ac2976341e41c.png

正则化的逻辑斯特回归模型

8a9a1a1bb293f65e75f04021a6e4a6a9.png

要最小化该代价函数,通过求导,得出梯度下降算法为:

89ec729d3eddbb728135497415497fec.png

最后附上正则化的逻辑斯特回归模型的python代码实现

importnumpy as npdefcostReg(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)))#multiply数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致

reg=(learningRate/(2*len(X))*np.sum(np.power(theta[:,1:theta.shape[1]],2)))#thate.shape[1]指thate矩阵的第一维

return np.sum(first-second)/len(X)+reg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值