1.1 分类问题(Classification)的动机和目的
案例:判断邮件是否为垃圾邮件?判断一个交易是否属于诈骗?判断肿瘤是否为良性?
在二值分类(binary classification)的问题中,y只能有两个值,一般是0和1。
如果用线性回归方法处理分类问题,理论上可以采用一个阈值(threshold)作为分界线,高于阈值的设为1,低于阈值的设为0,阈值对应的特征值为决策边界(decision boundary);但一旦出现某点突出地远离它所属分类的区域,会对线性模型造成很大的影响,导致决策边界线的移动,使模型出现很大的偏差。
省流:线性回归法处理分类问题不好用
1.2 逻辑回归(logistic regression)
使用sigmoid公式(sigmoid function/ logistic function),如下公式所示;即为逻辑回归“logistic regression”。
f
(
x
⃗
)
=
g
(
z
⃗
)
=
g
(
w
⃗
⋅
x
⃗
+
b
)
=
1
1
+
e
−
(
w
⃗
⋅
x
⃗
+
b
)
\operatorname{f} \left( {\vec x} \right) = g\left( {\vec z} \right) = g\left( {\vec w \cdot \vec x + b} \right) = \frac{1}{{1 + {e^{ - \left( {\vec w \cdot \vec x + b} \right)}}}}
f(x)=g(z)=g(w⋅x+b)=1+e−(w⋅x+b)1
1.3 决策边界(decision boundary)
sigmoid函数上设定的阈值(threshold):z = 0时,g(z)的值;
决策边界(decision boundary):z = 0时的预测模型的特征图像(直线/曲线);决策边界外的特征点的估计值为1,决策内的特征点的估计值为0。
逻辑回归法可以用于复杂的polynomial高次多项式预测模型,决策边界线也可能是圆等复杂形状;但只要预测模型的每个属性都是一次,那么决策边界就是一条直线。
2.1 逻辑回归中的代价函数
A different Cost Function that will choose better parameters for Logistic Regression.
为什么不能像线性回归那样用均方误差代价函数(Squared Error Cost Function):线性回归模型带入均方误差代价函数后得到的代价函数J是凸函数(convex),因此可以通过梯度下降法获得一个全局最小值使预测的误差与实际值相差最小;而逻辑回归模型带入均方误差代价函数后得到不是凸函数(non-convex),而是波动的有很多局域波峰波谷的J图像,没法使用梯度下降法。
A different Cost Function that can make J function convex again, so the gradient descent can be guaranteed to converge to the global minimum.
代价函数:
J
(
w
⃗
,
b
)
=
1
m
∑
i
=
1
m
L
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
,
y
(
i
)
)
J\left( {\vec w,b} \right) = \frac{1}{m}\sum\limits_{i = 1}^m {L\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right),{y^{(i)}}} \right)}
J(w,b)=m1i=1∑mL(fw,b(x(i)),y(i))
其中的损失函数(Loss Function)调整为:
当
y
(
i
)
=
1
{{y^{(i)}} = 1}
y(i)=1时:
L
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
,
y
(
i
)
)
=
−
log
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
)
L\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right),{y^{(i)}}} \right) = - \log \left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right)} \right)
L(fw,b(x(i)),y(i))=−log(fw,b(x(i)))
当
y
(
i
)
=
0
{{y^{(i)}} = 0}
y(i)=0时:
L
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
,
y
(
i
)
)
=
−
log
(
1
−
f
w
⃗
,
b
(
x
⃗
(
i
)
)
)
L\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right),{y^{(i)}}} \right) = - \log \left( {1 - {f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right)} \right)
L(fw,b(x(i)),y(i))=−log(1−fw,b(x(i)))
原理:由于逻辑回归预测模型的特点是y值只有1和0,当真实y值为1时,如果预测值为0.9,那么与真实值相差不大,在代价函数上可以给予一个相对小的惩罚权重,如果预测值为0.1,那么与真实值相差太大了,就要在代价函数上给予相对大的惩罚权重;根据这个特点,发现log函数在[0,1]区间取值实现从[0,∞)的跃迁的特征,正符合逻辑回归预测模型对其代价函数J的要求,因此在真实y值分为为0和1时取相应的log段对预测误差进行评估。
结果:确保整体的代价函数J时凸函数,可以使用梯度下降法找到全局最小值。
2.2 简化逻辑回归中的代价函数
上一节的损失函数(Loss Function)可以整合为:
L
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
,
y
(
i
)
)
=
−
y
(
i
)
log
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
)
−
(
1
−
y
(
i
)
)
log
(
1
−
f
w
⃗
,
b
(
x
⃗
(
i
)
)
)
L\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right),{y^{(i)}}} \right) = - {y^{(i)}} \log \left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right)} \right) - \left( {1 - {y^{(i)}}} \right)\log \left( {1 - {f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right)} \right)
L(fw,b(x(i)),y(i))=−y(i)log(fw,b(x(i)))−(1−y(i))log(1−fw,b(x(i)))
于是代价函数(Cost Function)可以写为:
J
(
w
⃗
,
b
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
f
w
⃗
,
b
(
x
⃗
(
i
)
)
)
]
J\left( {\vec w,b} \right) =- \frac{1}{m}\sum\limits_{i = 1}^m {\left[ { {y^{(i)}}\log \left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right)} \right) + \left( {1 - {y^{(i)}}} \right)\log \left( {1 - {f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right)} \right)} \right]}
J(w,b)=−m1i=1∑m[y(i)log(fw,b(x(i)))+(1−y(i))log(1−fw,b(x(i)))]
这个代价函数的选择的原理,来自于统计学中的最大似然估计(maximum likelihood)。
3.1 实现逻辑回归的梯度下降(gradient descent implement)
现在有了逻辑回归的代价函数J,接下来的梯度下降法便是按照下式对J进行迭代:
w
j
=
w
j
−
α
∂
∂
w
j
J
(
w
⃗
,
b
)
{w_j} = {w_j} - \alpha \frac{\partial }{{\partial {w_j}}}J\left( {\vec w,b} \right)
wj=wj−α∂wj∂J(w,b)
b
=
b
−
α
∂
∂
b
J
(
w
⃗
,
b
)
b = b - \alpha \frac{\partial }{{\partial b}}J\left( {\vec w,b} \right)
b=b−α∂b∂J(w,b)
经过推导发现,逻辑回归的迭代公式和线性回归的公式看起来一样:
w
j
=
w
j
−
α
[
1
m
∑
i
=
1
m
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
]
{w_j} = {w_j} - \alpha \left[ {\frac{1}{m}\sum\limits_{i = 1}^m {\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right) - {y^{(i)}}} \right)} x_j^{\left( i \right)}} \right]
wj=wj−α[m1i=1∑m(fw,b(x(i))−y(i))xj(i)]
b
=
b
−
α
[
1
m
∑
i
=
1
m
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
−
y
(
i
)
)
]
b = b - \alpha \left[ {\frac{1}{m}\sum\limits_{i = 1}^m {\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right) - {y^{(i)}}} \right)} } \right]
b=b−α[m1i=1∑m(fw,b(x(i))−y(i))]
实际上因为线性回归的f函数(预测模型)是纯线性函数,而逻辑回归的f函数sigmoid函数和线性函数的复合函数,所以本质上是不同的。
推导过程参考:https://www.jianshu.com/p/183812bb854d
Same concept:
Monitor gradient descent(learning curve)
Vectorized implementation
Feature scaling
4.1 过拟合(Overfitting)
欠拟合(underfit)——high bias
过拟合(overfit)——high variance
适度拟合——generalization
4.2 解决过拟合(Addressing Overfitting)
- 收集更多的训练数据(Collect more training examples, more data)
- 选择相关度最高的属性(特征)(Select features to include/exclude)
- 正则化(regularization):适度缩小你认为不重要的特征项前面的参数,而非直接删除该属性项/参数设为0;一般改w1~wn,不改b。
4.3 正则化(Regularization)
J
(
w
⃗
,
b
)
=
1
2
m
∑
i
=
1
m
(
f
w
⃗
,
b
(
x
⃗
(
i
)
)
−
y
(
i
)
)
2
+
λ
2
m
∑
j
=
1
n
w
j
2
J\left( {\vec w,b} \right) = \frac{1}{{2m}}{\sum\limits_{i = 1}^m {\left( {{f_{\vec w,b}}\left( {{{\vec x}^{(i)}}} \right) - {y^{(i)}}} \right)} ^2} + \frac{\lambda }{{2m}}\sum\limits_{j = 1}^n {{w_j}^2}
J(w,b)=2m1i=1∑m(fw,b(x(i))−y(i))2+2mλj=1∑nwj2
添加正则化项,其中λ为正则化系数。
4.4 用于线性回归的正则方法(Regularized linear regression)
梯度下降的迭代公式的wj更新。
4.5 用于逻辑回归的正则方法(Regularized logistic regression)
梯度下降的迭代公式的wj更新。