机器学习入门(七)——逻辑回归(上)

1.0 逻辑回归的作用

       用逻辑回归解决分类问题。其原理是将样本的特征样本发生的概率联系起来,即预测的是样本发生的概率是多少。

       逻辑回归算法中,得到的预测值是一个概率,然后在概率的基础上多做一步操作,得到分类的结果。比如某银行使用逻辑回归做风控模型,先设置一个阈值0.5,如果得到它逾期的概率大于0.5,就不放款;否则就放款。对于“放款” or “不放款”来说,实际上是一个标准的分类问题。函数形式为:

       上例可以看出,在回归问题上再多做一步,就可以作为分类算法来使用了。逻辑回归只能解决二分类问题,如果是多分类问题,LR本身是不支持的。

2.0 逻辑回归的数学推导

2.1 引例

       以银行理财产品营销场景为例,对于银行来说,客户只有“买”和“不买”两种行为,但是这个行为实际上是客户在接到营销行为,如电话营销、短信营销之后,经过内心博弈产生的最终结果。博弈过程可以看作是对X=(x_{1}, x_{2},...,x_{k})k个方面进行综合考虑,博弈的结果就是购买产品的效用y,当y>0时,效用为正,客户就会购买产品,y\leq 0时,则不会购买产品。这样就可以选定一组参数\gamma \varepsilon ,通过方程形式来描述整个博弈y=X·\theta  +\varepsilon ,于是就有:

        更进一步将上面的函数转变为求概率,即客户购买理财产品的概率如下:P(y=1)=P(X·\theta +\varepsilon >0)=P(\varepsilon >-X·\theta)=1-P(\varepsilon \leq -X·\theta)=1-F_{\varepsilon}(-X·\theta) ,其中,F_{\varepsilon}是随机变量\varepsilon 的累积分布函数,P(y=1)表示购买行为发生的概率。这个模型在学术上被称作是probit回归。

       由此可见,对于一个分类问题,由于“窗口效用”,我们只能看见客户的购买行为,但是在分类的背后,是隐藏变量之间的博弈,我们通过搭建隐藏变量的模型,来求出客户购买的概率。

2.2 sigmoid函数与逻辑回归

        在上一节得到了probit回归在数学上是比较完美的,但是正态分布的累积分布函数,其表达形式很复杂且没有解析表达式,因此直接在probit回归上做参数估计是比较困难的。于是可以通过寻找分布形式相近的函数做近似,就是sigmoid函数。

        神奇的数学家们发现:正态分布在线性变换下保持稳定,而逻辑分布可以很好地近似正态分布。因此可以使用标准逻辑分布的累积分布函数\sigma (t)来替换正态分布的累积分布函数F_{\varepsilon}(t)

正态分布

       标准逻辑分布的概率密度函数为f(x)=\frac{e^{-x} }{(1+e^{-x} )^2} ,对应的累积分布函数为\sigma (x)  = \frac{1}{1+e^{-x} } ,对应的图像如下:

logit分布

        两种不同的效用函数(假定都满足线性回归模型的假设)相互竞争时,其中某一方最终胜出的概率分布在数学上可近似为sigmoid函数。通俗讲:sigmoid函数表述了某一方竞争胜出的概率。

       于是P(y=1)=1-F_{\varepsilon}(-X·\theta ) \approx 1-\sigma (-X·\theta )=\sigma (X·\theta )=\frac{1}{1+e^{-X·\theta } }

2.3 逻辑回归的本质

       “逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。”

        因为线性回归模型的预测值为实数,而样本的类标记为(0,1),我们需要将分类任务的真实标记y与线性回归模型的预测值联系起来,也就是找到广义线性模型中的联系函数如果选择单位阶跃函数的话,它是不连续的不可微。而如果选择sigmoid函数,它是连续的,而且能够将z转化为一个接近0或1的值。

3.0 逻辑回归的损失函数

        对于任何类型的回归模型莱索,损失函数的构建思路都是相似的,都是求MSE的最小值。但由于逻辑回归的结果只有0和1的二维取值,因此无法直接给出MSE的计算公式。同时,逻辑回归实际给出的是概率值,因此可以用极大似然估计进行推导。

        首先令P(y=1)=\frac{1}{1+e^{-X·\theta} }  =h(X;\theta ),于是由于逻辑回归假设服从伯努利分布就有P(y=0)=1-h(X;\theta )

        由于y不可能同时等于0和1,因此可将上面的式子合二为一:P(y|x;\theta ) = (h(X;\theta ))^y (1-h(X;\theta ))^{1-y}

        根据极大似然估计,对于所有X=(x_{1}, x_{2},...,x_{k})可得:

J(\theta )=\prod_{i=1}^m p(y^{(i)}|x^i;\theta ) =\prod_{i=1}^m (h(x^{(i)};\theta ))^{y^{(i)}} (1-h(x^{(i)};\theta ))^{1-{y^{(i)}}}

        对上式两边取对数,可得:

log(J(\theta ))=\sum_{1}^m(y^{(i)}log(h(x^{(i)};\theta )))+(1-y^{(i)}) log((1-h(x^{(i)};\theta )))

        我们希望极大似然越大越好,就是说对于给定样本数量m,-\frac{1}{m} log(J(\theta ))希望越小越好,得到逻辑回归的损失函数如下(求平均):

        (注:X_{b}=(1,x_{1}, x_{2},...,x_{k}),配合\theta 包含截距项的长度)

        对于求损失函数的最小值,可以采用梯度下降法,就是对LF(\theta )中各\theta_{j}求偏导。下面详细推导对某一个系数\theta_{j}的求导过程,由于LF(\theta )包含两个规则的加和项,可以分开进行求导。首先看y^{(i)}log(\sigma (X_{b} ^{(i)}\theta ))的求导:

       采用链式求导法则,由内至外以此求导:

\sigma (t)' = \frac{e^{-t} }{(1+e^{-t} )^2}

log(\sigma(t))=\frac{1}{\sigma(t)} ·\sigma(t)=\frac{e^{-t} }{1+e^{-t}} =1-\sigma(t)

        于是有(y^{(i)}log(\sigma (X_{b} ^{(i)}\theta)))=y^{(i)}(1-\sigma (X_{b} ^{(i)}\theta))X_{j}^{(i)}......(1)

        同理对(1-y^{(i)}) log((1-\sigma (X_{b} ^{(i)}\theta))中的\theta_{j}求偏导。依然采取由内至外法:

(1-\sigma (t))= \frac{-e^{-t} }{(1+e^{-t} )^2}

(log(1-\sigma(t)))=\frac{1}{1-\sigma(t)} ·(1-\sigma(t))=-\sigma(t)

        于是有((1-y^{(i)}) log((1-\sigma (X_{b} ^{(i)}\theta)))=(y^{(i)}-1)\sigma (X_{b} ^{(i)}\theta)X_{j}^{(i)}......(2)

      (1)+(2)可得,其中\sigma (X_{b} ^{(i)}\theta)就是回归模型的预测值。

        LF(\theta _{j})=\frac{1}{m}\sum_{1}^m(\sigma (X_{b} ^{(i)}\theta)-y^{(i)})X_{j}^{(i)}=\frac{1}{m}\sum_{1}^m(\hat{y}^{(i)} -y^{(i)})X_{j}^{(i)}

       (注:这和多元线性回归推导出来的结果形式是一样的)

         向量化后可得损失函数的梯度为:\Delta LF = \frac{1}{m} X_{b}^T(\sigma (X_{b}\theta )-Y)

         在得到logit函数的损失函数及梯度后,就可以使用梯度下降法实现logit回归了。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容