逻辑回归(logistic regression)是分类算法的一种,通过形成决策边界,达到对数据进行分类的效果。

算法思想

逻辑回归中,以二分类为例,最终预测得到的是一个分类,也就是0或者1。若目标函数hθ=θ0+θ1x1+θ2x2+...+θnxnh_θ=θ_0+θ_1x_1+θ_2x_2+...+θ_nx_n,最终得到的值,往往不可能刚好是0或者1,因此我们需要做一个映射,使得目标分数在刚好映射到0和1。这里用到一个新的函数g(z)=11+ezg(z)=\frac{1}{1+e^{-z}},该函数为Sigmoid函数,它的图像如下:
【机器学习算法推导】逻辑回归
可以发现,该函数在x无穷大时,函数值趋近于1,x无穷小时,函数值趋近于0,这符合我们的模型。并且,函数在x=0时,函数值为0.5,我们恰好可以x=0为界,将x大于0的输入值预测为1,将x小于0的输入值预测为0。
g(z)=ddz11+ez=ez(1+ez)2=1(1+ez)(111+ez)=g(z)(1g(z))\begin{aligned}g^{'}(z) &=\frac{d}{dz}\frac{1}{1+e^{-z}}\\ &=\frac{e^{-z}}{(1+e^{-z})^2}\\ &=\frac{1}{(1+e^{-z})}(1-\frac{1}{1+e^{-z}})\\ &=g(z)(1-g(z)) \end{aligned}

因此,我们的目标函数变为hθ(x)=g(θTx)=11+eθTxh_θ(x)=g(θ^Tx)=\frac{1}{1+e^{-θ^Tx}},此时的hθ(x)h_θ(x)相当于对于新输入样本预测为1的概率。当一组θ确定时,其函数图像也能够确定下来,此时的函数图像被称为“决策边界”,比如hθ(x)=θ0+θ1x1+θ2x2h_θ(x)=θ_0+θ_1x_1+θ_2x_2的一个决策边界可能是x1+2x2=0x_1+2x_2=0,这时候决策边界大于0的一边,也就是输入新样本使得x1+2x20x_1+2x_2\geq 0被划分为分类“1”,x1+2x2<0x_1+2x_2<0的一边被划分为分类“0”。
那么如何确定合适的θ来确定生成决策边界呢?我们选取合适的损失函数
cost(hθ(x),y)={log(hθ(x))y=1log(1hθ(x))y=0cost(h_θ(x),y)=\begin{cases} -log(h_θ(x)) & y=1 \\ -log(1-h_θ(x)) & y=0 \end{cases}
log(hθ(x))-log(h_θ(x))的函数图像如下:
【机器学习算法推导】逻辑回归
log(1hθ(x))-log(1-h_θ(x))的函数图像如下:
【机器学习算法推导】逻辑回归
对于y=1的情况,从图像上可以发现,当我们的预测值为1的代价为0,当我们的预测值接近0时,被赋予极高的代价惩罚。
对于y=0的情况,从图像上可以发现,当我们的预测值为0的代价为0,当我们的预测值接近1时,被赋予极高的代价惩罚。
这符合我们的对损失函数的直观感受,并且为了方便计算,我们进一步将损失函数统一合并成以下的形式:
cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))cost(h_θ(x),y)=-ylog(h_θ(x))-(1-y)log(1-h_θ(x))
因此对于整个函数的损失函数,我们定义为
J(θ)=1m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J(θ)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))]
最后使用我们的老朋友——梯度下降算法求解该损失函数,就可以求出最佳的θ使得代价最小,从而得到我们想要的决策边界。

损失函数推导

输入x分类结果为类别1的概率为P(y=1x;θ)=hθ(x)P(y=1|x;\theta)=h_\theta(x)
输入x分类结果为类别0的概率为P(y=0x;θ)=1hθ(x)P(y=0|x;\theta)=1-h_\theta(x)
两个表达式合并为P(yx;θ)=(hθ(x))y(1hθ(x))1yP(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

极大似然估计

极大似然估计目的是利用已知的样本结果,反推出导致当前结果的最大概率的参数值。极大似然估计基于这样一种现象:假如有两个箱子,一个箱子里面有1颗黑球999颗白球,另一个箱子里面有999颗黑球1颗白球,并告诉你现在取出一颗黑球,问黑球是从哪个箱子取出来的。从第一印象来判断,我们肯定会觉得是有999颗黑球的箱子取出来的可能性比较大,并且也符合我们的经验事实。这便是“极大似然”的由来。
构造似然函数L(θ)\mathcal{L} (\theta),求解使得样本概率最大的θ\theta值:
L(θ)=p(yX;θ)=i=1mp(y(i)x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)\begin{aligned}\mathcal{L} (\theta) &=p(\vec y|X;\theta)\\ &=\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)\\ &=\prod_{i=1}^m(h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}} \end{aligned}
L(θ)L(\theta)取对数得
l(θ)=logL(θ)=i=1my(i)logh(x(i))+(1y(i))log(1h(x(i)))\begin{aligned} \mathcal{l}(\theta) &=log\mathcal{L}(\theta) \\ & = \sum_{i=1}^my^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)})) \end{aligned}
对取得的l(θ)\mathcal{l}(\theta)求偏导,得
θjl(θ)=(y1g(θTx)(1y)11g(θTx))θjg(θTx)=(y1g(θTx)(1y)11g(θTx))g(θTx)(1g(θTx))θjθTx=(y(1g(θTx))(1y)g(θTx))xj=(yhθ(x))xj\begin{aligned} \frac{∂}{∂\theta_j}\mathcal{l}(\theta) &=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})\frac{∂}{∂\theta_j}g(\theta^Tx) \\ &=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})g(\theta^Tx) (1-g(\theta^Tx))\frac{∂}{∂\theta_j}\theta^Tx\\ &=(y(1-g(\theta^Tx))-(1-y)g(\theta^Tx))x_j\\ &=(y-h_\theta(x))x_j \end{aligned}
对于似然函数,本来我们应该是使用梯度上升的方法求出似然函数的最大值,但是我们可以对其做一点处理,将其变为梯度下降,用梯度下降的方法来求解。
定义损失函数J(θ)=1ml(θ)J(\theta)=-\frac{1}{m}\mathcal{l}(\theta),得
θjJ(θ)=1mi=1m(hθ(x(i))y(i))x(i)\frac{∂}{∂\theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}
最终得到θ\theta的迭代公式为
θj:=θjα1mi=1m(hθ(x(i))y(i))x(i)\theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}

多分类问题

对于多分类问题,如何使用逻辑回归来解决呢?实际上,我们可以将其看成是多个二分类任务,我们可以构造这样的分类器,他们分别划分分类i和非分类i,因此对于一个三分类任务来说,就有4个这样的分类器,每个分类器识别出其中1种类型,而将其他三种类型视为同一种。这样的话,我们只需要训练4个分类器,并在新样本到来的时候,将4个分类器运行一遍,将其中预测值最大的那个分类器对应的分类作为我们的预测值即可。

相关文章:

  • 2021-10-09
  • 2021-10-15
  • 2021-10-15
  • 2021-09-30
  • 2021-10-15
  • 2018-03-13
猜你喜欢
  • 2021-10-15
  • 2021-10-09
  • 2021-09-07
  • 2021-09-17
  • 2021-10-19
  • 2021-08-21
  • 2021-10-15
  • 2021-11-29
相关资源
相似解决方案