Logistic Regression
逻辑回归(Logistic regression)是一种分类算法,名字包含regression是由于历史原因。
Sigmod function和Logistic function基本上是一回事。特点是函数值取值范围在[0,1]之间。
函数如下:
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1联合Hypothesis函数:
h θ ( x ) = g ( Θ T x ) h_{\theta}(x)=g(\Theta^Tx) hθ(x)=g(ΘTx)可以得到:
h θ ( x ) = 1 1 + e − Θ T x h_\theta(x)=\frac{1}{1+e^{-\Theta^Tx}} hθ(x)=1+e−ΘTx1训练过程就是用训练集不断拟合 Θ \ThetaΘ参数。
Hypothesis函数的输出,就是对于输入x的一个预测概率。
对于二分类问题:
Hypothesis函数的输出是,对于每一个输入特征x,分类结果y属于类别1的概率,这个概率是h关于 Θ \ThetaΘ的函数。
类似的
h θ ( x ) = P ( y = 0 ∣ x ; Θ ) h_\theta(x) = P(y=0|x;\Theta) hθ(x)=P(y=0∣x;Θ)表示,对于输入特征x,分类结果y属于类别0的概率。
上述两种分类的概率和应该是1。
Hypothesis函数
Hypothesis函数即假设函数。
要判断类别属于0还是1,需要一个决策边界(Decision boundary)
将Hypothesis函数展开,可以得到一下公式(举个例子):
h θ ( x ) = g ( Θ 0 + Θ 1 x 1 + Θ 2 x 2 ) h_\theta(x) = g(\Theta_0+\Theta_1x_1+\Theta_2x_2) hθ(x)=g(Θ0+Θ1x1+Θ2x2)因此,实际上,使用训练集训练的过程,就是在用输入张量x和张量 θ \thetaθ 进行矩阵乘法,然后计算loss。为了使loss最小,需要不断调整张量 θ \thetaθ 的值,这就是拟合的过程。
决策边界是Hypothesis函数的属性,不是训练集的属性。一旦Hypothesis函数的 Θ \ThetaΘ参数确定,就有了确定的决策边界。
为了能够处理更复杂的分类,我们必须让决策边界变得更复杂,办法就是给函数g增加多项式。
前面
g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) g(\theta_0+\theta_1x_1+\theta_2x_2) g(θ0+θ1x1+θ2x2)的决策边界是直线,如果我们需要决策边界是一个圆形,那么就需要拓展多项式,如下所示:
g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2) g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)以此类推,我们可以得到更加复杂的决策边界。也就是说更加复杂的决策边界需要更加高阶的多项式。
Logistic regression的损失函数
训练的过程就是拟合 Θ \ThetaΘ参数的过程。
首先需要定义loss function(cost function)。
损失函数是关于
Θ
\ThetaΘ的函数,表示成
J
(
Θ
)
J(\Theta)J(Θ)。
损失函数的选择非常多样,比如可以参考线性回归定义一个简单的函数,用这个函数来度量损失:
C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ) − y ) 2 Cost(h_\theta(x),y)=\frac{1}{2}(h_\theta(x)-y)^2 Cost(hθ(x),y)=21(hθ(x)−y)2这是一个方差函数。
但是对于逻辑回归(Logistic regression),这个函数很容易造成 J ( Θ ) J(\Theta)J(Θ)成为一个非凸函数。这也就意味着,损失函数肯能存在非常多的局部最优值,这样就无法使用梯度下降算法求得全局最优。
注:
非凸函数,举个例子,笑脸改成波浪线。
所以,选取一个合适的损失函数是很关键的。
定义好了损失函数,我们需要让损失函数最小,比如使用梯度下降的方法。当损失最小的时候,我们就确定了 Θ \ThetaΘ参数,也就确定了决策边界。这个降低loss,调整 Θ \ThetaΘ参数的过程,就是拟合(fitting)。
对于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 ) = − y log ( h θ ( x ) ) − ( 1 − y ) log ( 1 − h θ ( x ) ) Cost(h_\theta(x),y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x)) Cost(hθ(x),y)=−ylolog(hθ(x))−(1−y)lolog(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 ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] \begin{aligned} 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)}\log h_\theta(x^{(i)})+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))] \end{aligned} J(Θ)=m1i=1∑mCost(hθ(x(i)),y(i))=−m1[i=1∑my(i)lologhθ(x(i))+(1−y(i))lolog(1−hθ(x(i)))]这个式子是从统计学的极大似然概率得来的。
它有一个很好的性质,它是凸函数。
梯度下降最小化损失函数
为了拟合 Θ \ThetaΘ参数,我们需要让 J ( Θ ) J(\Theta)J(Θ)最小,我们采用梯度下降(Gradient Descent)。
我们需要对 J ( Θ ) J(\Theta)J(Θ)求关于 θ \thetaθ的偏导数。也就是整个过程需要计算以下两项:
J ( Θ ) J(\Theta) J(Θ) σ σ θ j J ( Θ ) \frac{\sigma}{\sigma\theta_j}J(\Theta) σθjσJ(Θ)那么梯度下降的过程就是,循环计算:
θ j : = θ j − α σ σ θ j J ( Θ ) \theta_j:=\theta_j-\alpha\frac{\sigma}{\sigma\theta_j}J(\Theta) θj:=θj−ασθjσJ(Θ)其中, α \alphaα 就是 学习率(learning rate) 。
注:
- 除了梯度下降能够最小化损失函数,也还有其他算法