目录
一、逻辑回归数学来源
二、极大似然法
三、逻辑回归算法过程
四、逻辑回归算法Python实战
一、逻辑回归数学来源
说到算法,我们首先想到的是线性回归和逻辑回归这两种基础算法,上一篇博文详细学习线性回归,我们都知道线性回归是回归算法,可以得到实值。而在名称上类似的逻辑回归虽然也有“回归”两个字,但是逻辑回归属于分类算法,逻辑回归也称为对数几率回归。那为什么逻辑回归也叫回归呢?原因是逻辑回归的形式与线性回归的形式有部分是相同的。下面我们具体来学习逻辑回归。
数据集有多个自变量,自变量与因变量同样存在线性关系
逻辑回归主要用于二分类,输出标记为,而线性回归模型产生的预测值是实值
,从线性回归到逻辑回归,也就是从实值
转化为0/1值。首先想到的是阶跃函数
但是阶跃函数不连续,所以考虑一个连续的单调可微函数---Sigma函数
图像表示如下:
Sigma函数取值范围在0~1之间,将0~1之间的取值归为两类
令,将线性模型
代入Sigma函数,得
对上式化简得
两边取对数
------------------(1)
式子(1)就是逻辑回归的表达式。
若将视为样本
作为正例的可能性,则
是其反例可能性,两者的比值
称为“几率”,反映了作为正例的相对可能性。对几率取对数则得到“对数几率”
则式子(1)可以写成
根据Sigma函数归为0类的表示为:
而归为1类的表示为:
二、极大似然法
于是我们通过极大似然法来估计w和b,具体过程如下:
前面提到的Sigma函数是用表示,但是为了接下来的求偏导容易理解,这里Sigma函数表示为:
则0/1类表示为:
将上面两个式子合并成一个式子
---------------------(2)
当时,
当时,
由式子(2)连乘得到似然函数
---------------(3)
极大似然估计是取θ使得似然函数最大,对似然函数(3)取对数,得
上式中要求使得概率最大的θ,而学习算法思想是根据损失函数最小化原理来求西塔,如何将概率最大化问题转化为损失函数最小化问题呢?其实很简单,只需要加上负号就可以得到损失函数,但避免损失函数受样本数量的影响,需要做平均,所以得到损失函数,则将概率最大化问题转化为损失函数最小化问题,求解损失函数最小化的θ的思路和线性回归的思路大同小异。
损失函数为:
对θ求导
根据梯度下降法进行参数更新:
其中,是步长,如果样本量较大,则改为随机梯度下降法:
, for i in range(n)
三、逻辑回归算法过程
四、逻辑回归算法python实战
#导入模块
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import datasets
#加载python自带的iris数据集
iris=datasets.load_iris()
#划分变量和标签
X=iris.data
y=iris.target
#划分训练集和测试集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
#建立模型
clf=LogisticRegression(C=1.0,penalty='l1',tol=1e-6)
#训练模型
clf.fit(X_train,y_train)
#预测结果
pre=clf.predict(X_test)
#计算准确率
pred=0
for i in range(len(y_test)):
if pre[i]-y_test[i]< 1e-1:
pred+=1
print("Accuracy:",(pred*100.0/len(y_test)),"%")
Accuracy: 100.0 %