1. 基本思想

  在线性回归内容的讲解中,主要建立了多元自变量与因变量之间的线性关系,即多个输入与对应输出的关系。比较常见的线性回归模型如下:
hΘ(x)=Θ0+Θ1x1+Θ2x2++Θnxn h_\Theta(x)=\Theta_0+\Theta_1x_1+\Theta_2x_2+\cdots+\Theta_nx_n

  正如在线性回归中经常提到的例子,根据一个人的工资和年龄情况预测其在某银行的贷款额度,又比如根据房屋的位置、面积、楼层以及采光等属性预测房价。

  然而这里要提到的逻辑回归却与之不同,逻辑回归这个叫法主要来源于Logistic Regression,作为机器学习的经典算法之一,虽然名字叫回归,但其实是一个经典的二分类算法。

  依然举个例子来形象地说明一下,通过分析年龄、性别、体质指数、平均血压、疾病指数等指标,判断一个人是否患糖尿病,Y=0表示未患病,Y=1表示患病。可以看出,这里最终的输出结果只有两个,包括0和1,因此不能再像线性回归一样,通过函数模型预测所得到的连续值来预测因变量Y(只能取0或1)。

  在讲解逻辑回归之前,我们首先介绍一个函数(sigmoid函数):
(1)g(z)=11+ez g(z)=\frac{1}{1+e^{-z}}\tag{1}

  直接看这个函数,可能会觉得还挺复杂的,不容易理解,别着急,我们先来一起看看他的函数图像( Fig.1)。
机器学习经典算法(2)-逻辑回归

Fig.1. Sigmoid Function

  可以看出,其自变量的取值范围为[,+][-\infty,+\infty],值域的范围为[0,1][0,1]。这一下是不是就明白多了,此函数的意义就是把任意的输入映射到[0,1][0,1]区间。在二分类任务以及机器学习的很多经典算法中,都有可能用到sigmoid函数,只要记住这幅图,在使用的过程中,自然很容易就想清楚了。

  另外补充一点,在分析机器学习算法时,可能还要考虑很多的情况,比如sigmoid函数可能会出现梯度消失或者梯度爆炸,从而影响整个训练过程难以收敛等问题,这个不作为我们这部分的重点,有兴趣可以浏览我的这篇博客(待更新链接)。

  回到本文来,引入这个函数之后,我们要用来干什么呢?

  回想一下,在线性回归中,我们可以通过多个特征属性(变量)得到一个预测值。然而,在逻辑回归中,我们只需要将该值映射到sigmoid函数上,这样就将原来的值映射到[0,1][0,1]区间了,也可以看成完成了由值到概率的转换,然后通过设定合适的阈值,从而完成整个分类任务。

  到现在,逻辑回归的基本思想算是交代清楚了,那么接下来,我们需要着重考虑的是如何建立模型?如何训练模型?又如何设定阈值?

2. 模型建立

  首先,根据刚刚我们引入的sigmoid函数,我们可以写出我们的预测函数
(2)hΘ(x)=g(ΘTx)=11+eΘTx h_\Theta(x)=g(\Theta^Tx)=\frac{1}{1+e^{-\Theta^Tx}}\tag{2}

  其中,(这里的ΘTx\Theta^Tx与线性回归中的内容是类似的)
(3)Θ0+Θ1x1+Θ2x2++Θnxn=i=1nΘixi=ΘTx \Theta_0+\Theta_1x_1+\Theta_2x_2+\cdots+\Theta_nx_n=\sum_{i=1}^n\Theta_ix_i=\Theta^Tx\tag{3}

  以上两个公式其实就是将式(3)计算出来的值映射到式(2)sigmoid函数上,从而完成预测值到概率的转换。

  得到预测函数后,再来看我们的这个逻辑回归问题。换句话再强调一遍,我们的做法是,先算出在满足相应特征属性xx的情况下,其对应类别(y=1y=1y=0y=0)的概率值,然后通过设定的阈值(第4部分有讲解,不用着急),进行最终的分类。

  相当于我们求出的hΘ(x)h_\Theta(x)为一个概率值,其范围在[0,1][0,1]区间,由于逻辑回归是个二分类问题,那么在给定xx的情况下,y=1y=1y=0y=0的概率公式可如下表示

(4)P(y=1x;Θ)=hΘ(x) P(y=1|x;\Theta)=h_\Theta(x)\tag{4}

(5)P(y=0x;Θ)=1hΘ(x) P(y=0|x;\Theta)=1-h_\Theta(x)\tag{5}

  整合式(4)和式(5)可得
(6)P(yx;Θ)=(hΘ(x))y(1hΘ(x))1y P(y|x;\Theta)=(h_\Theta(x))^y(1-h_\Theta(x))^{1-y}\tag{6}

  我们分析一下整合出来的式(6),对于二分类任务(0,1),在该式中,若y=0y=0,则只保留了(1hΘ(x))(1-h_\Theta(x)),若y=1y=1,则只保留了hΘ(x)h_\Theta(x),因此式(6)和式(4)、(5)表达的是一个意思。

3. 模型训练

  由以上模型建立,我们得到了关于y(i)y^{(i)}的条件概率p(y(i)x(i);Θ)p(y^{(i)}|x^{(i)};\Theta),这里要使得预测值更接近于真实值,即条件概率p(y(i)x(i);Θ)p(y^{(i)}|x^{(i)};\Theta)越大越好。

  我们假设用于训练的样本为mm个,那么可通过找到最大似然估计,得到最优的解。

  首先我们写出似然函数
L(Θ)=i=1mp(yixi;Θ)=i=1m(hΘ(xi))yi(1hΘ(xi))1yi L(\Theta)=\prod _{i=1}^{m}p(y_i|x_i;\Theta)=\prod _{i=1}^{m}(h_\Theta(x_i))^{y_i}(1-h_\Theta(x_i))^{1-y_i}

  由于似然函数中包含了累乘,计算过程是很复杂的,这里将其转换为对数似然,做这样的处理似然函数的单调性并无影响,却大大改善了其计算复杂度。对数似然函数如下
l(Θ)=logL(Θ)=i=1m(yiloghΘ(xi)+(1yi)log(1hΘ(xi))) l(\Theta)=logL(\Theta)=\sum_{i=1}^m(y_ilogh_\Theta(x_i)+(1-y_i)log(1-h_\Theta(x_i)))

  在这里,我们需要找到的是最大似然估计,那么可以将应用梯度上升求最大值,引入J(Θ)=1ml(Θ)J(\Theta)=-\frac{1}{m}l(\Theta)转换为梯度下降任务。这里的1m\frac{1}{m}主要是之前考虑了所有样本,在这里将其平均(还要改正)

  对上式求导,数学功底还行的可以仔细看看下面的推导过程,要是数学比较弱,干脆直接用最后的结果:
δδΘjJ(Θ)=1mi=1m(yi1hΘ(xi)δδΘjhΘ(xi)(1yi)11hΘ(xi)δδΘjhΘ(xi))=1mi=1m(yi1g(ΘTxi)(1yi)11g(ΘTxi))δδΘjg(ΘTxi)=1mi=1m(yi1g(ΘTxi)(1yi)11g(ΘTxi))g(ΘTxi)(1g(ΘTxi))δδΘjΘTxi=1mi=1m(yi(1g(ΘTxi))(1yi)g(ΘTxi))xij=1mi=1m(yig(ΘTxi))xij=1mi=1m(hΘ(xi)yi)xij \begin{aligned} \frac{\delta}{\delta_{\Theta_j}}J(\Theta)&=-\frac{1}{m}\sum_{i=1}^m(y_i\frac{1}{h_\Theta(x_i)}\frac{\delta}{\delta_{\Theta_j}}h_\Theta(x_i)-(1-y_i)\frac{1}{1-h_\Theta(x_i)}\frac{\delta}{\delta_{\Theta_j}}h_\Theta(x_i)) \\ &=-\frac{1}{m}\sum_{i=1}^m(y_i\frac{1}{g(\Theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\Theta^Tx_i)})\frac{\delta}{\delta_{\Theta_j}}g(\Theta^Tx_i)\\ &=-\frac{1}{m}\sum_{i=1}^m(y_i\frac{1}{g(\Theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\Theta^Tx_i)})g(\Theta^Tx_i)(1-g(\Theta^Tx_i))\frac{\delta}{\delta_{\Theta_j}}\Theta^Tx_i\\ &=-\frac{1}{m}\sum_{i=1}^m(y_i(1-g(\Theta^Tx_i))-(1-y_i)g(\Theta^Tx_i))x_i^j\\ &=-\frac{1}{m}\sum_{i=1}^m(y_i-g(\Theta^Tx_i))x_i^j\\ &=\frac{1}{m}\sum_{i=1}^m(h_\Theta(x_i)-y_i)x_i^j \end{aligned}

  这里的xijx_i^j是地ii个样本的第jj个特征属性值,对应这里的Θj\Theta_j

  接下来对参数进行更新,即梯度下降中沿着最快的方向(梯度方向)走一步,α\alpha为学习率,在这里相当于控制了梯度下降的步长:
Θj=ΘjαδδΘjJ(Θ)=Θjα1mi=1m(hΘ(xi)yi)xij \Theta_j=\Theta_j-\alpha\frac{\delta}{\delta_{\Theta_j}}J(\Theta)=\Theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\Theta(x_i)-y_i)x_i^j

  经过多轮的迭代训练,整个过程收敛,得到最优的Θ\Theta值。

4. 阈值选择

  阈值的选择并没有一个固定过的标准,一般看来,选择中间值0.5,即概率为50%,比较合适。但是在某些任务中显得并不那么合适,比如在前面的例子中,预测患糖尿病,如果将阈值设为0.5,那么对于小于50%却非常接近50%的概率患了糖尿病的人,却被诊断为未患糖尿病。若是将阈值设置为0.3,那么有30%的概率,就诊断为患病,这对整个病的预防效果也是很好的。

相关文章: