python学习——逻辑回归

python学习——逻辑回归

一、逻辑回归简介

逻辑回归是分类当中极为常用的手段,它属于概率型非线性回归,分为二分类和多分类的回归模型。对于二分类的logistic回归,因变量y只有“是”和“否”两个取值,记为1和0。假设在自变量x1,x2,……,xp,作用下,y取“是”的概率是p,则取“否”的概率是1-p

1、回归步骤

  1. 面对一个回归或者分类问题,建立代价函数
  2. 通过优化方法迭代求解出最优的模型参数
  3. 测试验证我们这个求解的模型的好坏

2、逻辑回归与多重线性回归

Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同。这一家族中的模型形式基本上都差不多,不同的就是因变量不同。

  • 如果是连续的,就是多重线性回归
  • 如果是二项分布,就是Logistic回归
  • 如果是Poisson分布,就是Poisson回归
  • 如果是负二项分布,就是负二项回归

二、sigmoid函数

在logistic回归的二分类问题中,要用到的函数就是sigmoid函数。sigmoid函数非常简单,它的表达式是:

img

因变量x取值范围是(-∞,+∞),但是sigmoid函数的值域是(0, 1)。因此不管x取什么值其对应的sigmoid函数值一定会落到(0,1)范围内。它的基本图形如下:

img

(当z为0的时候,函数值为0.5;随着z的增大,函数值逼近于1;随着z的减小,函数值逼近于0)

解释:将任意的输入映射到[0,1]区间我们在线性回归中得到一个预测值,再将该值映射到sigmoid函数中就完成了一个值到概率的转化,也就是分类任务

其中z=img

实际上g(z)并不是预测结果,而是预测结果为正例的概率,一般来说阈值为0.5,也就是当g(z)>0.5,我们就说他是正例,g(z)<0.5就是负例,但在实际应用中也可能不同。比如我们预测一个人是否患有新型冠状病毒,我们这时如果只设置阈值为0.5,那么一个人患有新冠的概率为0.45,我们的模型也会认为他没有新冠,所以这时我们不妨把阈值设置的小一些如0.1,如果概率大于0.1你就要去做检查隔离,这样可以减少误差防止漏放病人。
上述可知:
P(y=0|w,x) = 1 – g(z) #预测为负例
P(y=1|w,x) = g(z) #预测为正例

所以单条预测正确的概率为
P(正确) =*img
这里解释一下,yi为某一个样本的预测值,为0或者1

那么为什么P(正确)等于这个呢,你想想,假设我们预测他为1的概率是0.8,预测他为0的概率是0.2。那么这时候如果我们说他是1,那么我们正确的概率就是0.8,如果我们说他是0,那我们正确的概率就是0.2

生成sigmoid函数图的代码:

import numpy
import math
import matplotlib.pyplot as plt
 
def sigmoid(x):
    a = []
    for item in x:
        a.append(1.0/(1.0 + math.exp(-item)))
    return a
 
x = numpy.arange(-10, 10, 0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.yticks([0.0, 0.5, 1.0])
plt.axhline(y=0.5, ls='dotted', color='k')
plt.show()

sigmoid函数很适合做我们刚才提到的二分类的分类函数。假设输入数据的特征是(x0, x1, x2, …, xn),我们在每个特征上乘以一个回归系数 (w0, w1, w2, … , wn),然后累加得到sigmoid函数的输入z:

img

那么,输出就是一个在0~1之间的值,我们把输出大于0.5的数据分到1类,把输出小于0.5的数据分到0类。这就是Logistic回归的分类过程

三、极大似然估计

我们要去寻找一个w的值使得g(z)正确的概率最大,而我们在上面的推理过程中已经得到每个单条样本预测正确概率的公式,若想让预测出的结果全部正确的概率最大,根据最大似然估计,也就是所有样本预测正确的概率相乘得到的P(总体正确)最大,似然函数如下:

img

对其取对数可以得到:

img

得到的这个函数越大,证明我们得到的W就越好.此时为梯度上升求最大值,引入j(θ)=(-1/m)L(θ)转化为梯度下降任务,得到公式如下:

img

这就是其代价函数,也称交叉熵函数

四、求解W

当权向量 w使l(w)最大的时候,w最合理,对代价函数求导可得:

img

1、梯度上升法求解

梯度上升法的基本思想是:要找到某函数的最大值,最好的方法就是沿着该函数的梯度方向搜寻。如果函数为f,梯度记为D,a为步长,那么梯度上升法的迭代公式为:w:w+a*Dwf(w)。该公式停止的条件是迭代次数达到某个指定值或者算法达到某个允许的误差范围。首先对对数的函数的梯度进行计算:

img

通过矩阵乘法直接表示成梯度:

img

设步长为α, 则迭代得到的新的权重参数为:

img

2、梯度下降法

img

五、代码举例

1、自己定义函数调整参数

例子1:

数据集:学生的gre,gpa和rank信息作为变量,预测是否admit,若admit=1代表录取,admit=0代表不录取

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python进行逻辑回归分析时,可以使用库中的函数来生成一个逻辑回归模型的summary。根据引用所提到的yhat上的文章,这篇文章是基于yhat上的一篇关于Python逻辑回归的翻译,并提供了一些额外的内容。然而,这篇文章并没有具体实现逻辑回归的算法,而是利用了一些算法库来帮助读者快速上手逻辑回归的训练和预测。 根据引用所提到的,在使用statemodels库实现的逻辑回归中,需要显式地指定常数intercept。这样,在执行逻辑回归时,会将常数intercept作为一个特征变量来考虑。 然而,关于具体的Python逻辑回归的summary信息,可以参考引用提到的UCLA的教程"R Data Analysis Examples: Logit Regression"。尽管这是一个使用R语言的例子,但它提供了高质量的逻辑回归实例。对于Python逻辑回归的summary信息,可能需要查找其他资源或使用专门的Python库来获取。目前,关于逻辑回归Python资料相对较少,但是在机器学习领域,Python是最流行的语言之一,有许多资源可用于支持向量积和文本分类等主题。 综上所述,关于Python逻辑回归的summary信息,可以参考yhat上的文章以及其他相关资源,但目前可能需要查找更多的Python资料来获取完整的summary。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [机器学习——Python实现逻辑回归](https://blog.csdn.net/NIeson2012/article/details/54310625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值