吴恩达机器学习系列内容的学习目录 → \rightarrow →吴恩达机器学习系列内容汇总。
Logistic回归又称Logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。
1. 分类问题
我们讨论的是要预测的变量y是一个离散值情况下的分类问题。
在分类问题中,我们尝试预测的是结果是否属于某一个类。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;判断一个肿瘤是恶性的还是良性的。
我们预测的变量
y
∈
{
0
,
1
}
y\in \left \{ 0,1 \right \}
y∈{0,1},其中 0 表示负类(Negative class),1 表示正类(Positive class)。
Logistic回归算法是一种分类算法,它适用于标签取值离散的情况,它的输出值永远在0到1之间。不推荐将线性回归用于分类问题,线性回归模型的预测值可超越[0,1]范围。
2. 假设表示
对于分类问题,我们需要输出0或1,我们可以预测:
- 当
h
θ
(
x
)
⩾
0.5
h_{\theta }(x)\geqslant 0.5
hθ(x)⩾0.5时,预测
y
=
1
y=1
y=1。
- 当
h
θ
(
x
)
⩽
0.5
h_{\theta }(x)\leqslant 0.5
hθ(x)⩽0.5时,预测
y
=
0
y=0
y=0。
Logistic回归模型的假设函数是 h θ ( x ) = g ( θ T X ) h_{\theta }(x)=g(\theta ^{T}X) hθ(x)=g(θTX) ,其中 X X X代表特征向量, g g g代表Logistic函数。一个常用的Logistic函数为S形函数(Sigmoid function),公式为 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1 ,函数图象如图1所示。
h θ ( x ) h_{\theta }(x) hθ(x)的作用是:对于给定的输入变量 x x x,根据选择的参数计算输出变量 y = 1 y=1 y=1的可能性(estimated probablity),即 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_{\theta }(x)=P(y=1|x;\theta ) hθ(x)=P(y=1∣x;θ),所以有 P ( y = 0 ∣ x ; θ ) + P ( y = 1 ∣ x ; θ ) = 1 P(y=0|x;\theta )+P(y=1|x;\theta )=1 P(y=0∣x;θ)+P(y=1∣x;θ)=1。
3. 决策边界
决策边界分为线性决策边界(Linear decision boundary)和非线性决策边界(Non-linear decision boundary)。
图2为线性决策边界的例子,红色代表正类,蓝色代表负类,其中参数
θ
\theta
θ为向量[-3 1 1],则当
−
3
+
x
1
+
x
2
⩾
0
-3+x_{1}+x_{2}\geqslant0
−3+x1+x2⩾0,即
x
1
+
x
2
⩾
3
x_{1}+x_{2}\geqslant3
x1+x2⩾3时,模型将预测
y
=
1
y=1
y=1 。 我们可以绘制直线
x
1
+
x
2
=
3
x_{1}+x_{2}=3
x1+x2=3,这条线便是我们模型的决策边界,它能将预测为1的区域和预测为0的区域分隔开。
图3为非线性决策边界的例子,其中参数 θ \theta θ为向量[-1 0 0 1 1],则当 − 1 + x 1 2 + x 2 2 ⩾ 0 -1+x_{1}^{2}+x_{2}^{2}\geqslant0 −1+x12+x22⩾0,即 x 1 2 + x 2 2 ⩾ 1 x_{1}^{2}+x_{2}^{2}\geqslant1 x12+x22⩾1时,模型将预测 y = 1 y=1 y=1 。 我们可以绘制圆心在原点且半径为1的圆形 x 1 2 + x 2 2 = 1 x_{1}^{2}+x_{2}^{2}=1 x12+x22=1,它能将预测为1的区域和预测为0的区域分隔开。
决策边界是假设函数的一个属性,我们可以用非常复杂的模型来适应非常复杂形状的决策边界。
4. 代价函数
定义Logistic回归的代价函数为 J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta )=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta }(x^{(i)}),y^{(i)}) J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))
其中 C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) , i f y = 1 − l o g ( 1 − h θ ( x ) ) , i f y = 0 Cost(h_{\theta }(x),y)=\left\{\begin{matrix} -log(h_{\theta}(x)),\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}if\ _{}\ _{}y=1\\ -log(1-h_{\theta}(x)),\ _{}\ _{}\ _{}\ _{}if\ _{}\ _{}y=0 \end{matrix}\right. Cost(hθ(x),y)={−log(hθ(x)), if y=1−log(1−hθ(x)), if y=0
h θ ( x ) h_{\theta }(x) hθ(x)与 C o s t ( h θ ( x ) , y ) Cost(h_{\theta }(x),y) Cost(hθ(x),y)之间的关系如图4所示:
C
o
s
t
(
h
θ
(
x
)
,
y
)
Cost(h_{\theta }(x),y)
Cost(hθ(x),y)函数的特点是:当实际的
y
=
0
y=0
y=0且预测的
h
θ
(
x
)
h_{\theta }(x)
hθ(x)也为0时代价为0,当
y
=
0
y=0
y=0但
h
θ
(
x
)
h_{\theta }(x)
hθ(x)不为0时误差随着
h
θ
(
x
)
h_{\theta }(x)
hθ(x)的变大而变大,如图4中a)所示;当实际的
y
=
1
y=1
y=1且预测的
h
θ
(
x
)
h_{\theta }(x)
hθ(x)也为1时误差为 0,当
y
=
1
y=1
y=1但
h
θ
(
x
)
h_{\theta }(x)
hθ(x)不为1时误差随着
h
θ
(
x
)
h_{\theta }(x)
hθ(x)变小而变大,如图4中b)所示。
C
o
s
t
(
h
θ
(
x
)
,
y
)
Cost(h_{\theta }(x),y)
Cost(hθ(x),y)函数也可以写成如下的式子:
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))
那么 Logisitic回归的代价函数为 J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 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}\sum_{i=1}^{m}Cost(h_{\theta }(x^{(i)}),y^{(i)})=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}\times log(h_{\theta}(x^{(i)}))+(1-y^{(i)})\times log(1-h_{\theta}(x^{(i)}))] J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))=−m1i=1∑m[y(i)×log(hθ(x(i)))+(1−y(i))×log(1−hθ(x(i)))]
5. 梯度下降
为了拟合出参数,我们需要最小化代价函数,找到尽量让
J
(
θ
)
J(\theta)
J(θ)取得最小值的参数
θ
\theta
θ,所用的方法是梯度下降法。
梯度下降法的实现:
R
e
p
e
a
t
{
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
}
(
S
i
m
u
l
t
a
n
e
o
u
s
l
y
u
p
d
a
t
e
a
l
l
θ
j
)
Repeat \left \{ \theta _{j}:=\theta _{j}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)} )x^{(i)}_{j}\right \}\ _{}\ _{}(Simultaneously\ _{}\ _{}update\ _{}\ _{}all\ _{}\ _{}\theta _{j})
Repeat{θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)} (Simultaneously update all θj)
6. 高级优化
一些更高级的优化算法有:共轭梯度法、BFGS 和L-BFGS 等。
- 优点:一个是通常不需要手动选择学习率,它们有一个智能内循环(线性搜索算法),可以自动尝试不同的学习速率 α \alpha α并自动选择一个好的学习速率,它们甚至可以为每次迭代选择不同的学习速率,那么我们就不需要自己选择。还有一个是它们经常快于梯度下降算法。
- 缺点:过于复杂。
7. 多类别分类
如何使用 Logisitic回归来解决多类别分类的问题。
对于一个多类分类问题,我们的数据集看起来可能会像图5中b)所示,而图5中a)是我们之前讨论的二元分类问题的数据集。
我们用3种不同的符号来代表3个类别,如图6所示,可以使用"一对多"方法来进行分类。
现在我们有一个图6所示的训练集,共有3个类别,我们用三角形表示
y
=
1
y=1
y=1 ,方框表示
y
=
2
y=2
y=2,叉表示
y
=
3
y=3
y=3。我们下面要做的就是使用一个训练集,将其分成3个二元分类问题。
我们先从用三角形代表的类别1开始,实际上我们可以创建一个新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类,我们创建一个新的训练集,如图7所示,我们要拟合出一个合适的分类器。
为了能实现这样的转变,我们将多个类别中的一个类标记为正类(
y
=
1
y=1
y=1),然后将其他所有类都标记为负类,这个模型记作
h
θ
(
1
)
(
x
)
h_{\theta }^{(1)}(x)
hθ(1)(x)。接着,类似地第我们选择另一个类标记为正类(
y
=
2
y=2
y=2),再将其它类都标记为负类,将这个模型记作
h
θ
(
2
)
(
x
)
h_{\theta }^{(2)}(x)
hθ(2)(x) ,依此类推。 最后我们得到一系列的模型简记为:
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
,
.
.
.
,
k
i=1,2,...,k
i=1,2,...,k。
最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择可能性最高的输出变量。
在分类时,我们要做的就是训练这个逻辑回归分类器
h
θ
(
i
)
(
x
)
h_{\theta }^{(i)}(x)
hθ(i)(x), 其中
i
i
i对应每一个可能的
y
=
i
y=i
y=i。最后为了做出预测,我们给出输入一个新的
x
x
x值,用这个值做预测。我们要做的就是在我们三个分类器里面输入
x
x
x,然后我们选择一个让
h
θ
(
i
)
(
x
)
h_{\theta }^{(i)}(x)
hθ(i)(x)最大的
i
i
i,即
max
i
h
θ
(
i
)
(
x
)
\max_{i}h_{\theta }^{(i)}(x)
imaxhθ(i)(x)