逻辑回归(Logistic Regression)
1.分类(Classification)
在分类问题中,需要预测的结果是有限的离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。本课先介绍二元分类问题,再介绍多元分类。
- 垃圾邮件判断
- 金融欺诈判断
- 肿瘤诊断
以肿瘤诊断问题图形来说明分类和线性回归的区别:
肿瘤诊断问题的目的是预测是否为恶性肿瘤,如上图品红色拟合直线,使用线性预测函数
(排除最右边样本“偏差项”);若规定
h
θ
≥
0.5
h_\theta\ge0.5
hθ≥0.5,预测为
y
=
1
y=1
y=1, 代表良性肿瘤("+")
h
θ
≤
0.5
h_\theta\le0.5
hθ≤0.5,预测为
y
=
0
y=0
y=0, 代表恶性肿瘤("-")
即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果
y
y
y。
接下来加入最右边的样本,线性回归算法需要调整成蓝色直线,如果继续以0.5为阈值那么有些恶性肿瘤就会被判断成良性,对于预测准确性要求高的场景,这种情况是不能接受的。
而且线性回归算法的值域是全体实数集,但是分类结果是有限的离散数值,当
h
θ
(
x
)
h_\theta(x)
hθ(x)取值大于1之后的数值没有意义。
区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即 h θ ( x ) ∈ ( 0 , 1 ) h_\theta(x)\isin(0,1) hθ(x)∈(0,1)。
【思考】
那应该用什么样的预测函数,损失函数还能用平方损失函数吗?请思考一下,后文介绍。
2.假设函数表示(Hypothesis Representation)
为了使
h
θ
(
x
)
∈
(
0
,
1
)
h_\theta(x)\isin(0,1)
hθ(x)∈(0,1),引入逻辑回归模型,定义假设函数:
h
θ
(
x
)
=
g
(
z
)
=
1
1
+
e
−
z
h_\theta(x)=g(z)=\frac{1}{1+e^{-z}}
hθ(x)=g(z)=1+e−z1
z
=
θ
T
x
z=\theta^Tx
z=θTx
其中
g
g
g表示逻辑函数,
h
θ
h_\theta
hθ是线性回归函数,复合起来称为逻辑回归函数。
逻辑函数是
S
S
S型函数,会将所有实数映射到
(
0
,
1
)
(0,1)
(0,1)区间,sigmoid函数是逻辑函数的特例。
用 sigmoid 函数,得到逻辑回归模型:
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=g(θTx)=1+e−θTx1
逻辑回归模型中, h θ ( x ) h_\theta(x) hθ(x)的作用是,根据输入的 x x x以及参数 θ \theta θ ,计算得出”输出 y = 1 y=1 y=1 “的概率。以肿瘤诊断为例 h θ ( x ) = 0.7 h_\theta(x)=0.7 hθ(x)=0.7, 表示病人有 70 % 70\% 70%的概率得了恶性肿瘤。
h
θ
(
x
)
=
P
(
y
=
1
∣
x
;
θ
)
=
1
−
P
(
y
=
0
∣
x
;
θ
)
h_\theta(x)=P(y=1|x;\theta)=1-P(y=0|x;\theta)
hθ(x)=P(y=1∣x;θ)=1−P(y=0∣x;θ)
P
(
y
=
1
∣
x
;
θ
)
+
P
(
y
=
0
∣
x
;
θ
)
=
1
P(y=1|x;\theta) + P(y=0|x;\theta)=1
P(y=1∣x;θ)+P(y=0∣x;θ)=1
逻辑函数(logistic function): f ( x ) = L 1 + e − k ( x − x 0 ) f(x)=\frac {L} {1+e^{-k{(x-x_0)}}} f(x)=1+e−k(x−x0)L
A logistic function or logistic curve is a common “S” shape (sigmoid curve), with equation f ( x ) = L 1 + e − k ( x − x 0 ) f(x)=\frac {L} {1+e^{-k{(x-x_0)}}} f(x)=1+e−k(x−x0)L:
x0 = the x-value of the sigmoid’s midpoint,
\enspace L = the curve’s maximum value, and
\enspace k = the logistic growth rate or steepness of the curve
sigmoid 函数: S ( x ) = 1 1 + e − x = e x 1 + e x S(x) = \frac {1} {1+e^{-x}}=\frac {e^{x}}{1+e^{x}} S(x)=1+e−x1=1+exex
A sigmoid function is a mathematical function having a characteristic “S”-shaped curve or sigmoid curve.
Often, sigmoid function refers to the special case of the logistic function shown in the first figure and defined by the formula.A sigmoid function is a bounded, differentiable, real function that is defined for all real input values and has a non-negative derivative at each point函数图像如下
logistic function 和 sigmoid function
只要曲线是 “S”形的函数都是sigmoid function;
满足公式 S ( x ) = 1 1 + e − x = e x 1 + e x S(x) = \frac {1} {1+e^{-x}}=\frac {e^{x}}{1+e^{x}} S(x)=1+e−x1=1+exex的形式的函数都是logistic function
两者的相同点是: 函数曲线都是“S”形
另外造成两个概念混用导致初学者困扰主要是因为一个不成文的约定:
大家都习惯把standard logistic function(即公式 S ( x ) = 1 1 + e − x = e x 1 + e x S(x) = \frac {1} {1+e^{-x}}=\frac {e^{x}}{1+e^{x}} S(x)=1+e−x1=1+exex)称为sigmoid function,
因此在没有特殊说明的情况下,文献资料或讲课中提到的‘sigmoid function’都是指公式 S ( x ) = 1 1 + e − x = e x 1 + e x S(x) = \frac {1} {1+e^{-x}}=\frac {e^{x}}{1+e^{x}} S(x)=1+e−x1=1+exex对应的函数。
3.决策边界(Decision Boundary)
决策边界的概念,帮助我们从图形上直观的理解逻辑回归模型的作用,即离散的类分属于用决策边界隔开的的那块区域。
在逻辑回归中,有假设函数
h
θ
(
x
)
=
g
(
z
)
=
g
(
θ
T
x
)
h_\theta(x)=g(z)=g(\theta^Tx)
hθ(x)=g(z)=g(θTx)。
sigmoid函数图形如下
仍以0.5为阈值:
h
θ
(
x
)
≥
0.5
→
y
=
1
h_\theta(x) \ge0.5 \to y=1
hθ(x)≥0.5→y=1
h
θ
(
x
)
≤
0.5
→
y
=
0
h_\theta(x) \le0.5 \to y=0
hθ(x)≤0.5→y=0
观察图形可得,
g
(
z
)
≥
0.5
g(z)\ge 0.5
g(z)≥0.5时,有
z
≥
0
z\ge0
z≥0,即
θ
T
x
≥
0
\theta^Tx\ge0
θTx≥0,带入
θ
和
x
\theta 和 x
θ和x 可以得到决策边界。
同线性回归模型的不同点在于:
z
→
+
∞
,
  
⟹
  
g
(
z
)
=
1
z\to+\infin,\implies g(z)=1
z→+∞,⟹g(z)=1
z
→
−
∞
,
  
⟹
  
g
(
z
)
=
0
z\to-\infin,\implies g(z)=0
z→−∞,⟹g(z)=0
举一个例子:
h
θ
(
x
)
=
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
)
h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2)
hθ(x)=g(θ0+θ1x1+θ2x2)是下面图形的假设函数
根据上面的讨论,要进行分类,那么只要
θ
0
+
θ
1
x
1
+
θ
2
x
2
≥
0
\theta_0+\theta_1x_1+\theta_2x_2\ge0
θ0+θ1x1+θ2x2≥0时,就预测
y
=
1
y=1
y=1,即预测为正向类。
如果取
θ
=
\theta=
θ=
[
−
3
1
1
]
\begin{bmatrix} -3\\ 1\\ 1 \end{bmatrix}
⎣⎡−311⎦⎤,则有
z
=
−
3
+
x
1
+
x
2
z=-3+x_1+x_2
z=−3+x1+x2,
z
≥
0
z\ge0
z≥0,即
x
1
+
x
2
≥
3
x_1+x_2\ge3
x1+x2≥3,绘制图中品红色的直线即决策边界,用红叉标出的是正向类表示
y
=
1
y=1
y=1的分类预测结果。
上面讨论了逻辑回归模型中线性拟合的例子,下面则是一个多项式拟合的例子,和线性回归中的情况也是类似的。为了拟合下图数据,建模多项式假设函数:
h
θ
(
x
)
=
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
θ
3
x
1
2
+
θ
4
x
2
2
)
h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2)
hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)
这里取
θ
=
[
−
1
0
0
1
1
]
\theta=\begin{bmatrix}-1\\ 0\\ 0\\ 1\\ 1 \end{bmatrix}
θ=⎣⎢⎢⎢⎢⎡−10011⎦⎥⎥⎥⎥⎤,决策边界对应一个处于原点的单位圆
(
x
1
2
+
x
2
2
=
1
)
(x_1^2+x_2^2=1)
(x12+x22=1),下图品红色的曲线为决策边界
决策边界的形状跟随
θ
\theta
θ变化,可能是不同的形状。
决策边界就是分类的分界线,分类现在实际就由
z
z
z(中的
θ
\theta
θ)决定。
4.代价函数(Cost Function)
本课中Convex Function指凸函数
对于实数集上的凸函数,一般的判别方法是求它的二阶导数,如果其二阶导数在区间上非负,就称为凸函
数。如果其二阶导数在区间上恒大于0,就称为严格凸函数。
在决策边界中,直接给出了
θ
\theta
θ值,用图形化做了表示。那我们怎么知道
θ
\theta
θ的取多少呢?和线性回归思路一样,通过求代价函数
J
(
θ
)
J(\theta)
J(θ)的最小值。
如果直接套用线性回归中的平方损失函数:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中
h
θ
(
x
)
=
g
(
θ
T
x
)
h_\theta(x)=g(\theta^Tx)
hθ(x)=g(θTx),绘制逻辑回归代价函数曲线如下图:
对比线性回归中的平方损失函数(下图),可以看到是一个二次凸函数,定义域内局部最小点就是全局最小点。这样使用梯度下降算法就能找出唯一的
θ
\theta
θ,但对比逻辑回归中的代价函数曲线,有很多局部最小值点,使用梯度下降算法求最小值时,取到的是局部最小值,不能确定是不是全局最小值(首先局部最小值的取得决定于初始
θ
\theta
θ的取值,如果不能穷举所有的初值,有可能不能取到所有的局部最小值,就不能从局部最小值 比较得出全局最小值)。
我们需要更换损失函数,按课程介绍使用对数损失函数,由统计学中的最大似然估计方法推出代价函数
J
(
θ
)
:
J_(\theta):
J(θ):
J
(
θ
)
=
1
m
∑
i
=
1
m
c
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
J (\theta)= \frac{1}{m}\displaystyle\sum_{i=1}^mcost(h_\theta(x^{(i)}),y^{(i)})
J(θ)=m1i=1∑mcost(hθ(x(i)),y(i))
c
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
=
−
l
o
g
(
h
θ
(
x
)
)
i
f
:
y
=
1
cost(h_\theta(x^{(i)}),y^{(i)})=-log(h_\theta(x))\qquad \quad if :y=1
cost(hθ(x(i)),y(i))=−log(hθ(x))if:y=1
c
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
=
−
l
o
g
(
1
−
h
θ
(
x
)
)
i
f
:
y
=
0
cost(h_\theta(x^{(i)}),y^{(i)})=-log(1-h_\theta(x))\quad if :y=0
cost(hθ(x(i)),y(i))=−log(1−hθ(x))if:y=0
J
(
θ
)
J(\theta)
J(θ)函数图像如下:
当训练集的结果为
y
=
1
y=1
y=1时,随着假设函数趋向于1,代价函数减少趋向于0,说明
θ
\theta
θ取值合理,数据拟合很好;如果假设函数此时趋向于0,代价函数值会很大,数据拟合很差,算法会调整(减小)
θ
\theta
θ的取值。
y
=
0
y=0
y=0同理。
[思考] 根据假设函数的不同,怎么选择合适的代价函数;
5.简化的代价函数和梯度下降(Simplified Cost Function and Gradient Descent)
在编程实现逻辑回归梯度下降算法时,使用向量化求代价函数,比使用for循环更简洁。逻辑回归的假设函数和线性回归也有不同,求解代价函数和
θ
\theta
θ如下。
为了简化逻辑回归的代价函数,将
y
=
1
y=1
y=1和
y
=
0
y=0
y=0写成一个式子:
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
y
×
l
o
g
(
h
θ
(
x
)
)
−
(
1
−
y
)
×
l
o
g
(
1
−
h
θ
(
x
)
)
Cost(h_\theta(x),y)=-y\times log(h_\theta(x))-(1-y)\times log(1-h_\theta(x))
Cost(hθ(x),y)=−y×log(hθ(x))−(1−y)×log(1−hθ(x))
代价函数可以写成:
J
(
θ
)
=
−
1
m
∑
(
i
=
1
)
m
[
−
y
(
i
)
×
l
o
g
(
h
θ
(
x
(
i
)
)
)
−
(
1
−
y
(
i
)
)
×
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
]
J(\theta)=-\frac{1}{m}\displaystyle\sum_{(i=1)}^m[-y^{(i)}\times log(h_\theta(x^{(i)}))-(1-y^{(i)})\times log(1-h_\theta(x^{(i)}))]
J(θ)=−m1(i=1)∑m[−y(i)×log(hθ(x(i)))−(1−y(i))×log(1−hθ(x(i)))]
向量化:
h
=
g
(
X
θ
)
h=g(X\theta)
h=g(Xθ),
J
(
θ
)
=
1
m
(
−
y
T
l
o
g
(
h
)
−
(
1
−
y
)
T
l
o
g
(
1
−
h
)
)
\quad J(\theta)=\frac {1}{m}(-y^Tlog(h)-(1-y)^Tlog(1-h))
J(θ)=m1(−yTlog(h)−(1−y)Tlog(1−h))
求最优化的
θ
\theta
θ,使用梯度下降算发:
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
a
g
e
n
c
e
:
repeat until converagence:
repeatuntilconveragence:
{
\{
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J{(\theta)}
θj:=θj−α∂θj∂J(θ)
}
\}
}
解得:
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
a
g
e
n
c
e
:
repeat until converagence:
repeatuntilconveragence:
{
\{
{
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
)
x
j
(
i
)
f
o
r
j
=
0
,
1
,
.
.
.
,
n
\theta_j:=\theta_j-\alpha\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)}))x_j^{(i)}\qquad for\quad j=0,1,...,n
θj:=θj−αm1i=1∑m(hθ(x(i)−y(i)))xj(i)forj=0,1,...,n
}
\}
}
虽然形式上梯度下降算法同线性回归一样,但其中的假设函数不同,
h
θ
(
x
)
=
g
(
θ
T
x
)
h_\theta(x)=g(\theta^Tx)
hθ(x)=g(θTx),不过求导后的结果也相同。
向量化实现:
θ
:
=
θ
−
α
m
X
T
(
g
(
X
θ
)
−
y
)
\theta:=\theta-\frac{\alpha}{m}X^T(g(X\theta)-y)
θ:=θ−mαXT(g(Xθ)−y)
6.进阶优化(Advanced Optimization)
运行梯度下降算法,能得到代价函数的最优值,除了使用梯度下降算法外,我们还可以使用其他更复杂、但效率更高的最优化算法。使用这些算法的时候,需要提供代价函数
J
θ
J_\theta
Jθ及其偏导数。
高级算法与梯度下降算法相比,不需要要手动选择学习效率
α
\alpha
α,通常效率更高,但是实现复杂,开源库的效率需要测试。
一些最优化算法:
-
梯度下降法(Gradient Descent)
-
共轭梯度算法(Conjugate gradient)
-
牛顿法和拟牛顿法(Newton’s method & Quasi-Newton Methods)
DFP算法
局部优化法(BFGS)
有限内存局部优化法(L-BFGS) -
拉格朗日乘数法(Lagrange multiplier)
在Octave中使用的Demo: J ( θ ) = ( θ 1 − 5 ) 2 + ( θ 2 − 5 ) 2 J(\theta)=(\theta_1-5)^2+(\theta_2-5)^2 J(θ)=(θ1−5)2+(θ2−5)2,要求参数 θ = [ θ 1 θ 2 ] \theta= \begin{bmatrix} \theta_1& \\ \theta_2& \end{bmatrix} θ=[θ1θ2]
1.创建一个函数以返回代价函数及其偏导数:
function [jVal, gradient] = costFunction(theta)
% code to compute J(theta)
jVal=(theta(1)-5)^2+(theta(2)-5)^2;
% code to compute derivative of J(theta)
gradient=zeros(2,1);
gradient(1)=2*(theta(1)-5);
gradient(2)=2*(theta(2)-5);
end
2.将 costFunction 函数及所需参数传入最优化函数 fminunc,以求解最优化问题:
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
‘GradObj’, ‘on’: 启用梯度目标参数(则需要将梯度传入算法)
‘MaxIter’, 100: 最大迭代次数为 100 次
@xxx: Octave/Matlab 中的函数指针
optTheta: 最优化得到的参数向量
functionVal: 引用函数最后一次的返回值
exitFlag: 标记代价函数是否收敛
7 多类别分类: 一对多(Multiclass Classification: One-vs-all)
多类别问题比如:邮件分类、药物诊断、天气等,这里讨论多类别分类问题(比如天气预报) 。
原理是,转化多类别分类问题为多个二元分类问题,这种方法被称为 One-vs-all。
定义假设函数:
h
θ
(
i
)
(
x
)
=
p
(
y
=
i
∣
x
;
θ
)
h_\theta^{(i)}(x)=p(y=i|x;\theta)
hθ(i)(x)=p(y=i∣x;θ),
i
=
(
1
,
2
,
3
,
.
.
.
,
k
)
i=(1,2,3,...,k)
i=(1,2,3,...,k)
其中:
h
θ
(
i
)
(
x
)
h_\theta^{(i)}(x)
hθ(i)(x):表示
y
y
y属于第
i
i
i个分类的可能性;
k
k
k表示总类别
对于某个样本实例,需要计算
y
y
y取所有
k
k
k个类别的概率大小,然后让它归属于概率最大的那个类。即
y
=
m
a
x
h
θ
(
i
)
(
x
)
y=max \quad h_\theta^{(i)}(x)
y=maxhθ(i)(x)。
正则化(Regularization)
1.过拟合问题(The problem of Overfitting)
假设函数拟合训练集有三种情况:
- 欠拟合(Underfitting)
假设函数无法很好的拟合训练集中的数据,预测值和实际值的误差很大,这种情况是欠拟合或者高偏差。拟合模型选取的特征少了容易出现这种情况。 - 合适的拟合(Just right)
假设函数在训练集和测试集中预测结果都很好。 - 过拟合(Overfitting)
能很好甚至完美的拟合训练集中的数据,即能使 J ( θ ) → 0 J(\theta)\to0 J(θ)→0,但对于不在训练集中的新数据,预测值和实际值会有很大的误差,泛化能力弱,这类情况称为过拟合或者高方差。当拟合模型过于复杂(特征选多了)就容易出现这种情况。
线性模型中的拟合情况
逻辑分类模型中的拟合情况
引用参考1中 偏差和方差的说明
为了度量拟合表现,引入:
- 偏差(bias)
指模型的预测值与真实值的偏离程度。偏差越大,预测值偏离真实值越厉害。偏差低意味着能较好地反应训练集中的数据情况。 - 方差(Variance)
指模型预测值的离散程度或者变化范围。方差越大,数据的分布越分散,函数波动越大,泛化能力越差。方差低意味着拟合曲线的稳定性高,波动小。
据此,我们有对同一数据的各类拟合情况如下图:
据上图,高偏差意味着欠拟合,高方差意味着过拟合。
我们应尽量使得拟合模型处于低方差(较好地拟合数据)状态且同时处于低偏差(较好地预测新值)的状态。
避免过拟合的方法有:
-
减少特征的数量
根据业务手动选取需要保留的特征;
使用模型选择算法来选取合适的特征(如 PCA 算法)
特点:减少特征的方式易丢失有用的特征信息 -
正则化(Regularization)
可以保留所有的参数(许多有用的特征能轻微的影响结果)
减少/惩罚各参数的大小(magnitude),以减轻参数对模型的影响程度
特点:当很多参数对模型有轻微的影响时。正则化方法的表现很好。
2.代价函数(Cost Function)
很多时候由于特征数量过多,过拟合时我们很难选出要保留的特征,这时候应用正则化方法则是很好的选择。
上文中,
θ
0
+
θ
1
x
+
θ
2
x
2
+
θ
3
x
3
+
θ
4
x
4
\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4
θ0+θ1x+θ2x2+θ3x3+θ4x4 这样一个复杂的多项式较易过拟合,在不减少特征的情况下,如果能消除类似于
θ
3
x
3
\theta_3x^3
θ3x3 、
θ
4
x
4
\theta_4x^4
θ4x4 等复杂部分,那复杂函数就变得简单了。
为了保留各个参数的信息,不修改假设函数,改而修改代价函数:
m
i
n
θ
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
2
+
1000
×
θ
3
2
+
1000
×
θ
4
2
)
min_\theta\frac{1}{2m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})^2+1000\times\theta_3^2+1000\times\theta_4^2)
minθ2m1i=1∑m(hθ(x(i)−y(i))2+1000×θ32+1000×θ42)
上式中,我们在代价函数中增加了
θ
3
\theta_3
θ3 、
θ
4
\theta_4
θ4 的惩罚项(penalty term)
1000
×
θ
3
2
+
1000
×
θ
4
2
1000\times\theta_3^2+1000\times\theta_4^2
1000×θ32+1000×θ42,如果要最小化代价函数,那么势必需要极大地减小
θ
3
\theta_3
θ3、
θ
4
\theta_4
θ4,从而使得假设函数中的
θ
3
x
3
\theta_3x^3
θ3x3、KaTeX parse error: Double subscript at position 9: \theta_3_̲4x^4 这两项的参数非常小,就相当于没有了,假设函数也就“变得”简单了,从而在保留各参数的情况下避免了过拟合问题。
根据上面的讨论,有时也无法决定要减少哪个参数,故统一惩罚除了
θ
0
\theta_0
θ0之外的所有参数。
代价函数:
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
J(\theta)=\frac{1}{2m}[\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})^2+ \lambda\displaystyle\sum_{j=1}^n\theta_j^2]
J(θ)=2m1[i=1∑m(hθ(x(i)−y(i))2+λj=1∑nθj2]
λ \lambda λ : 正则化参数(Regularization Parameter), λ > 0 \lambda >0 λ>0
∑ j = 1 n : \displaystyle\sum_{j=1}^n: j=1∑n:不惩罚基础参数 θ 0 \theta_0 θ0
λ ∑ j = 1 n θ j 2 : \lambda\displaystyle\sum_{j=1}^n\theta_j^2: λj=1∑nθj2:正则化项
正则化参数类似于学习速率,也需要我们自行对其选择一个合适的值。
- 过大
导致模型欠拟合(假设可能会变成近乎 x = θ 0 x=\theta_0 x=θ0的直线 )
无法正常去过拟问题
梯度下降可能无法收敛 - 过小
无法避免过拟合(等于没有)
3.线性回归正则化(Regularized Linear Regression)
我们可以将正则化用到线性回归和逻辑回归中,先说明在线性回归中的应用。
应用正则化的线性回归梯度下降算法:
r
e
p
e
a
t
{
repeat\{
repeat{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
x
0
(
i
)
\theta_0:=\theta_0-\alpha\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})x_0^{(i)}
θ0:=θ0−αm1i=1∑m(hθ(x(i)−y(i))x0(i)
θ
j
:
=
θ
j
−
α
[
(
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
x
0
(
i
)
)
)
+
λ
m
θ
j
]
,
j
∈
{
1
,
2
,
.
.
.
,
n
}
\theta_j:=\theta_j-\alpha[(\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})x_0^{(i)}))+\frac\lambda m\theta_j],\qquad j\in\{1,2,...,n\}
θj:=θj−α[(m1i=1∑m(hθ(x(i)−y(i))x0(i)))+mλθj],j∈{1,2,...,n}
}
\}
}
也可以移项得到更新表达式的另一种表示形式
θ
j
:
=
θ
j
(
1
−
α
λ
m
)
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
x
0
(
i
)
\theta_j:=\theta_j(1-\alpha\frac \lambda m)-\alpha\frac 1 m\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})x_0^{(i)}
θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i)−y(i))x0(i)
应用正则化的正规方程法:
θ
=
(
X
T
X
+
λ
.
L
)
−
1
X
T
y
\theta=(X^TX+\lambda \ldotp L)^{-1}X^Ty
θ=(XTX+λ.L)−1XTy
w
h
e
r
e
L
=
[
0
1
1
⋱
1
]
where\quad L=\begin{bmatrix} 0 \\ &1 \\ &&1\\&&&\ddots\\&&&&1\end{bmatrix}
whereL=⎣⎢⎢⎢⎢⎡011⋱1⎦⎥⎥⎥⎥⎤
前文提到正则化可以解决正规方程法中不可逆的问题,即增加了正则化项后,可以保证 X T X + λ . L X^TX+\lambda \ldotp L XTX+λ.L可逆(invertible),即便 X T X X^TX XTX不可逆(non-invertible)。
4.逻辑回归正则化(Regularized Logistic Regression)
给逻辑回归的代价函数添加正则化项:
J
(
θ
)
=
−
1
m
∑
(
i
=
1
)
m
[
−
y
(
i
)
×
l
o
g
(
h
θ
(
x
(
i
)
)
)
−
(
1
−
y
(
i
)
)
×
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
]
+
λ
2
m
∑
j
=
1
n
θ
j
2
J(\theta)=-\frac{1}{m}\displaystyle\sum_{(i=1)}^m[-y^{(i)}\times log(h_\theta(x^{(i)}))-(1-y^{(i)})\times log(1-h_\theta(x^{(i)}))]+ \frac{\lambda}{2m}\displaystyle\sum_{j=1}^n\theta_j^2
J(θ)=−m1(i=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{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
x
0
(
i
)
\theta_0:=\theta_0-\alpha\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})x_0^{(i)}
θ0:=θ0−αm1i=1∑m(hθ(x(i)−y(i))x0(i)
θ
j
:
=
θ
j
−
α
[
(
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
x
0
(
i
)
)
)
+
λ
m
θ
j
]
,
j
∈
{
1
,
2
,
.
.
.
,
n
}
\theta_j:=\theta_j-\alpha[(\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})x_0^{(i)}))+\frac\lambda m\theta_j],\qquad j\in\{1,2,...,n\}
θj:=θj−α[(m1i=1∑m(hθ(x(i)−y(i))x0(i)))+mλθj],j∈{1,2,...,n}
}
\}
}