Logistic回归虽然被称为“回归”,但是它是一个“分类”算法,用在预测值为离散值 0 0 0或 1 1 1的情况下。
当有一个分类问题时,用什么方程去表示该问题对应的假设?
Logistic Regression Model 想要 0 ≤ h θ ( x ) ≤ 1 0\leq h_\theta(x)\leq1 0≤hθ(x)≤1。令 h θ ( x ) = g ( θ T x ) h_\theta(x)=g(\theta^Tx) hθ(x)=g(θTx),其中 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1称为Sigmoid函数或Logistic函数。Sigmoid函数的图像如图所示:
假设函数 h θ ( x ) h_\theta(x) hθ(x)输出的解释: h θ ( x ) = h_\theta(x)= hθ(x)= estimated probability that y = 1 y=1 y=1 on input x x x,即 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=P(y=1|x;\theta) hθ(x)=P(y=1∣x;θ),因为 y y y只能取值 0 0 0或 1 1 1,所以 P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y=0|x;\theta)=1-h_\theta(x) P(y=0∣x;θ)=1−hθ(x)。
注:上述的 θ = ( θ 0 , θ 1 , ⋯ , θ n ) T , x = ( x 0 , x 1 , ⋯ , x n ) , x 0 = 1 \theta=(\theta_0,\theta_1,\cdots,\theta_n)^T,x=(x_0,x_1,\cdots,x_n),x_0=1 θ=(θ0,θ1,⋯,θn)T,x=(x0,x1,⋯,xn),x0=1。
假设预测 y = 1 y=1 y=1,如果 h θ ( x ) ≥ 0.5 h_\theta(x)\geq0.5 hθ(x)≥0.5;预测 y = 0 y=0 y=0,如果 h θ ( x ) < 0.5 h_\theta(x)<0.5 hθ(x)<0.5。由Sigmoid函数, g ( z ) ≥ 0.5 ⟺ z ≥ 0 , g ( z ) < 0.5 ⟺ z < 0 g(z)\geq0.5\iff z\geq0,g(z)<0.5\iff z<0 g(z)≥0.5⟺z≥0,g(z)<0.5⟺z<0 其中 z z z是关于 x , θ x,\theta x,θ的函数 z ( x , θ ) z(x,\theta) z(x,θ),比如6.1, z ( x , θ ) = θ T x z(x,\theta)=\theta^Tx z(x,θ)=θTx。 z ( x , θ ) = 0 z(x,\theta)=0 z(x,θ)=0被称为决策边界。
注: z ( x , θ ) z(x,\theta) z(x,θ)可以是多项式。决策边界不是训练集的属性,而是假设本身及其参数的属性。
对于线性回归: J ( θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{m}\sum_{i=1}^m\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=m1∑i=1m21(hθ(x(i))−y(i))2。令 C o s t ( h θ ( x ( i ) ) , y ( i ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 Cost(h_\theta(x^{(i)}),y^{(i)})=\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 Cost(hθ(x(i)),y(i))=21(hθ(x(i))−y(i))2。
注:其实所有回归的代价函数都可写成 J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)}),y^{(i)}) J(θ)=m1∑i=1mCost(hθ(x(i)),y(i))的形式。
如果直接使用逻辑回归的假设函数替代线性回归中的假设函数,则 J ( θ ) J(\theta) J(θ)是非凸的。所以,希望构造一个 C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)使得 J ( θ ) J(\theta) J(θ)是凸的。对于逻辑回归,令 C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) , if y = 1 − l o g ( 1 − h θ ( x ) ) , if y = 0 Cost(h_\theta(x),y)= \begin{cases} -log(h_\theta(x)),&\text{if }y=1 \\ -log(1-h_\theta(x)),&\text{if }y=0 \end{cases} Cost(hθ(x),y)={−log(hθ(x)),−log(1−hθ(x)),if y=1if y=0 则该 C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)使得 J ( θ ) J(\theta) J(θ)是凸的。
由6.6知, J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)}),y^{(i)}) J(θ)=m1∑i=1mCost(hθ(x(i)),y(i)), C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) , if y = 1 − l o g ( 1 − h θ ( x ) ) , if y = 0 Cost(h_\theta(x),y)=\begin{cases} -log(h_\theta(x)),&\text{if }y=1\\-log(1-h_\theta(x)),&\text{if }y=0 \end{cases} Cost(hθ(x),y)={−log(hθ(x)),−log(1−hθ(x)),if y=1if y=0,
可以将 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)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)) Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x)) 则 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}^mCost(h_\theta(x^{(i)}),y^{(i)})=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})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)))]
利用梯度下降算法最小化 J ( θ ) J(\theta) J(θ),有 θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta) θj:=θj−α∂θj∂J(θ)。对于 h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+e−θTx1,有 ∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial\theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} ∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i)在求解时,可以把上述所有的 θ j \theta_j θj 组成向量求解。
注:第四章提到过的特征缩放和调整学习率也可以用在这。
就是提了除了梯度下降法最小化代价函数外,还有其它更好的方法来优化代价函数,比如共轭梯度法、BFGS、L-BFGS。这些都可以在数值优化的书上找到。
本文介绍了一个简单的使用逻辑回归解决多类别分类问题,该算法称为“一对多”的分类算法。
Idea:对于有着 n n n个分类的多分类问题 { y = i } i = 1 n \{y=i\}_{i=1}^n {y=i}i=1n,学习 n n n个逻辑回归分类器 { h θ i ( x ) = P ( y = i ∣ x ; θ ) } i = 1 n \{h_\theta^i(x)=P(y=i|x;\theta)\}_{i=1}^n {hθi(x)=P(y=i∣x;θ)}i=1n。在训练 h θ i ( x ) h_\theta^i(x) hθi(x)时,相当于是一个二分类,把 y = i y=i y=i看做 y = 1 y=1 y=1,其它训练样本看作 y = 0 y=0 y=0。
对于新输入的 x x x,做预测时,选择使得 h θ i ( x ) h_\theta^i(x) hθi(x)最大的 i i i,即 max i h θ i ( x ) \mathop{\max}\limits_{i}h_\theta^i(x) imaxhθi(x)。