Week3 逻辑回归、过拟合和正则化
1. 逻辑回归(Logistic Regression)介绍
1.1 逻辑回归是什么,为什么需要用逻辑回归?
线性回归通常用于解决目标问题是个数值的问题,该数值 h θ ( x ) h_θ (x) hθ(x)可能是 ( − ∞ , + ∞ ) (-∞,+∞) (−∞,+∞)。考虑如果目标问题是个二分类问题,即问题的答案只有是/否,那么此时如果用线性回归来解决该问题,通常会设置一个阈值,当预测输出大于阈值时,选择“是”;反之,选择“否”。
用线性回归来解决分类问题,如果样本点中存在大量离群样本,则分类效果不是很好。如下图,少数的离群点对线性回归的结果影响很大。此时可以通过数学模型的更改,将离群样本靠近大群体,再用线形回归来分类会好一些。
更好地解决上述问题的回归方式就是逻辑回归(Logistic回归)。
2.逻辑回归的数学表达
2.1Sigmoid方程及其特性
对于二分类问题,直观上我们会将负例设置为0,正例设置为1。但是线性回归 h θ ( x ) h_θ (x) hθ(x)输出的取值范围可能是 ( − ∞ , + ∞ ) (-∞,+∞) (−∞,+∞),虽然可以设置阈值,但这并不理想,所以考虑将输出的取值范围控制在(0,1)之间。以此,逻辑回归需要在线性回归的基础上,再进行一次映射,该映射使用了sigmoid函数,即:
s i g m o i d 函 数 : g ( z ) = 1 1 + e − z , 其 中 g ( z ) ′ = ( 1 1 + e − z ) ′ = g ( z ) ( 1 − g ( z ) ) sigmoid函数:g(z)=\frac{1}{1+e^{-z}},其中g(z)'=(\frac{1}{1+e^{-z}})'=g(z)(1-g(z)) sigmoid函数:g(z)=1+e−z1,其中g(z)′=(1+e−z1)′=g(z)(1−g(z))
2.2逻辑回归的数学表达式
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_θ (x)=g(\textbf{θ}^T \textbf{x})=\frac{1}{1+e^{-\textbf{θ}^T \textbf{x}}} hθ(x)=g(θTx)=1+e−θTx1
此时输出的h_θ (x)就可以解释为在特征x和参数向量θ的条件下,目标y=1的预测概率。
h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_θ (\textbf{x})=P(y=1|\textbf{x};\textbf{θ}) hθ(x)=P(y=1∣x;θ)
同理,则有 P ( y = 0 │ x ; θ ) = 1 − h θ ( x ) P(y=0│\textbf{x};\textbf{θ})=1-h_θ (\textbf{x}) P(y=0│x;θ)=1−hθ(x)。
所以上述两式可以合并写成:
P ( y = 0 │ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y , y = 0 , 1 P(y=0│\textbf{x};\textbf{θ})=(h_θ (\textbf{x}))^y (1-h_θ (\textbf{x}))^{1-y}, y=0,1 P(y=0│x;θ)=(hθ(x))y(1−hθ(x))1−y,y=0,1
2.3 逻辑回归的“非线性拟合”
注意,和线性回归一样,逻辑回归也可以应用在非线性的样本数据上,只需要和线性回归一样将数据进行适当的处理即可。
3.逻辑回归的几何解释
以二分类问题为例,通常取0.5为阈值,即
y = { 1 , h θ ( x ) ≥ 0.5 0 , h θ ( x ) < 0.5 ⇔ y = { 1 , θ T x ≥ 0 0 , θ T x < 0 y= \begin{cases} 1,& h_θ (x)≥0.5 \\ 0,& h_θ (x)<0.5 \end{cases}⇔ y= \begin{cases} 1,& \textbf{θ}^T \textbf{x}≥0 \\ 0,& \textbf{θ}^T \textbf{x}<0 \end{cases} y={1,0,hθ(x)≥0.5hθ(x)<0.5⇔y={1,0,θTx≥0θTx<0
当特征数不多时(以两个为例),可以根据θ^T x≥0等条件在图上画出该函数对应的函数曲线,该曲线将样本数据分割在两侧,一侧代表一类事物。这个图像曲线就称为决策边界(Decision boundary),其与数据集无关,只与参数向量和目标函数的数学模型构造有关。以下面两图为例:
h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h_θ (x)=g(θ_0+θ_1 x_1+θ_2 x_2 ) hθ(x)=g(θ0+θ1x1+θ2x2)的决策边界 | h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h_θ (x)=g(θ_0+θ_1 x_1+θ_2 x_2+θ_3 x_1^2+θ_4 x_2^2 ) hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)的决策边界 |
4.逻辑回归参数向量θ的选择
4.1 逻辑回归的损失函数
J ( θ ) = { − l o g ( h θ ( x ) ) , i f y = 1 − l o g ( 1 − h θ ( x ) ) , i f y = 0 J(\textbf{θ})= \begin{cases} -log(h_θ (\textbf{x})),&if \quad y=1 \\ -log(1-h_θ (\textbf{x})),&if \quad y=0 \end{cases} J(θ)={−log(hθ(x)),−log(1−hθ(x)),ify=1ify=0
上述损失函数的几何解释很直观了,当目标函数预测的分类结果越偏离正确分类时,损失函数就会得到越大的损失值,以此在参数更新时对参数进行调整。
为什么不能用线性回归的损失函数?
理论解释为,因为损失函数是非凸函数。线性回归的损失函数为 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ) − y ( i ) ) 2 J(\textbf{θ})=\frac{1}{2m}\sum_{i=1}^m(h_θ (\textbf{x})-y^{(i)})^2 J(θ)=2m1∑i=1m(hθ(x)−y(i))2,但此时的 h θ ( x ) h_θ (\textbf{x}) hθ(x)已经不再是 θ T x \textbf{θ}^T \textbf{x} θTx,而是 g ( θ T x ) g(\textbf{θ}^T \textbf{x}) g(θTx)。因此,此时的损失函数已经转变为非凸函数(如下图左),而不再是线性回归的凸函数(如下图右)。所以,非凸函数如果再进行梯度下降的话,只能找到局部最小值,而非全局最小值。
4.2 logistic回归的损失函数的简化
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log h ( x ( i ) ) − ( 1 − y ( i ) ) log ( 1 − h ( x ( i ) ) ) ] J(\textbf{θ})=\frac{1}{m}\sum_{i=1}^m[-y^{(i)}\logh(\textbf{x}^{(i)})-(1-y^{(i)})\log(1-h(\textbf{x}^{(i)})) ] J(θ)=m1i=1∑m[−y(i)logh(x(i))−(1−y(i))log(1−h(x(i)))]
逻辑回归损失函数的理论推导(了解)
极大似然估计简介:最大似然估计的目的就是,利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
假设在每个样本 x ( i ) \textbf{x}^{(i)} x(i)的条件下,能出现真实情况 y ( i ) y^{(i)} y(i)的概率为 P ( y ( i ) ∣ x ( i ) ) P(y^{(i)}|\textbf{x}^{(i)}) P(y(i)∣x(i))。极大似然估计就是寻找一组参数向量θ,使得所有样本出现真实情况的概率的乘积最大。此时的参数向量θ就是我们要寻找的参数。
即 θ = arg max θ ( L ( θ ) = p ( y│X;θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) ) 即\textbf{θ}=\arg\max\limits_\textbf{θ}(L(\textbf{θ})=p(\textbf{y│X;θ})=\prod_{i=1}^m p(y^{(i)} |\textbf{x}^{(i)};\textbf{θ})) 即θ=argθmax(L(θ)=p(y│X;θ)=i=1∏mp(y(i)∣x(i);θ))
由极大似然估计有:
L ( θ ) = p ( y │ X ; θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\textbf{θ})=p(\textbf{y}│\textbf{X};\textbf{θ})=\prod_{i=1}^mp(y^{(i)} |\textbf{x}^{(i)};\textbf{θ})=\prod_{i=1}^m(h_θ (\textbf{x}^{(i)}))^{y^{(i)}} (1-h_θ (\textbf{x}^{(i)}))^{1-y^{(i)}} L(θ)=p(y│X;θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)
取对数似然函数有:
l ( θ ) = log L ( θ ) = ∑ i = 1 m [ y ( i ) log h ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h ( x ( i ) ) ) ] l(\textbf{θ})=\log L(\textbf{θ})=\sum_{i=1}^m[y^{(i)}\logh(\textbf{x}^{(i)})+(1-y^{(i)})\log(1-h(\textbf{x}^{(i)})) ] l(θ)=logL(θ)=i=1∑m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]
由于损失函数顾名思义通常应当是数值越小越好,和极大似然估计正好相反,因此取上述等式的右半边并取负值。另外,再除以样本数m,以获得每个样本的平均损失值(除不除影响都不大)。这里的损失函数,也叫做负对数似然函数(NLL)。
∴ J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log h ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h ( x ( i ) ) ) ] ∴J(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}\logh(\textbf{x}^{(i)})+(1-y^{(i)})\log(1-h(\textbf{x}^{(i)})) ] ∴J(θ)=−m1i=1∑m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]
4.3逻辑回归的梯度下降法
1).逻辑回归的损失函数的梯度计算(了解)
∴ ∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m ∂ ∂ θ j [ y ( i ) log h ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h ( x ( i ) ) ) ] ∴\frac{∂}{∂θ_j}J(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m\frac{∂}{∂θ_j}[y^{(i)}\logh(\textbf{x}^{(i)})+(1-y^{(i)})\log(1-h(\textbf{x}^{(i)})) ] ∴∂θj∂J(θ)=−m1i=1∑m∂θj∂[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]
∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m [ ( y ( i ) 1 g ( θ T x ( i ) ) − ( 1 − y ( i ) ) 1 1 − g ( θ T x ( i ) ) ) ∂ ∂ θ j g ( θ T x ( i ) ) ] \frac{∂}{∂θ_j}J(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m[(y^{(i)}\frac{1}{g(\textbf{θ}^T \textbf{x}^{(i)})} -(1-y^{(i)} )\frac{1}{1-g(\textbf{θ}^T \textbf{x}^{(i)})} )\frac{∂}{∂θ_j}g(\textbf{θ}^T \textbf{x}^{(i)} )] ∂θj∂J(θ)=−m1i=1∑m[(y(i)g(θTx(i))1−(1−y(i))1−g(θTx(i))1)∂θj∂g(θTx(i))]
∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m [ ( y ( i ) ( 1 − g ( θ T x ( i ) ) − ( 1 − y ( i ) ) g ( θ T x ( i ) ) ) ∂ ( θ T x ( i ) ) ∂ θ j ] \frac{∂}{∂θ_j}J(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m[(y^{(i)}(1-g(\textbf{θ}^T \textbf{x}^{(i)})-(1-y^{(i)} )g(\textbf{θ}^T \textbf{x}^{(i)}))\frac{∂(\textbf{θ}^T \textbf{x}^{(i)})}{∂θ_j}] ∂θj∂J(θ)=−m1i=1∑m[(y(i)(1−g(θTx(i))−(1−y(i))g(θTx(i)))∂θj∂(θTx(i))]
∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m [ ( y ( i ) ( 1 − g ( θ T x ( i ) ) − ( 1 − y ( i ) ) g ( θ T x ( i ) ) ) x j ( i ) ] \frac{∂}{∂θ_j}J(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m[(y^{(i)}(1-g(\textbf{θ}^T \textbf{x}^{(i)})-(1-y^{(i)} )g(\textbf{θ}^T \textbf{x}^{(i)}))x_j^{(i)}] ∂θj∂J(θ)=−m1i=1∑m[(y(i)(1−g(θTx(i))−(1−y(i))g(θTx(i)))xj(i)]
∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \frac{∂}{∂θ_j}J(\textbf{θ})=\frac{1}{m}\sum_{i=1}^m[(h_θ (\textbf{x}^{(i)})-y^{(i)}) x_j^{(i)} ] ∂θj∂J(θ)=m1i=1∑m[(hθ(x(i))−y(i))xj(i)]
与线性回归比较,两者相同吗?
线性回归的 ∂ ∂ θ j J ( θ ) \frac{∂}{∂θ_j}J(\textbf{θ}) ∂θj∂J(θ) | 逻辑回归的 ∂ ∂ θ j J ( θ ) \frac{∂}{∂θ_j}J(\textbf{θ}) ∂θj∂J(θ) |
---|---|
∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \frac{∂}{∂θ_j}J(\textbf{θ})=\frac{1}{m}\sum_{i=1}^m[(h_θ (\textbf{x}^{(i)})-y^{(i)}) x_j^{(i)} ] ∂θj∂J(θ)=m1∑i=1m[(hθ(x(i))−y(i))xj(i)] | ∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \frac{∂}{∂θ_j}J(\textbf{θ})=\frac{1}{m}\sum_{i=1}^m[(h_θ (\textbf{x}^{(i)})-y^{(i)}) x_j^{(i)} ] ∂θj∂J(θ)=m1∑i=1m[(hθ(x(i))−y(i))xj(i)] |
h θ ( x ( i ) ) = θ T x ( i ) h_θ (\textbf{x}^{(i)})=\textbf{θ}^T \textbf{x}^{(i)} hθ(x(i))=θTx(i) | h θ ( x ( i ) ) = g ( θ T x ( i ) ) h_θ (\textbf{x}^{(i)})=g(\textbf{θ}^T \textbf{x}^{(i)}) hθ(x(i))=g(θTx(i)) |
两者看似相同,但是其实h_θ (x^((i) ) )的表达式已经不同了,所以实际上两者的梯度是不相同的。另外,线性回归的梯度是有解析解的(线代的方法直接计算),但是逻辑回归的梯度是没有解析解的,只能用梯度下降法进行计算。
2).逻辑回归的梯度下降法迭代公式
θ : = θ − α ∂ J ( θ ) ∂ θ \textbf{θ}:=\textbf{θ}-α\frac{∂J(\textbf{θ})}{∂\textbf{θ}} θ:=θ−α∂θ∂J(θ)
其中, ∴ ∂ J ( θ ) ∂ θ = [ ∂ J ( θ ) ∂ θ 0 , ∂ J ( θ ) ∂ θ 1 , . . . , ∂ J ( θ ) ∂ θ n ] T ∴\frac{∂J(\textbf{θ})}{∂\textbf{θ}}=[\frac{∂J(\textbf{θ})}{∂θ_0},\frac{∂J(\textbf{θ})}{∂θ_1},...,\frac{∂J(\textbf{θ})}{∂θ_n}]^T ∴∂θ∂J(θ)=[∂θ0∂J(θ),∂θ1∂J(θ),...,∂θn∂J(θ)]T
∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] = 1 m ( 1 1 + e − Xθ − Y ) T X ( : , j ) \frac{∂}{∂θ_j}J(\textbf{θ})=\frac{1}{m}\sum_{i=1}^m[(h_θ (\textbf{x}^{(i)})-y^{(i)}) x_j^{(i)} ] =\frac{1}{m}(\frac{1}{1+e^{-\textbf{Xθ}}}-\textbf{Y})^T\textbf{X}_{(: ,j)} ∂θj∂J(θ)=m1i=1∑m[(hθ(x(i))−y(i))xj(i)]=m1(1+e−Xθ1−Y)TX(:,j)
其中,
X m × n = [ x 0 ( 1 ) x 1 ( 1 ) ⋯ x n ( 1 ) ⋯ ⋯ ⋯ ⋯ x 0 ( m ) x 1 ( m ) ⋯ x n ( m ) ] \textbf{X}_{m×n}=\begin{bmatrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)} \\ \cdots&\cdots&\cdots&\cdots \\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)} \\ \end{bmatrix} Xm×n=⎣⎢⎡x0(1)⋯x0(m)x1(1)⋯x1(m)⋯⋯⋯xn(1)⋯xn(m)⎦⎥⎤
θ = ( θ 0 , θ 1 , … , θ n ) ′ \textbf{θ}=(θ_0, θ_1,…,θ_n)' θ=(θ0,θ1,…,θn)′
X ( : , j ) = ( x j ( 1 ) , x j ( 2 ) , . . . , x j ( m ) ) ′ \textbf{X}_{(: ,j)}=(x_j^{(1)},x_j^{(2)},...,x_j^{(m)})' X(:,j)=(xj(1),xj(2),...,xj(m))′
Y = [ y ( 1 ) y ( 2 ) ⋯ y ( m ) ] \textbf{Y}=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \cdots \\ y^{(m)} \\ \end{bmatrix} Y=⎣⎢⎢⎡y(1)y(2)⋯y(m)⎦⎥⎥⎤
3).逻辑回归的梯度下降法优化
特征缩放、学习率选择等与线性回归的方法相同。
4.4 替代梯度下降法的其他优化算法
共轭梯度法、变尺度法(BFGS)和限制变尺度法(L-BFGS)
特点:不需要选择学习率、通常比梯度下降法快、但是更复杂,调试时需要一定水平。
拓展知识,各种优化算法的原理
Matlab/octave中使用高级优化算法
首先,你需要编写一个函数costFunction。其输入参数是当前系统的参数向量θ,返回参数是当前参数向量θ计算出来的损失值jVal以及对应的梯度向量gradient。
然后,使用costFunction函数,利用库函数optimset和fminunc就可以使用高级优化算法进行优化了。其中,optimset函数的第一个参数就是选择的优化算法的名称;initialTheta是初始化的参数向量。fminunc函数返回的optTheta是迭代后得到的最优参数向量;functionVal是迭代过程的损失值的记录;exitFlag是损失函数是否收敛的标记。
5.逻辑回归的多分类问题
5.1 分治法解决多分类问题(one vs all)
对于K个类别的分类问题,思路很简单,只需要训练多个逻辑回归分类器 h θ ( i ) ( x ) h_θ^{(i)}(\textbf{x}) hθ(i)(x),每个分类器处理一个类别 k i k_i ki的问题:该数据是否属于类别 k i ( i = 1 , 2 , … , K ) k_i(i=1,2,…,K) ki(i=1,2,…,K)。这样,就能将多分类问题转化为多个二分类问题。下图是以3个类别的多分类问题为例的示意图:
5.2 softmax
Softmax回归:
原理与Logistic回归大致相同,只是不只是二分类,而是更多维的分类,假设为K分类问题,则参数矩阵由 θ n → θ K × n θ_n→θ_{K×n} θn→θK×n
概率: | p ( c = k │ x ; θ ) = ( exp ( θ k T x ) ) / ( ∑ i = 1 k exp ( θ i T x ) ) , k = 1 , 2 , … , K p(c=k│x;θ)=(\exp(θ_k^T x))/(\sum_{i=1}^k\exp(θ_i^T x)),k=1,2,…,K p(c=k│x;θ)=(exp(θkTx))/(i=1∑kexp(θiTx)),k=1,2,…,K |
---|---|
似然函数: | L ( θ ) = ∏ i = 1 m ∏ k = 1 K p ( c = k │ x ( i ) ; θ ) y k ( i ) = ∏ i = 1 m ∏ k = 1 K ( exp ( θ k T x ( i ) ) y k ( i ) ) / ( ∑ i = 1 k exp ( θ i T x ( i ) ) L(θ)=\prod_{i=1}^m\prod_{k=1}^Kp(c=k│x^{(i)};θ)^{y_k^{(i)}}=\prod_{i=1}^m\prod_{k=1}^K(\exp(θ_k^T x^{(i)})^{y_k^{(i)}})/(\sum_{i=1}^k\exp(θ_i^T x^{(i)}) L(θ)=i=1∏mk=1∏Kp(c=k│x(i);θ)yk(i)=i=1∏mk=1∏K(exp(θkTx(i))yk(i))/(i=1∑kexp(θiTx(i)) |
对数似然: | J m ( θ ) = ln L ( θ ) = ∑ i = 1 m ∑ k = 1 K ( y k ( i ) θ k T x ( i ) − ln ∑ l = 1 K exp ( θ i T x ( i ) ) J_{m}(θ)=\ln L(θ)=\sum_{i=1}^m\sum_{k=1}^K (y_k^{(i)} θ_k^T x^{(i)}-\ln \sum_{l=1}^K \exp(θ_i^T x^{(i)}) Jm(θ)=lnL(θ)=∑i=1m∑k=1K(yk(i)θkTx(i)−ln∑l=1Kexp(θiTx(i)) \quad J ( θ ) = ∑ k = 1 K y k ( θ k T x − ln ∑ i = 1 K exp ( θ i T x ) ) J(θ)=\sum_{k=1}^K y_k (θ_k^T x-\ln \sum_{i=1}^K \exp (θ_i^T x)) J(θ)=∑k=1Kyk(θkTx−ln∑i=1Kexp(θiTx)) |
随机梯度: | ∂ J ( θ ) ∂ θ k = ( y k − p ( y k │ x ; θ ) ) ⋅ x \frac{∂J(θ)}{∂θ_k}=(y_k-p(y_k│x;θ))·x ∂θk∂J(θ)=(yk−p(yk│x;θ))⋅x |
6.过拟合(Overfitting)与正则化(Regularization)
6.1欠拟合(Underfitting)和过拟合
1).什么是过拟合?什么是欠拟合?
目标函数的数学模型如果阶数太高或太复杂,很容易过拟合。这时,虽然在训练集的样本点上拟合情况很好,但是在未知的测试集里可能效果就很差。这就是过拟合现象。
相反,如果数学模型相对于问题来说太简单,那么在训练集的拟合情况就不好。这种现象就是欠拟合。
2).过拟合会有什么问题?欠拟合呢?
过拟合:对已知的训练集的拟合效果非常好(通常接近100%),但是对未知的测试集效果却很差;
欠拟合:对已知的训练集的拟合效果不好,测试集通常来说效果更差,如果测试集效果好,也是因为运气原因。
3).如何解决过拟合?欠拟合?
I.如果样本具备大量特征,那么通过人工或用其他算法来选择其中有用的特征,抛弃重复或相关性不强的特征,可以改善过拟合现象。当然,如果是欠拟合,那么则需要寻找更多的相关特征,完善模型的搭建;
II.针对过拟合现象,还可以使用正则化的方法,可以保留所有的特征,但是正则化会惩罚参数过大的情况,即避免了某个参数非常大的情况。
6.2正则化
1).什么是正则化?
通过在损失函数中加入正则项,来惩罚系统学习到的模型过于复杂的方法,就是正则化。通俗来说,就是在损失函数中加入某个表达式,该表达式在系统模型越复杂(阶数越高时),或者在系统模型的参数数值越大时,让损失函数的loss越高,以此来避免学习到的模型太复杂而出现过拟合的现象。
2).正则化有什么作用?正则化的分类?
作用:防止系统学习出来的模型出现过拟合的现象。
常用的正则项:
L 1 正 则 ( L 1 − n o r m ) : λ ∑ j = 1 n θ j 2 L_1 正则(L1-norm):λ\sum_{j=1}^nθ_j^2 L1正则(L1−norm):λj=1∑nθj2
L 2 正 则 ( L 2 − n o r m ) : λ ∑ j = 1 n ∣ θ j ∣ ] L_2 正则(L2-norm):λ\sum_{j=1}^n|θ_j |] L2正则(L2−norm):λj=1∑n∣θj∣]
其实,只要根据目标问题的数学模型的特征设计出符合正则化的定义的表达式,就可以设计出自己的正则项。比如, L 2 L_2 L2 正则是针对所有参数的正则化,避免出现任一参数过大。如果只需要避免其中某个参数 θ j θ_j θj过大,那么只需要加入正则项 λ θ j 2 λθ_j^2 λθj2即可。通常规定,正则化不惩罚 θ 0 θ_0 θ0。λ是超参数,可以自行根据情况调节。
3).如何进行正则化?
注意,加入正则化不会导致损失函数变成非凸函数。
I.线性回归的正则化
R i d g e 回 归 : J ( θ ) = 1 2 m ∑ i = 1 m [ ( θ T x ( i ) − y ( i ) ) 2 ] + λ ∑ j = 1 n θ j 2 Ridge回归:J(\textbf{θ})=\frac{1}{2m} \sum_{i=1}^m[(\textbf{θ}^T\textbf{x}^{(i)}-y^{(i)} )^2 ] +λ\sum_{j=1}^nθ_j^2 Ridge回归:J(θ)=2m1i=1∑m[(θTx(i)−y(i))2]+λj=1∑nθj2
L a s s o 回 归 : J ( θ ) = 1 2 m ∑ i = 1 m [ ( θ T x ( i ) − y ( i ) ) 2 ] + λ ∑ j = 1 n ∣ θ j ∣ Lasso回归:J(\textbf{θ})=\frac{1}{2m} \sum_{i=1}^m[(\textbf{θ}^T\textbf{x}^{(i)}-y^{(i)} )^2 ]+λ\sum_{j=1}^n|θ_j | Lasso回归:J(θ)=2m1i=1∑m[(θTx(i)−y(i))2]+λj=1∑n∣θj∣
正则化后的梯度下降法:
θ 0 = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) , ∵ 正 则 化 通 常 不 惩 罚 θ 0 θ_0=θ_0-α\frac{1}{m}\sum_{i=1}^m(h_θ (x^{(i)})-y^{(i)}) x_0^{(i)},∵正则化通常不惩罚θ_0 θ0=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i),∵正则化通常不惩罚θ0
θ j = θ j − α 1 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ) + λ θ j ] = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ_j=θ_j-α\frac{1}{m} [\sum_{i=1}^m(h_θ (x^{(i)})-y^{(i)}) x_0^{(i)})+λθ_j ]=θ_j (1-α\frac{λ}{m})-α\frac{1}{m}\sum_{i=1}^m(h_θ (x^{(i)})-y^{(i)})x_0^{(i)} θj=θj−αm1[i=1∑m(hθ(x(i))−y(i))x0(i))+λθj]=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))x0(i)
其中,j=1,2,…n。通常来说, α λ m α\frac{λ}{m} αmλ是非常接近于0的。
加入正则项后,直接用线性代数的方法求损失函数极值的解析解为:
θ = ( X T X + λ I ) − 1 X T Y \textbf{θ}=(\textbf{X}^T \textbf{X}+λ\textbf{I})^{-1} \textbf{X}^T \textbf{Y} θ=(XTX+λI)−1XTY
其实上式λI中的I不是标准单位矩阵,而是第一行为0的单位矩阵。
II.逻辑回归的正则化
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(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}\logh(\textbf{x}^{(i)})+(1-y^{(i)})\log(1-h(\textbf{x}^{(i)}))]+\frac{λ}{2m}\sum_{j=1}^nθ_j^2 J(θ)=−m1i=1∑m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]+2mλj=1∑nθj2
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 ∣ J(\textbf{θ})=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}\logh(\textbf{x}^{(i)})+(1-y^{(i)})\log(1-h(\textbf{x}^{(i)}))]+\frac{λ}{2m}\sum_{j=1}^n|θ_j | J(θ)=−m1i=1∑m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]+2mλj=1∑n∣θj∣
正则化后的梯度下降法:
θ 0 = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) , ∵ 正 则 化 通 常 不 惩 罚 θ 0 θ_0=θ_0-α\frac{1}{m}\sum_{i=1}^m(h_θ (x^{(i)})-y^{(i)}) x_0^{(i)},∵正则化通常不惩罚θ_0 θ0=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i),∵正则化通常不惩罚θ0
θ j = θ j − α 1 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ) + λ θ j ] = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ_j=θ_j-α\frac{1}{m} [\sum_{i=1}^m(h_θ (x^{(i)})-y^{(i)}) x_0^{(i)})+λθ_j ]=θ_j (1-α\frac{λ}{m})-α\frac{1}{m}\sum_{i=1}^m(h_θ (x^{(i)})-y^{(i)})x_0^{(i)} θj=θj−αm1[i=1∑m(hθ(x(i))−y(i))x0(i))+λθj]=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))x0(i)
其中,j=1,2,…n。通常来说,α λ/m是非常接近于0的。
梯度计算和线性回归类似,但是要注意两者的 h θ ( x ( i ) ) h_θ (\textbf{x}^{(i)}) hθ(x(i))是不同的。