吴恩达课程中的正则化

#Regulation
(1) 过拟合问题

  • ⭐️对过拟合的理解:
    • 本质可以理解成数据集噪声对整个数据拟合时造成的泛化性下降。
      \quad 比如让机器来识别甜甜圈,一开始提供的特征为圆的、中间有一个空洞,这时机器就会对甜甜圈进行一个基本的判断。但是,当又加入特征,比如带有黑色的(黑巧克力)之后,机器反而对甜甜圈的识别率下降了,当有一个白巧克力的甜甜圈出现时,机器就会识别不出来,最终导致机器只是完美的通过了每个数据点但是却无法进行预测。
    • \quad 对于机器来说,样本一方面具有共性的特征,另一方面又具有特性的特征,就好像甜甜圈的颜色本身对“是否为甜甜圈?”这个命题没有影响,甜甜圈本身的颜色就是它的特性,如果机器在学习过程中太“在意”这个特征时就会导致过拟合现象的产生。
  • 下面从数学函数角度来说明:
    • 对于 L i n e r   R e g r e s s i o n Liner Regression Liner Regression问题
      在这里插入图片描述
      对于图1来说这是欠拟合状态,对于图2来说,这是比较好的拟合状态,对图三来说,这是过拟合状态。
    • 对于 L o g i s t i c   R e g r e s s i o n Logistic Regression Logistic Regression问题
      在这里插入图片描述
  • 过拟合问题的解决方案:
    1️⃣ 由过拟合产生的原因可以提出第一种解决方法,精挑细选特征,尽量减少非共性特征的数量。
    2️⃣ 使用正则化方法,对机器的学习进行一定的限制。

(2) 代价函数

  • 对于这个函数来说,只要使 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4的值足够小就不会对函数的拟合产生太大影响了,因此这里可以考虑给 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4添加一个惩罚项。
    例如: J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + 1000 θ 3 2 + 1000 θ 4 2 ] J(\theta) = \dfrac{1}{2m}[\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}+1000\theta_3^2+1000\theta_4^2] J(θ)=2m1[i=1m(hθ(x(i))y(i))2+1000θ32+1000θ42]
  • 当不知道哪个 θ \theta θ是产生过拟合的原因时,就对所有的 θ \theta θ进行惩罚,让所有的 θ \theta θ值都减小。
    J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] J(\theta) = \dfrac{1}{2m}[\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}+\lambda\sum\limits_{j=1}\limits^{n}\theta_j^2] J(θ)=2m1[i=1m(hθ(x(i))y(i))2+λj=1nθj2]
    λ \lambda λ 称为正则化参数,并且要注意,惩罚是从 θ 1 \theta_1 θ1开始的,一般不对 θ 0 \theta_0 θ0进行惩罚。
    在这里插入图片描述
  • 注意:参数 λ \lambda λ 的选择要合适,否则会导致最后 θ 1 , … , θ n \theta_1,\dots,\theta_n θ1,,θn都被惩罚到接近0,最后就是一条直线了。

(3)线性回归的正则化

  • 梯度下降
    • Repeat {
      θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) {\theta_{0}}:={\theta_{0}} -\alpha\dfrac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)} θ0:=θ0αm1i=1m(hθ(x(i))y(i))
       
      θ j : = θ j − α 1 m [ ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) ) + λ θ j ] {\theta_{j}}:={\theta_{j}}-\alpha\dfrac{1}{m}[\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}_j} \right)}+\lambda\theta_j] θj:=θjαm1[i=1m((hθ(x(i))y(i))xj(i))+λθj]
      } ( i = 1 , 2 , … , n ) (i=1,2,\dots,n) (i=1,2,,n)
    • 整理后可得:
      θ j : = ( 1 − α λ m ) θ j − α 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) ) {\theta_{j}}:=(1-\dfrac{\alpha\lambda}{m}){\theta_{j}}-\alpha\dfrac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}_j} \right)} θj:=(1mαλ)θjαm1i=1m((hθ(x(i))y(i))xj(i))
      可以看出,由于 λ , α , m \lambda,\alpha,m λ,α,m均为正值, θ j \theta_j θj必定是减小的。
  • 正规方程
    在这里插入图片描述
    矩阵的尺寸为 ( n + 1 ) ∗ ( n + 1 ) (n+1)*(n+1) (n+1)(n+1)

(4)逻辑回归的正则化

  • 代价函数
    J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log ⁡ ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J\left( \theta \right)=\dfrac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}+\dfrac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2
  • 求导后的梯度下降函数为
    R e p e a t Repeat Repeat u n t i l until until c o n v e r g e n c e convergence convergence{
    θ 0 : = θ 0 − a 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ) {\theta_0}:={\theta_0}-a\dfrac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}}) θ0:=θ0am1i=1m((hθ(x(i))y(i))x0(i))
     
    θ j : = θ j − a [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] {\theta_j}:={\theta_j}-a[\dfrac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\dfrac{\lambda }{m}{\theta_j}] θj:=θja[m1i=1m(hθ(x(i))y(i))xj(i)+mλθj]
    f o r for for j = 1 , 2 , . . . n j=1,2,...n j=1,2,...n
    }
  • matlab代码
    f u n c t i o n [ j V a l , g r a d i e n t ] = c o s t F u n c t i o n ( t h e t a ) function [jVal, gradient]=costFunction(theta) function[jVal,gradient]=costFunction(theta)
    j V a l = [ J 的 函 数 的 表 达 式 ] ; \qquad jVal=[J的函数的表达式]; jVal=[J];
    g r a d i e n t = 一 个 初 始 值 ; \qquad gradient=一个初始值; gradient=;
    g r a d i e n t ( 1 ) = ∂ J ( θ ) ∂ θ 0 ; \qquad gradient(1)=\dfrac{\partial J(\theta)}{\partial \theta_0}; gradient(1)=θ0J(θ);
     
    g r a d i e n t ( 2 ) = ∂ J ( θ ) ∂ θ 1 ; \qquad gradient(2)=\dfrac{\partial J(\theta)}{\partial \theta_1}; gradient(2)=θ1J(θ);
    … \qquad \dots
    g r a d i e n t ( n + 1 ) = ∂ J ( θ ) ∂ θ n ; \qquad gradient(n+1)=\dfrac{\partial J(\theta)}{\partial \theta_n}; gradient(n+1)=θnJ(θ);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值