sklearn中使用Logistic Regression
LR模型是机器学习入门必备模型之一,scikit-learn(简称 sklearn)作为机器学习领域最重要的库之一当然对这种基本模型已经支持的非常完整,不过对于初学者来说,模型的数学推导和成熟的代码库之间还是有着距离需要我们自己探索,本人在初次使用sklearn时,发现LR模型就两行代码搞定,虽然运行没有问题,但是LR数学模型里面的参数到底都是什么值,在sklearn中哪些变量存放等类似的问题值得去摸索。
逻辑回归(Logistic Regression)与线性回归(Linear Regression)
本文虽然只关注逻辑回归模型参数,但是逻辑回归的模型参数实际上是和线性回归的模型参数一样,而且对于初学者来说,逻辑回归和线性回归也是很容易搞混的两个模型,其实容易搞混也是有原因的,个人认为起码有两个原因:
- 两个模型无论中文名称还是英文名称都有回归字样
- 两个模型的数学定义中都有线性拟合的部分
对于第一点,其实只要分清楚两个模型的应用场景就不会弄混了,逻辑回归虽然听起来像回归,但实际上是一个分类模型,分类模型即通过特性来判断这个东西属于A类还是B类(当然类别数量也可以大于2),例如垃圾邮件分类中,逻辑回归模型中的输入是一份邮件内容, 输出只有两个值,1表示邮件是垃圾邮件,0表示不是垃圾邮件;线性回归才是如假包换的回归模型,它的输出是连续数值,比如时间和温度的数据,做线性回归之后,可以预测任意时间的温度值。
说了这么多还是没有进入到本文的主要内容…,下面看看两个模型的数学定义
-
线性回归模型
-
逻辑回归模型
仔细看两个模型的数学表达式,实际上逻辑回归是在线性回归的基础上,加了一个sigmod函数,即线性回归给出一个预测值就完事了,但是逻辑回归需要把这个预测值作为sigmod函数的输入,通过sigmod函数计算出一个非常接近0或者1的数,这个0或者1就是逻辑回归的最终输出。
tips: 当然两个模型的损失函数还是有所不同,这里不做探讨。
- sigmod函数是这样的
y = 1 1 + e − x y = \dfrac{1}{1 + e^{-x} } y=1+