博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Logistic Regression分类介绍
阅读量:3779 次
发布时间:2019-05-22

本文共 5693 字,大约阅读时间需要 18 分钟。

对数几率回归时为了使用线性回归模型来做分类任务,使用对数几率函数,把线性模型的预测值和样本的真实标记 y y y连接起来。

对数几率函数:

y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1

单位阶跃函数:

f ( x ) = { 1 z &gt; 0 0.5 z = 0 0 z &lt; 0 f(x) = \begin{cases} 1 \qquad &amp; z &gt;0 \\ 0.5 \qquad &amp; z = 0\\ 0 \qquad &amp; z &lt; 0 \\ \end{cases} f(x)=10.50z>0z=0z<0
对数几率函数和单位阶跃函数图像:
在这里插入图片描述
使用对数几率函数是因为:
二分类任务中,需要将线性回归模型 z = w T x + b z=w^Tx+b z=wTx+b的预测值 z z z转换为0和1,理论上单位阶跃函数最适合,预测值 z z z 大于零就判为 正例,小于零则判为反例预测值为 临界值零则可任意判别。
由于单位阶跃函数不连续,不适于计算,而对数几率函数是连续函数,对单位阶跃函数的逼近比较好,输出值在 z z z = 0 附近变化很陡,将 z 值转化为一个接近 0 或 1 的 y y y值,即:
y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1
将对数几率回归和线性回归结合起来的到:

y = 1 1 + e − ( w x T + b ) y=\frac{1}{1+e^{-(wx^T+b)}} y=1+e(wxT+b)1

即:
l n y 1 − y = w T x + b ln\frac{y}{1-y}=w^Tx+b ln1yy=wTx+b
y y y看做是样本为正例的概率, 1 − y 1-y 1y则为样本为负例的概率, y 1 − y \frac{y}{1-y} 1yy为几率。对几率做对数即为对数几率回归。
通俗的讲,对数几率回归就是利用线性回归的输出值。根据线性回归的输出值 z z z来判断样本为正例还是负例,判断的方法是对这个输出值 z z z做对数几率变换。

流程为:

1、由输入 x x x通过线性模型得到 z z z;
2、由 z z z通过对数几率得到两个值0和1,分别对应输入 x x x位负例还是正例。
要得到 z z z就要确定 z = w T x + b z=w^Tx+b z=wTx+b中的 w w w b b b,我们通过极大似然法来估计 w w w b b b,对于 l n y 1 − y = w T x + b ln\frac{y}{1-y}=w^Tx+b ln1yy=wTx+b,将 y y y视为类后验概率估计 p ( y = 1 ∣ x ) p(y = 1|x) p(y=1x)(即拿出一个样本 x x x,这个样本为‘1’类的概率),则原式为
l n p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) = w T x + b ln\frac{p(y = 1|x)}{p(y = 0|x)}=w^Tx+b lnp(y=0x)p(y=1x)=wTx+b,

又因为

p ( y = 0 ∣ x ) + p ( y = 1 ∣ x ) = 1 p(y = 0|x)+p(y = 1|x)=1 p(y=0x)+p(y=1x)=1,可得:

p ( y = 1 ∣ x ) = e ( w x T + b ) 1 + e ( w x T + b ) p(y = 1|x)=\frac{e^{(wx^T+b)}}{1+e^{(wx^T+b)}} p(y=1x)=1+e(wxT+b)e(wxT+b)

p ( y = 0 ∣ x ) = 1 1 + e ( w x T + b ) p(y = 0|x)=\frac{1}{1+e^{(wx^T+b)}} p(y=0x)=1+e(wxT+b)1

此时对于二分类问题,损失函数为 c o s t ( x , y ) = { − l n ( 1 1 + e − ( w x T + b ) ) y = 1 − l n ( 1 − 1 1 + e − ( w x T + b ) ) y = 0 cost(x,y)=\begin{cases} -ln(\frac{1}{1+e^{-(wx^T+b)}}) \qquad &amp; y =1 \\ -ln(1-\frac{1}{1+e^{-(wx^T+b)}}) \qquad &amp; y= 0\\ \end{cases} costx,y={

ln(1+e(wxT+b)1)ln(11+e(wxT+b)1)y=1y=0
= { − l n ( e ( w x T + b ) 1 + e ( w x T + b ) ) y = 1 − l n ( 1 1 + e ( w x T + b ) ) y = 0 \begin{cases} -ln(\frac{e^{(wx^T+b)}}{1+e^{(wx^T+b)}}) \qquad &amp; y =1 \\ -ln(\frac{1}{1+e^{(wx^T+b)}}) \qquad &amp; y= 0\\ \end{cases} ln(1+e(wxT+b)e(wxT+b))ln(1+e(wxT+b)1)y=1y=0
= { − l n ( p ( y = 1 ∣ x ) ) y = 1 − l n ( p ( y = 0 ∣ x ) ) y = 0 \begin{cases} -ln(p(y = 1|x)) \qquad &amp; y =1 \\ -ln(p(y = 0|x)) \qquad &amp; y= 0\\ \end{cases} {
ln(p(y=1x))ln(p(y=0x))y=1y=0
其中y=1表示正样本,y=0表示负样本。

对于给定的数据集 [ ( x i , y i ) ] i = 1 m {[(x_i, y_i)]^m_{i =1}} [(xi,yi)]i=1m,对率回归模型最大化对数似然(即对后验概率的对数求和)得到:

l ( w , b ) = ∑ i = 1 m l n p ( y i ∣ x i ; w , b ) l(w,b)= \sum_{i=1}^{m}lnp(y_i|x_i;w,b) l(w,b)=i=1mlnp(yixi;w,b)
让每个样本属于其真实标记的概率越大越好。
β = ( w , b ) β= (w,b) β=(w,b); x ^ = ( x ; 1 ) \hat{x}=(x;1) x^=(x;1) , w T x + b w^Tx+b wTx+b则为 β T x ^ β^T\hat{x} βTx^
p 1 ( x ^ ; β ) = p ( y = 1 ∣ x ^ ; β ) p_{1}(\hat{x};β)= p(y = 1|\hat{x};β) p1(x^;β)=p(y=1x^;β),
p 0 ( x ^ ; β ) = p ( y = 0 ∣ x ^ ; β ) = 1 − p 1 ( x ^ ; β ) p_{0}(\hat{x};β)= p(y = 0|\hat{x};β)=1-p_{1}(\hat{x};β) p0(x^;β)=p(y=0x^;β)=1p1(x^;β)
p 1 ( x ^ ; β ) p_{1}(\hat{x};β) p1(x^;β) p 0 ( x ^ ; β ) p_{0}(\hat{x};β) p0(x^;β)合并起来为:
p ( x ^ ; β ) p(\hat{x};β) p(x^;β) = p ( y = 1 ∣ x ^ ; β ) y i p ( y = 0 ∣ x ^ ; β ) 1 − y i p(y = 1|\hat{x};β)^{y_{i}}p(y = 0|\hat{x};β)^{1-y_{i}} p(y=1x^;β)yip(y=0x^;β)1yi
= p 1 ( x ^ ; β ) y i p 0 ( x ^ ; β ) 1 − y i =p_{1}(\hat{x};β)^{y_{i}}p_{0}(\hat{x};β)^{1-y_{i}} =p1(x^;β)yip0(x^;β)1yi
该式可以看做为损失函数
则:
l n ( p ( y i ∣ x i ; w , b ) ) ln(p(y_i|x_i;w,b)) ln(p(yixi;w,b)) = y i l n ( p 1 ( x ^ ; β ) ) + ( 1 − y i ) l n ( p 0 ( x ^ ; β ) ) y_{i}ln(p_{1}(\hat{x};β))+(1-y_{i})ln(p_{0}(\hat{x};β)) yiln(p1(x^;β))+(1yi)ln(p0(x^;β))
该式可看做对数损失函数

带入得:

l ( β ) = ∑ i = 1 m ( y i l n ( p 1 ( x ^ ; β ) ) + ( 1 − y i ) l n ( p 0 ( x ^ ; β ) ) ) l(β)=\sum_{i=1}^{m}(y_{i}ln(p_{1}(\hat{x};β))+(1-y_{i})ln(p_{0}(\hat{x};β))) l(β)=i=1m(yiln(p1(x^;β))+(1yi)ln(p0(x^;β)))
= ∑ i = 1 m ( y i l n ( e ( w x T + b ) 1 + e ( w x T + b ) ) + ( 1 − y i ) l n ( 1 1 + e ( w x T + b ) ) =\sum_{i=1}^{m}(y_{i}ln(\frac{e^{(wx^T+b)}}{1+e^{(wx^T+b)}})+(1-y_{i})ln(\frac{1}{1+e^{(wx^T+b)}}) =i=1m(yiln(1+e(wxT+b)e(wxT+b))+(1yi)ln(1+e(wxT+b)1)
= ∑ i = 1 m ( y i ( ( w x T + b ) − l n ( 1 + e ( w x T + b ) ) ) − ( 1 − y i ) l n ( 1 + e ( w x T + b ) ) =\sum_{i=1}^{m}(y_{i}((wx^T+b)-ln({1+e^{(wx^T+b))}})-(1-y_{i})ln({1+e^{(wx^T+b)}}) =i=1m(yi((wxT+b)ln(1+e(wxT+b)))(1yi)ln(1+e(wxT+b))
= ∑ i = 1 m ( y i ( ( w x T + b ) − l n ( 1 + e ( w x T + b ) ) =\sum_{i=1}^{m}(y_{i}((wx^T+b)-ln({1+e^{(wx^T+b)}}) =i=1m(yi((wxT+b)ln(1+e(wxT+b))
= ∑ i = 1 m ( y i β T x i ^ − l n ( 1 + β T x i ^ ) ) =\sum_{i=1}^{m}(y_{i}β^T\hat{x_{i}}-ln({1+β^T\hat{x_{i}}})) =i=1m(yiβTxi^ln(1+βTxi^))
该式可看做代价函数
改为求最小值:
l ( β ) = ∑ i = 1 m ( − y i β T x i ^ + l n ( 1 + β T x i ^ ) ) l(β)=\sum_{i=1}^{m}(-y_{i}β^T\hat{x_{i}}+ln(1+β^T\hat{x_{i}})) l(β)=i=1m(yiβTxi^+ln(1+βTxi^))
该式可看做目标函数
可使用不同的优化求解最小值的方法求出最优解 β ∗ = a r g m i n l ( β ) β^{*}=argmin l(β) β=argminl(β)

对数几率回归的优点:

例如它是直接对分类可能性进行建模,无需事先假设数据分布?这样就避免了假设分布不准确所带来的问题;它不是仅预测出"类别",而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;此外,对率函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。

使用sklearn来调用逻辑回归

from sklearn import datasetsfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.linear_model import LogisticRegressiondigits = datasets.load_digits()x_digits = digits.datay_digits = digits.targetx_train = x_digits[:round(.9*len(x_digits))]x_test = x_digits[round(.9*len(x_digits)):]y_train = y_digits[:round(.9*len(y_digits))]y_test = y_digits[round(.9*len(y_digits)):]logistic = LogisticRegression()print('Logistic Score: %f'%logistic.fit(x_train,y_train).score(x_test,y_test))
你可能感兴趣的文章
C++程序设计作业--坦克大战[分享]
查看>>
Uuntu20.04出现“qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in...已放弃 (核心已转储)”问题解决记录
查看>>
Linux系统常用的基本操作记录
查看>>
ZeroDivisionError: integer division or modulo by zero解决记录
查看>>
使用软链接放置数据集
查看>>
wx-charts折线统计图的实现(以每日体重展示为例)
查看>>
Windows消息:如何自定义窗口消息与线程消息
查看>>
Windows消息:怎样使用RegisterWindowMessage注册消息
查看>>
MultiSlider组件
查看>>
TransparentBitmap函数设置透明位图的原理分析
查看>>
透明位图的显示(TransparentBlt函数)
查看>>
关于CBitmap,LoadBitmap 的使用
查看>>
通用 Thunk
查看>>
Serial Communications in Win32
查看>>
STM32固件库详解
查看>>
IMediaEventEx 转帖
查看>>
Gamma校正
查看>>
Dll分配的内存块,应用释放的问题
查看>>
android webview加载网页错误net::ERR_UNKNOWN_URL_SCHEME
查看>>
android webview定位权限请求
查看>>