一、逻辑回归简介及应用
logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群必定具有不同的体征与生活方式等。因此因变量就为是否胃癌,值为“是”或“否”,自变量就可以包括很多了,如年龄、性别、饮食习惯、幽门螺杆菌感染等。然后通过logistic回归分析,可以得到自变量的权重,同时根据该权值可以根据危险因素预测一个人患癌症的可能性。
Logistic回归的因变量可以是二分类的,如上述中是否患胃癌;也可以是多分类的,如mnist手写识别,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的Logistic回归。
二、逻辑回归的原理
谈到回归问题,第一反应是:![y = kx+b](https://latex.csdn.net/eq?y%20%3D%20kx&plus;b)在二维平面上是一条直线。当 ![k](https://latex.csdn.net/eq?k) 和 ![b](https://latex.csdn.net/eq?b) 确定时,对于回归问题,假设![x](https://latex.csdn.net/eq?x)为面积,经过线性映射,可以得到其体积![y](https://latex.csdn.net/eq?y),则完成回归任务;对于分类问题,假设![x](https://latex.csdn.net/eq?x)为某个特征,经过线性映射,得到![y](https://latex.csdn.net/eq?y)>0,或<0,或=0,若规定大于0的为正标签,小于等于0的为负标签,则完成了分类任务。
同理可得,当方程为多元方程时: ![f(x)=w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+\begin{matrix} ... \end{matrix}+w_{n}x_{1n}+b=\overrightarrow{w}\cdot \overrightarrow{x}+b=w^{T}x](https://latex.csdn.net/eq?f%28x%29%3Dw_%7B1%7Dx_%7B1%7D&plus;w_%7B2%7Dx_%7B2%7D&plus;w_%7B3%7Dx_%7B3%7D&plus;%5Cbegin%7Bmatrix%7D%20...%20%5Cend%7Bmatrix%7D&plus;w_%7Bn%7Dx_%7B1n%7D&plus;b%3D%5Coverrightarrow%7Bw%7D%5Ccdot%20%5Coverrightarrow%7Bx%7D&plus;b%3Dw%5E%7BT%7Dx) ,如下图所示:
如果继续对多元方程回归得到的![f(x)](https://latex.csdn.net/eq?f%28x%29)规定大于0的为正标签,小于等于0的为负标签。由于![f(x)](https://latex.csdn.net/eq?f%28x%29)的值域为![\left ( -\infty, +\infty \right )](https://latex.csdn.net/eq?%5Cleft%20%28%20-%5Cinfty%2C%20&plus;%5Cinfty%20%5Cright%20%29),这样规定对于决策很不友好;若![f(w)\in \left [ 0,1 \right ]](https://latex.csdn.net/eq?f%28w%29%5Cin%20%5Cleft%20%5B%200%2C1%20%5Cright%20%5D),规定大于阈值0.5为正标签,小于等于阈值0.5为负标签,那么越比0.5大,就越说明决策函数给出的正类的可信度越高,反之亦然。这样不仅灵活,而且可以根据数据情况调整不同的阈值来达到最佳准召率。
(1)sigmoid函数
输入数据,经过函数映射为,该函数为sigmoid函数,形式为
(2)输入和输出形式
输入:![x=\left ( x_{1}\,\, x_{2}\,\, x_{3}\,\, \begin{matrix} ... \end{matrix}x_{n}\,\,1\right )](https://latex.csdn.net/eq?x%3D%5Cleft%20%28%20x_%7B1%7D%5C%2C%5C%2C%20x_%7B2%7D%5C%2C%5C%2C%20x_%7B3%7D%5C%2C%5C%2C%20%5Cbegin%7Bmatrix%7D%20...%20%5Cend%7Bmatrix%7Dx_%7Bn%7D%5C%2C%5C%2C1%5Cright%20%29)
输出: ![p=\frac{1}{1+e^{-\left ( w_{_{1}}x_{1}+w_{_{2}}x_{2}+w_{_{3}}x_{3}+\begin{matrix} ... \end{matrix}+w_{_{n}}x_{n}+b\right )}} =\frac{1}{1+e^{-\left ( \vec{w}\cdot \vec{x}+b \right )}}](https://latex.csdn.net/eq?a%3D%5Cfrac%7B1%7D%7B1&plus;e%5E%7B-%5Cleft%20%28%20w_%7B_%7B1%7D%7Dx_%7B1%7D&plus;w_%7B_%7B2%7D%7Dx_%7B2%7D&plus;w_%7B_%7B3%7D%7Dx_%7B3%7D&plus;%5Cbegin%7Bmatrix%7D%20...%20%5Cend%7Bmatrix%7D&plus;w_%7B_%7Bn%7D%7Dx_%7Bn%7D&plus;b%5Cright%20%29%7D%7D%20%3D%5Cfrac%7B1%7D%7B1&plus;e%5E%7B-%5Cleft%20%28%20%5Cvec%7Bw%7D%5Ccdot%20%5Cvec%7Bx%7D&plus;b%20%5Cright%20%29%7D%7D),其中![\sigma (z)=\frac{1}{1+e^{-z}}](https://latex.csdn.net/eq?%5Csigma%20%28z%29%3D%5Cfrac%7B1%7D%7B1&plus;e%5E%7B-z%7D%7D)
这里和如图所示,分别为输入数据和待求参数,为偏置项,为了后续推导方便,设定:,即,。
输出值![a](https://latex.csdn.net/eq?a)就是概率值,对![a](https://latex.csdn.net/eq?a)中参数![w,b](https://latex.csdn.net/eq?w%2Cb)的求导过程如下所示,后面会用到,先求出来放在这里哈:
求导过程为除法求导运算法则,需要注意一个推导公式:![(w^{T}x)'=\frac{\partial w^{T}x}{\partial w}=x^{T}](https://latex.csdn.net/eq?%28w%5E%7BT%7Dx%29%27%3D%5Cfrac%7B%5Cpartial%20w%5E%7BT%7Dx%7D%7B%5Cpartial%20w%7D%3Dx%5E%7BT%7D)。
(3)基于目标函数求解参数w
极大似然估计提供了一种基于给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。简单说来,就是知道了模型和结果,求解使得事件结果以最大概率发生时出现的参数。
基于逻辑回归的计算式,对应标签1和0的概率分别为:![P(Y=1|X)=\frac{1}{1+e^{-(w^{T}x)}}=p(x)](https://latex.csdn.net/eq?P%28Y%3D1%7CX%29%3D%5Cfrac%7B1%7D%7B1&plus;e%5E%7B-%28w%5E%7BT%7Dx%29%7D%7D%3Dp%28x%29)![P(Y=0|X)=\frac{1}{1+e^{-(w^{T}x)}}=1-p(x)](https://latex.csdn.net/eq?P%28Y%3D0%7CX%29%3D%5Cfrac%7B1%7D%7B1&plus;e%5E%7B-%28w%5E%7BT%7Dx%29%7D%7D%3D1-p%28x%29)
**第一步,**构造极大似然函数,计算这些样本的似然函数,其实就是把每个样本的概率乘起来,
** 第二步,**两边取对数得:![ln\prod_{i=1}^{n}p^{y_{i}}(1-p)^{(1-y_{i})}=\sum_{i=1}^{n}y_{i}lnp+\sum_{i=1}^{n}(1-y_{i})ln(1-p)](https://latex.csdn.net/eq?ln%5Cprod_%7Bi%3D1%7D%5E%7Bn%7Dp%5E%7By_%7Bi%7D%7D%281-p%29%5E%7B%281-y_%7Bi%7D%29%7D%3D%5Csum_%7Bi%3D1%7D%5E%7Bn%7Dy_%7Bi%7Dlnp&plus;%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%281-y_%7Bi%7D%29ln%281-p%29)
tips:由于极大似然函数中有连乘符号,取对数,将连乘变为加和。
目标函数为:![L(x,w)=\sum_{i=1}^{n}y_{i}lnp+\sum_{i=1}^{n}(1-y_{i})ln(1-p)](https://latex.csdn.net/eq?L%28x%2Cw%29%3D%5Csum_%7Bi%3D1%7D%5E%7Bn%7Dy_%7Bi%7Dlnp&plus;%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%281-y_%7Bi%7D%29ln%281-p%29)其中,y为真值,p为预测值。
原函数求最大值,等价于乘以负1后求最小值。对于n个数据累加后值较大,用梯度下降容易导致梯度爆炸,可处于样本总数n,即
![L(x,w)=-\frac{1}{n}(\sum_{i=1}^{n}y_{i}lnp+\sum_{i=1}^{n}(1-y_{i})ln(1-p))](https://latex.csdn.net/eq?L%28x%2Cw%29%3D-%5Cfrac%7B1%7D%7Bn%7D%28%5Csum_%7Bi%3D1%7D%5E%7Bn%7Dy_%7Bi%7Dlnp&plus;%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%281-y_%7Bi%7D%29ln%281-p%29%29)
**第三步,**对目标函数中参数w求导:为了求导过程更清晰,先去掉求和符号
tips:,该求导过程,涉及到对概率值p的求导,这个求导过程在前面已经推导完成。
添加求和符号后为:![\frac{\partial L}{\partial w}=-\frac{1}{n}\sum_{i=n}^{n}(y_{i}-p)x^{T}](https://latex.csdn.net/eq?%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20w%7D%3D-%5Cfrac%7B1%7D%7Bn%7D%5Csum_%7Bi%3Dn%7D%5E%7Bn%7D%28y_%7Bi%7D-p%29x%5E%7BT%7D)
基于梯度下降法求得最优w:![w_{t+1}=w_{t}+\frac{1}{n}\sum_{i=n}^{n}(y_{i}-p)x^{T}](https://latex.csdn.net/eq?w_%7Bt&plus;1%7D%3Dw_%7Bt%7D&plus;%5Cfrac%7B1%7D%7Bn%7D%5Csum_%7Bi%3Dn%7D%5E%7Bn%7D%28y_%7Bi%7D-p%29x%5E%7BT%7D)
三、逻辑回归代码复现
后续补充。
参考文献:
【大道至简】机器学习算法之逻辑回归(Logistic Regression)详解(附代码)---非常通俗易懂!
版权归原作者 傅瑾颜 所有, 如有侵权,请联系我们删除。