版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85162547
逻辑回归(logistic regression)是分类算法的一种,通过形成决策边界,达到对数据进行分类的效果。
算法思想
逻辑回归中,以二分类为例,最终预测得到的是一个分类,也就是0或者1。若目标函数
hθ=θ0+θ1x1+θ2x2+...+θnxn,最终得到的值,往往不可能刚好是0或者1,因此我们需要做一个映射,使得目标分数在刚好映射到0和1。这里用到一个新的函数
g(z)=1+e−z1,该函数为Sigmoid函数,它的图像如下:
可以发现,该函数在x无穷大时,函数值趋近于1,x无穷小时,函数值趋近于0,这符合我们的模型。并且,函数在x=0时,函数值为0.5,我们恰好可以x=0为界,将x大于0的输入值预测为1,将x小于0的输入值预测为0。
g′(z)=dzd1+e−z1=(1+e−z)2e−z=(1+e−z)1(1−1+e−z1)=g(z)(1−g(z))
因此,我们的目标函数变为
hθ(x)=g(θTx)=1+e−θTx1,此时的
hθ(x)相当于对于新输入样本预测为1的概率。当一组θ确定时,其函数图像也能够确定下来,此时的函数图像被称为“决策边界”,比如
hθ(x)=θ0+θ1x1+θ2x2的一个决策边界可能是
x1+2x2=0,这时候决策边界大于0的一边,也就是输入新样本使得
x1+2x2≥0被划分为分类“1”,
x1+2x2<0的一边被划分为分类“0”。
那么如何确定合适的θ来确定生成决策边界呢?我们选取合适的损失函数
cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))y=1y=0
−log(hθ(x))的函数图像如下:
−log(1−hθ(x))的函数图像如下:
对于y=1的情况,从图像上可以发现,当我们的预测值为1的代价为0,当我们的预测值接近0时,被赋予极高的代价惩罚。
对于y=0的情况,从图像上可以发现,当我们的预测值为0的代价为0,当我们的预测值接近1时,被赋予极高的代价惩罚。
这符合我们的对损失函数的直观感受,并且为了方便计算,我们进一步将损失函数统一合并成以下的形式:
cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
因此对于整个函数的损失函数,我们定义为
J(θ)=−m1[i=1∑my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
最后使用我们的老朋友——梯度下降算法求解该损失函数,就可以求出最佳的θ使得代价最小,从而得到我们想要的决策边界。
损失函数推导
输入x分类结果为类别1的概率为
P(y=1∣x;θ)=hθ(x)
输入x分类结果为类别0的概率为
P(y=0∣x;θ)=1−hθ(x)
两个表达式合并为
P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y
极大似然估计
极大似然估计目的是利用已知的样本结果,反推出导致当前结果的最大概率的参数值。极大似然估计基于这样一种现象:假如有两个箱子,一个箱子里面有1颗黑球999颗白球,另一个箱子里面有999颗黑球1颗白球,并告诉你现在取出一颗黑球,问黑球是从哪个箱子取出来的。从第一印象来判断,我们肯定会觉得是有999颗黑球的箱子取出来的可能性比较大,并且也符合我们的经验事实。这便是“极大似然”的由来。
构造似然函数
L(θ),求解使得样本概率最大的
θ值:
L(θ)=p(y
∣X;θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)
对
L(θ)取对数得
l(θ)=logL(θ)=i=1∑my(i)logh(x(i))+(1−y(i))log(1−h(x(i)))
对取得的
l(θ)求偏导,得
∂θj∂l(θ)=(yg(θTx)1−(1−y)1−g(θTx)1)∂θj∂g(θTx)=(yg(θTx)1−(1−y)1−g(θTx)1)g(θTx)(1−g(θTx))∂θj∂θTx=(y(1−g(θTx))−(1−y)g(θTx))xj=(y−hθ(x))xj
对于似然函数,本来我们应该是使用梯度上升的方法求出似然函数的最大值,但是我们可以对其做一点处理,将其变为梯度下降,用梯度下降的方法来求解。
定义损失函数
J(θ)=−m1l(θ),得
∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))x(i)
最终得到
θ的迭代公式为
θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))x(i)
多分类问题
对于多分类问题,如何使用逻辑回归来解决呢?实际上,我们可以将其看成是多个二分类任务,我们可以构造这样的分类器,他们分别划分分类i和非分类i,因此对于一个三分类任务来说,就有4个这样的分类器,每个分类器识别出其中1种类型,而将其他三种类型视为同一种。这样的话,我们只需要训练4个分类器,并在新样本到来的时候,将4个分类器运行一遍,将其中预测值最大的那个分类器对应的分类作为我们的预测值即可。