逻辑回归
广义线性模型。
原理
输入
训练集数据 T = ( x 1 , y 1 ) . . . ( x M , y M ) T = {(x_1,y_1) ... (x_M,y_M)} T=(x1,y1)...(xM,yM), x i ∈ X ⊆ R n x_i \in \mathcal{X} \subseteq R^n xi∈X⊆Rn, y i ∈ Y ⊆ R K y_i \in \mathcal{Y} \subseteq R^K yi∈Y⊆RK,二分类 y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi∈{ −1,+1}
损失函数 C o s t ( y , f ( x ) ) Cost(y,f(x)) Cost(y,f(x))
学习速率 α \alpha α, β \beta β
输出
逻辑回归模型 f ^ ( x ) \hat f(x) f^(x)
判断函数候选
单位阶跃函数
不连续并且不充分光滑
对数概率函数 Sigmoid
y = 1 1 + e − z y = \frac{1}{1+e^{-z}} y=1+e−z1
z = w T x + b z = w^Tx+b z=wTx+b
如果将y视为样本x作为正例的可能性,则1-y是反例可能性,两者的比值y/(1-y)称为几率,反映了x作为正例的相对可能性。上式是在用线性回归模型的预测结果去逼近真实标记的对数几率。
我们可以通过极大似然法来估计w和b。
l ( w , b ) = ∑ i = 1 M l n p ( y i ∣ x i ; w , b ) l(w,b) = \sum_{i=1}^M ln p(y_i | x_i;w,b) l(w,b)=∑i=1Mlnp(yi∣xi;w,b)
P w ( y = j ∣ x ) = e x p ( x T w ( j ) ) ∑ k = 1 K e x p ( x T w ( k ) ) P_w(y=j|x) = \frac{exp(x^Tw^{(j)})}{\sum_{k=1}^{K}exp(x^Tw^{(k)})} Pw(y=j∣x)=∑k=1Kexp(xTw(k))exp(xTw(j))
损失函数
c o s t = − y l o g ( p ^ ) − ( 1 − y ) l o g ( 1 − p ^ ) cost = -ylog(\hat{p}) - (1-y)log(1-\hat{p}) cost=−ylog(p^)−(1−y)log(1−p^).
我们之所以使用对数概率函数而不是MSE的原因:(1)对数概率函数是一个凸函数;(2) 当误差较大时,对数概率函数可以提供较大的更新。
推导w的MLE。
w ∗ = a r g m a x x P ( Y ∣ X ) = a r g m a x w ∏ i = 1 M P ( Y i ∣ x i ) = a r g m a x w ∑ i = 1 M l o g P ( Y i ∣ x i ) = a r g m a x w ∑ i = 1 M [ y i l o g p 1 + ( 1 − y i ) l o g p 0 ] w^* = argmax_x P(Y|X) \\\\ = argmax_w \prod_{i=1}^{M} P(Y_i|x_i) \\\\ = argmax_w \sum_{i=1}^{M} log P(Y_i|x_i) \\\\ = argmax_w \sum_{i=1}^{M} [y_i log p_1 + (1-y_i) log p_0] \\\\ w∗=argmaxxP(Y∣X)=argmaxwi=1∏MP(Yi∣xi)=argmaxwi=1∑MlogP(Yi∣xi)=argmaxwi=1∑M[yilogp1+(1−yi)logp0]
算法
逻辑回归算法
-
随机初始化 θ \theta θ
-
计算 θ j + 1 = θ j − α 1 m ∑ i = 1 m x i [ h ( x i ) − y i ] \theta_{j+1} = \theta_{j} - \alpha\frac{1}{m}\sum_{i=1}^{m}x_i[h(x_i)-y_i] θj+1=θj−αm1∑i=1mxi[h(xi)−yi]
-
迭代
在迭代求解时使用高效的优化算法,如LBFGS、信赖域算法。这些求解方法是基于批量处理的,无法高效处理超大规模的数据集,也无法对线上模型进行快速实时更新。
随机梯度下降(SGD)是另一种优化方法,比如google的FTRL算法。
FTRL算法
-
对于 i ∈ { i ∼ d } i\in\{i \sim d\} i∈{ i∼d},初始化 z i = 0 , n i = 0 z_i = 0, n_i = 0 zi=0,ni=0
-
对样本t = 1 to T,
-
计算 x t + 1 , i = { 0 , i f ∣ z t , i ∣ ≤ λ 1 − ( β + n i α + λ 2 ) − 1 ( z t , i − s i g n ( z t , i ) λ 1 ) , o t h e r w i s e x_{t+1,i} = \left\{\begin{aligned} &0 ,&if |z_{t,i}| \leq \lambda_1 \\\ & -(\frac{\beta+\sqrt{n_i}}{\alpha}+\lambda_2)^{-1}(z_{t,i} - sign(z_{t,i})\lambda_1),& otherwise\end{aligned}\right. xt+1,i=⎩⎨⎧ 0,−(αβ+ni+λ2)−1(zt,i−sign(zt,i)λ1),if∣zt,i∣≤λ1otherwise
-
计算 p t = σ ( x t w ) p_t = \sigma(x_tw) pt=σ(xtw),使用label函数和预测值 p t p_t pt迭代
-
对于i
g i = ( p t − y t ) x i g_i = (p_t - y_t)x_i gi=(pt−yt)xi
σ i = 1 α ( n i + g i 2 − n i ) \sigma_i = \frac{1}{\alpha}(\sqrt{n_i + g_i^2} - \sqrt{n_i}) σi=α1(ni+gi2−ni)
z i = z i + g i − σ i w t , i z_i = z_i + g_i - \sigma_iw_{t,i} zi=zi+gi−σiwt,i
n i = n i + g i 2 n_i = n_i +g_i^2 ni=ni+gi2
-
-
迭代
建议 β \beta β取1。
Reference
- 《美团机器学习实践》by美团算法团队,第三章
- 《机器学习》by周志华,第三、四章
- 白板推导系列,shuhuai007