参考资料:
1.线性回归不适合分类问题
- 受噪声影响太大
如图,增加额外样本(异常值)导致拟合效果变差: J ( θ ) J(θ) J(θ)增加
2.逻辑回归(Logistic Regression)
- 假设函数
h
θ
(
x
)
:
h_\theta(x):
hθ(x):
LR是一种分类算法,假设函数 h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_θ(x)=g(\theta^Tx)=\frac{1}{1+e^{-θ^Tx}} hθ(x)=g(θTx)=1+e−θTx1,其中g函数为sigmod函数(也称Logistic函数),可以因变量
的区间压缩至 ( 0 , 1 ) (0,1) (0,1)。
从概率角度看,假设函数也可以表示为: P ( y ( i ) = 1 ) = 1 1 + e − θ T x P(y^{(i)}=1)=\frac{1}{1+e^{-θ^Tx}} P(y(i)=1)=1+e−θTx1;化简得: θ T x = l n P ( y ( i ) = 1 ) 1 − P ( y ( i ) = 1 ) \theta^Tx=ln\frac{P(y^{(i)}=1)}{1-P(y^{(i)}=1)} θTx=ln1−P(y(i)=1)P(y(i)=1),我们把 P 1 − P \frac{P}{1-P} 1−PP记为发生比(odds);可以看出,通过概率表达式 P ( y ( i ) = 1 ) P(y^{(i)}=1) P(y(i)=1),我们将线性函数 θ T x \theta^Tx θTx转化为了概率。
由上图可知,当 θ T x ≥ 0 θ^Tx≥0 θTx≥0时, h θ ( x ) ≥ 0.5 h_θ(x)≥0.5 hθ(x)≥0.5, y = 1 y=1 y=1 - 决策边界Decision Boundary:
是假设的属性(由参数θ决定),而非训练集的属性。即一个假设对应一个决策边界。如下图, h θ ( x ) h_\theta(x) hθ(x)对应的决策边界为品红色的线。
- 若仍使用线性回归的代价函数
J
(
θ
)
L
i
n
e
a
r
J(\theta)_{Linear}
J(θ)Linear:
线性回归的代价函数 J ( θ ) J(θ) J(θ)并不适合logistic regression,因为假设函数 h θ ( x ) = 1 1 + e − θ T x h_θ(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+e−θTx1的高度非线性
导致在 m i n i m i z e J ( θ ) minimizeJ(\theta) minimizeJ(θ)的过程中难以找到全局最优点;如左图(not-convex意为非凸
)
- 合适的损失函数
J
(
θ
)
L
R
J(\theta)_{LR}
J(θ)LR:
因为非凸性导致我们难以找到全局最优点,所以我们的想法就是将非凸函数
转化为凸函数
。如图,我们分别考虑 y = 1 y=1 y=1和 y = 0 y=0 y=0的情况:
当 y = 1 y=1 y=1时,若 h θ ( x ) → 1 h_θ(x)→1 hθ(x)→1,则表明预测正确,令代价为0;
而当 h θ ( x ) → 0 h_θ(x)→0 hθ(x)→0时,预测错误,我们给他一个很大的Cost作为惩罚;
当 y = 0 y=0 y=0时,同理。
我们将 y = 1 y=1 y=1和 y = 0 y=0 y=0的函数写在一起,得到了LR的成本函数:
成 本 函 数 C o s t ( h θ ( x ) , y ) L R = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) 成本函数Cost(h_θ(x),y)_{LR}=-ylog(h_θ(x))-(1-y)log(1-h_θ(x)) 成本函数Cost(hθ(x),y)LR=−ylog(hθ(x))−(1−y)log(1−hθ(x))
∴代价函数: J ( θ ) L R = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) L R = − 1 m ∑ i = 1 m [ y ( i ) l n ( h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ] (1-1) J(θ)_{LR}=\frac{1}{m}\sum_{i=1}^{m}Cost(h_θ(x^{(i)}),y^{(i)})_{LR}\tag{1-1}=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}ln(h_θ(x^{(i)})+(1-y^{(i)})ln(1-h_θ(x^{(i)}))] J(θ)LR=m1i=1∑mCost(hθ(x(i)),y(i))LR=−m1i=1∑m[y(i)ln(hθ(x(i))+(1−y(i))ln(1−hθ(x(i)))](1-1)
因为预测概率和真实概率最接近时,损失函数LL取最小值,所以公式(1-1)可以看成两个概率分布之间的距离,在学术上称为交叉熵
,常用于分类问题
;
公式(1-1)也可以表示为:
对 数 损 失 函 数 / 交 叉 熵 L L = − 1 m ∑ i = 1 m [ y ( i ) l n ( h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ] 对数损失函数/交叉熵LL=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}ln(h_θ(x^{(i)})+(1-y^{(i)})ln(1-h_θ(x^{(i)}))] 对数损失函数/交叉熵LL=−m1i=1∑m[y(i)ln(hθ(x(i))+(1−y(i))ln(1−hθ(x(i)))] - 从概率角度看交叉熵:
还是使用上文中简单的案例:0-1分类问题;
我们知道在逻辑回归中, h θ ( x ) h_\theta(x) hθ(x)的本质是概率值
,所以我们用p表示 p y = 1 = h θ ( x ) = 1 1 + e − θ T x p_{y=1}=h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} py=1=hθ(x)=1+e−θTx1,且 p y = 0 = 1 − p p_{y=0}=1-p py=0=1−p;
所以第i个样本的概率分布函数可以表示为:
P ( y ( i ) ∣ x ( i ) ) = { p , y ( i ) = 1 1 − p , y ( i ) = 0 P(y^{(i)}|x^{(i)})=\begin{cases} p & ,y^{(i)}=1 \\ 1-p & ,y^{(i)}=0 \end{cases} P(y(i)∣x(i))={p1−p,y(i)=1,y(i)=0
我们可以把上式简化为: P ( y ( i ) ∣ x ( i ) ) = p y ( i ) ∗ ( 1 − p ) 1 − y ( i ) P(y^{(i)}|x^{(i)})=p^{y^{(i)}}*(1-p)^{1-y^{(i)}} P(y(i)∣x(i))=py(i)∗(1−p)1−y(i),注意上标(i)表示属于第i个样本
,而 p y p^{y} py则表示正常的p的y次方
;
所以全体样本的分布(即似然函数)为: P 总 = ∏ i = 1 m [ p y ( i ) ∗ ( 1 − p ) 1 − y ( i ) ] P_{总}=\prod_{i=1}^{m}[p^{y^{(i)}}*(1-p)^{1-y^{(i)}}] P总=∏i=1m[py(i)∗(1−p)1−y(i)]
取对数(因为我们要求代价函数的最值,转化为ln函数方便计算)得:
对 数 似 然 函 数 : l n ( P 总 ) = l n ( ∏ i = 1 m [ p y ( i ) ∗ ( 1 − p ) 1 − y ( i ) ] ) = ∑ i = 1 m [ y ( i ) l n ( p ) + ( 1 − y ( i ) ) l n ( 1 − p ) ] 对数似然函数:ln(P_{总}) = ln(\prod_{i=1}^{m}[p^{y^{(i)}}*(1-p)^{1-y^{(i)}}])=\sum_{i=1}^{m}[y^{(i)}ln(p)+(1-y^{(i)})ln(1-p)] 对数似然函数:ln(P总)=ln(i=1∏m[py(i)∗(1−p)1−y(i)])=i=1∑m[y(i)ln(p)+(1−y(i))ln(1−p)]
令 J ( θ ) = − 1 m l n ( P 总 ) J(\theta)=-\frac{1}{m}ln(P_{总}) J(θ)=−m1ln(P总),所以最大化似然估计即
令代价函数
最小;
PS:值得注意的是,即使没有明确的定义,在这里我们也令代价函数
= J ( θ ) J(\theta) J(θ),成本函数
= C o s t ( h θ ( x ( i ) ) , y ( i ) ) Cost(h_\theta(x^{(i)}),y^{(i)}) Cost(hθ(x(i)),y(i)),且 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(θ)=m1∑i=1mCost(hθ(x(i)),y(i))。 - 逻辑回归的梯度下降Gradient descent for Logistic:
逻辑回归的梯度下降和Linear的很相似,即:
θ j : = θ j − α ∂ J ( θ ) ∂ θ \theta_j:=\theta_j-α\frac{∂J(\theta)}{∂\theta} θj:=θj−α∂θ∂J(θ) - 多分类问题:
转化为多个二分类,训练完成之后选择 m a x i ( h θ ( i ) ( x ) ) max_i(h_θ^{(i)}(x)) maxi(hθ(i)(x)),对应的分类即为预测的分类:
3.随机梯度下降(Stochastic Gradient descent)
- 前面我们知道梯度下降的公式为:
θ
j
:
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
\theta_j:=\theta_j-α\frac{\partial J(\theta)}{\partial \theta_j}
θj:=θj−α∂θj∂J(θ)
因为: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ)=\frac{1}{2m}\sum_{i=1}^m(h_θ(x^{(i)})-y^{(i)})^2 J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2,
所以上式还可以表示为:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 x j ( i ) \theta_j:=θ_j-α\frac{1}{m}\sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)})^2x_j^{(i)} θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))2xj(i)
其中向量 ∂ J ( θ ) ∂ θ j \frac{\partial J(\theta)}{\partial \theta_j} ∂θj∂J(θ)称为梯度
。
而当样本数量m很大时,如果采用批量梯度下降(即使用全部数据)
的方法来更新参数 θ \theta θ,则需要很长的时间来计算 J ( θ ) J(\theta) J(θ)。为了加速这一过程,我们考虑随机梯度下降的方法: - 思想:
假设我们有m个数据点(样本),随机选取
若干个数据点,如 x ( 1 ) , x ( 2 ) . . . x ( n ) ( n < < m ) x^{(1)},x^{(2)}...x^{(n)}(n<<m) x(1),x(2)...x(n)(n<<m)(为了简化,这里我们用 x ( n ) x^{(n)} x(n)表示数据点,而非 ( x ( n ) , y ( n ) ) (x^{(n)},y^{(n)}) (x(n),y(n)));
之后我们用这n个数据点的梯度的平均值
来估计损失函数的梯度,即用 1 n ∑ j = 1 n ∂ J ( θ ) ∂ θ j \frac{1}{n}\sum_{j=1}^{n}\frac{\partial J(\theta)}{\partial \theta_j} n1∑j=1n∂θj∂J(θ)来代替 1 m ∑ j = 1 m ∂ J ( θ ) ∂ θ j = ∂ J ( θ ) ∂ θ \frac{1}{m}\sum_{j=1}^{m}\frac{\partial J(\theta)}{\partial \theta_j}=\frac{\partial J(\theta)}{\partial \theta} m1∑j=1m∂θj∂J(θ)=∂θ∂J(θ)。
另外,我们也可以通过循环运算来提高可信度。
4.逻辑回归应用建议
4.1 优缺点
- 优点:
- 抗噪声干扰能力强;
- 可以用正则项来避免过拟合;
- 缺点:
- 容易欠拟合;
- 只能处理二分类问题;
- 必须线性可分。