#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问题
- 对于
L
i
n
e
r
R
e
g
r
e
s
s
i
o
n
Liner Regression
Liner 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=1∑m(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=1∑m(hθ(x(i))−y(i))2+λj=1∑nθ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=1∑m(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=1∑m((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:=(1−mαλ)θj−αm1i=1∑m((hθ(x(i))−y(i))⋅xj(i))
可以看出,由于 λ , α , m \lambda,\alpha,m λ,α,m均为正值, θ j \theta_j θj必定是减小的。
- Repeat {
- 正规方程
矩阵的尺寸为 ( 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=1∑m[−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθ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:=θ0−am1i=1∑m((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:=θj−a[m1i=1∑m(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)=∂θ0∂J(θ);
g r a d i e n t ( 2 ) = ∂ J ( θ ) ∂ θ 1 ; \qquad gradient(2)=\dfrac{\partial J(\theta)}{\partial \theta_1}; gradient(2)=∂θ1∂J(θ);
… \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)=∂θn∂J(θ);