龙空技术网

逻辑回归LogisticRegression原理介绍及方法实现

云生信学生物信息学 166

前言:

此刻兄弟们对“python逻辑回归进行判断编程”都比较看重,咱们都需要知道一些“python逻辑回归进行判断编程”的相关内容。那么小编在网上搜集了一些关于“python逻辑回归进行判断编程””的相关内容,希望朋友们能喜欢,咱们快快来学习一下吧!

尔云间 一个专门做科研的团队

原创 eryun 云生信学生物信息学 2022-03-23 19:00

原创不易/ 请关注和转发支持

逻辑回归LogisticRegression是一种常用的用于判别预测的统计学方法,在社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析领域有着广泛的应用。

逻辑回归的模型 是一个非线性模型,sigmoid函数,又称逻辑回归函数。但是它本质上又是一个线性回归模型,因为除去sigmoid映射函数关系,其他的步骤,算法都是线性回归的。

可以说,逻辑回归,都是以线性回归为理论支持的。只不过,线性模型,无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题。

另外它的推导含义:仍然与线性回归的最大似然估计推导相同,最大似然函数连续积(这里的分布,可以使伯努利分布,或泊松分布等其他分布形式),求导,得损失函数。

逻辑回归函数

Logistic Regression的适用性

1) 可用于概率预测,也可用于分类。

并不是所有的机器学习方法都可以做可能性概率预测(比如SVM就不行,它只能得到1或者-1)。

可能性预测的好处是结果又可比性:比如我们得到不同广告被点击的可能性后,就可以展现点击可能性最大的N个。这样以来,哪怕得到的可能性都很高,或者可能性都很低,我们都能取最优的topN。

当用于分类问题时,仅需要设定一个阈值即可,可能性高于阈值是一类,低于阈值是另一类。

2) 仅能用于线性问题

只有在feature和target是线性关系时,才能用Logistic Regression(不像SVM那样可以应对非线性问题)。

这有两点指导意义,一方面当预先知道模型非线性时,果断不使用Logistic Regression;另一方面,在使用Logistic Regression时注意选择和target呈线性关系的feature。

3) 各feature之间不需要满足条件独立假设,但各个feature的贡献是独立计算的。

逻辑回归不像朴素贝叶斯一样需要满足条件独立假设(因为它没有求后验概率)。

但每个feature的贡献是独立计算的,即LR是不会自动帮你combine 不同的features产生新feature的 (时刻不能抱有这种幻想,那是决策树,LSA, pLSA, LDA或者你自己要干的事情)。

举个例子,如果你需要TF*IDF这样的feature,就必须明确的给出来,若仅仅分别给出两维 TF 和 IDF 是不够的,那样只会得到类似 a*TF + b*IDF 的结果,而不会有 c*TF*IDF 的效果。

对于逻辑回归的实现问题,这里简单介绍两种基于python语言的实现方法,尽管都是源于逻辑回归算法,但是两种实现方法在精度上还是略有区别。下面我们逐一介绍。

方法一:Biopython

如图为一个实例,包括17个数据点,每个数据点有两个特征值,xs为特征值矩阵,ys为对应的类别标签。

Model即为利用xs,ys为训练集,通过逻辑回归构建的分类模型。Classify函数是用来进行分类预测的。我们看下精度如何

可见只有第二个数据点分类错误,其他的数据点都正确分类了。精度还是很高的。那么我们用另一种基于python的逻辑回归算法来比较一下。

方法二:sklearn

从sklearn的线性模型中调用逻辑回归,同样用xs,ys训练构建模型,然后逐一进行预测。结果如下

可见第2,3,17个数据点都被错误分类了,精度明显比Biopython中回归模型的精度要低。那么如何才能提高预测精度呢,这里我们借用Gridsearchcv参数优化来对模型进行优化,看是否能一定程度上提高精度。

首先我们可以看下sklearn中回归模型设计到的参数有哪些,这里可选的参数包括C,penalty,tol等。所以我们主要对这三个参数进行优化。迭代过程如下

可见当C=10,penalty=’l1’,tol=0.01时精度最高,为0.882。我们重新用Gridsearch优化过的LogisticRegression模型重新进行预测

可见同样只有第二个数据点错误分类,和Biopython的精度相同。

小结:

通过测试数据我们获得两个结论,首先python机器学习包中sklearn线性模型所包含的逻辑回归模型在判别分类的效果上不如Biopython中回归模型精度高。

另外,Gridsearch可以一定程度上提高模型的预测精度,并且优化后的预测精度和Biopython相同,但是参数优化的弊端在于可能出现局部优化或过拟合,造成模型的可移植性降低。

所以在选择逻辑回归进行判别时,可能Biopython是相对更好的选择,但是我们不能否认sklearn的灵活性更高,并且通过参数优化可以很大程度上提高预测效果。

标签: #python逻辑回归进行判断编程