机器学习-一篇入门

【模型】一篇入门之-逻辑回归模型

作者 : 老饼 发表日期 : 2022-06-26 03:35:02 更新日期 : 2024-11-21 22:06:55
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



逻辑回归( Logistic Regression)模型是机器学习中最常用的二分类模型

本文针对入门快速讲解逻辑回归,包括逻辑回归模型、逻辑回归损失函数、代码实现等等

通过本文,让初学者可以快速的了解、上手逻辑回归模型,知道逻辑回归模型是什么、怎么使用





    01. 逻辑回归模型是什么    




本节快速了解逻辑回归模型是什么,包括模型表达式以及损失函数





     什么是逻辑回归模型     


逻辑回归模型(Logistic regression)是机器学习中一个应用于二分类的概率模型
它在线性回归的基础上,加了一个S型的Logistic函数,因此称为逻辑回归模型
 逻辑回归模型是什么
 逻辑回归模型用于二分类,它输出样本属于正标签的概率
逻辑回归模型表达式为:
 
   

 矩阵形式为:
            其中, 

 直观地理解,逻辑回归模型就是用线性模型XW来作为样本的类别判别值
然后通过sigmoid函数,进一步将判别值XW转换为概率





    逻辑回归模型的损失函数    


逻辑回归使用的是交叉熵损失函数,如下:
 
其中,:样本个数                                                    
 :第i个样本的标签,要么是0,要么是1
✍️交叉熵损失函数的意义
模型预测第i个样本为1类样本的概率为
 因此,模型对第i个样本预测准确的概率为:
 
则有:
时,
时,      
 因此,逻辑回归的损失函数实际意义如下:
 
即基于模型的预测概率,在知道样本真实标签时所获得的信息量期望(熵)







   02. 逻辑回归模型的训练    




本节讲解逻辑回归模型的训练方法与梯度公式




     逻辑回归模型的训练     


逻辑回归模型的训练,就是求解逻辑回归模型里的参数W,使得损失函数L最小
 梯度下降算法与逻辑回归的梯度 
 求解逻辑回归的算法比较多,较简单、经典的求解方法就是使用梯度下降算法进行求解    
 梯度下降算法先初始化一个解,再不断往目标函数的负梯度方向调整解,如下:
 梯度下降法与逻辑回归  
使用梯度下降算法训练逻辑回归,在迭代过程中需要使用损失函数L(W)的梯度
 逻辑回归损失函数L(W)的梯度公式如下:
 
 
其中
   
 :样本的输入特征数据,矩阵
                          m为样本数,n为特征个数,即一行为一个样本
     : 样本的标签y,列向量        
                              :模型预测值,即的列向量  
       :模型的权重,的列向量  
 公式的具体推导过程见《逻辑回归梯度公式推导
 
逻辑回归模型训练
 
梯度下降训练逻辑回归模型的算法流程如下:
 
梯度下降法训练逻辑回归模型流程
 
 先初始化W,然后 1. 按照梯度公式算出梯度                                
2. 将W往负梯度方向调整 
不断循环(1)和(2),直到达到终止条件(例如达到最大迭代次数)
软件包中不一定使用梯度下降算法,例如matlab工具箱里使用的就是牛顿法
虽然牛顿法训练会更快,但原理也相对更为复杂,在这里不再展开







  03. 逻辑回归模型-例子与代码   




本节展示如何训练一个逻辑回归模型,应用于二分类问题




       逻辑回归例子      


下面展示如何训练一个逻辑回归模型,用于识别样本的类别
 数据
 乳腺癌问题的具体数据如下:
 逻辑回归例子数据
特征:平均平滑度、平均紧凑度、平均凹面、平均凹点,类别:0-恶性、1-良性
 即以sk-learn中的breast_cancer的数据,breast_cancer原数据中有30个特征,为方便讲解,我们这里只选4个
在sklearn中可以使用LogisticRegression来实现一个逻辑回归,具体代码实现如下:
'''
本代码展示在python中如何用sklearn来训练一个逻辑回归模型
本代码来自《老饼讲解-机器学习》www.bbbdata.com
'''
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn import metrics

#----数据加载------
data = load_breast_cancer()
X    = data.data[:,4:8]                                    # 作为学习,这里我们只选择breast_cancer数据中的4个变量进行建模
y    = data.target                                         # breast_cancer的y
#----数据归一化------                                      
xmin = X.min(axis=0)                                       # 输入变量的最小值
xmax = X.max(axis=0)                                       # 输入变量的最大值 
X_norm=(X-xmin)/(xmax-xmin)                                # 对输入变量进行归一化
                                                           
#-----训练模型--------------------                         
clf = LogisticRegression(random_state=0)                   # 初始化逻辑回归模型      
clf.fit(X_norm,y)                                          # 用数据训练逻辑回归模型
												           
#------模型预测-------------------------------             
pred_y      = clf.predict(X_norm)                          # 预测类别
pred_prob_y    = clf.predict_proba(X_norm)[:,1]            # 预测属于1类的概率

# -----计算模型指标---------------------------
fpr, tpr, thresholds = metrics.roc_curve(y,pred_prob_y)    # 计算fpr与tpr
auc = metrics.auc(fpr, tpr)                                # 计算auc
acc = (pred_y== y).sum()/len(y)                            # 计算准确率

# -----打印结果-------------------------------
print( "模型系数:",clf.coef_[0])                           # 打印逻辑回归模型系数
print( "模型阈值:",clf.intercept_)                         # 打印逻辑回归模型阈值
print( "模型AUC:",auc)                                     # 打印模型AUC
print( "模型准确率:",acc)                                  # 打印模型的准确率
运行结果如下: 
  
KS和 AUC都是二分类模型常用的评估指标,这里我们使用了AUC对逻辑回归进行模型评估
可以看到,模型的AUC为0.955,对样本类别预测的准确率为89.8%,说明模型是有效的
 将模型系数与阈值代入逻辑回归模型表达式,所得到的模型为:
 
✍️备注:模型在训练时一般需要对数据进行归一化,所以该表达式也是针对归一化后的数据的






     笔者语     


逻辑回归模型是一个最常用的模型,也是机器学习中必须知道的一个模型
因为实际应用场景中,最常见的就是Yes/No这样的决策,而逻辑回归就是解决这样的问题
更直接的原因是,小贷评分卡中用的模型就是逻辑回归,深度学习中也喜欢以逻辑回归作为入门模型
因此,逻辑回归就成为了机器学习中最广为人知的模型之一
 
 如何深入应用逻辑回归
 
本文仅作为逻辑回归模型的入门文章,快速了解和应用逻辑回归模型
  更多逻辑回归模型的使用,可以参考本站逻辑回归系列文章《逻辑回归-专题详述》,
该系列文章讲解逻辑回归日常应用涉及的内容,包括参数讲解、模型表达式的提取、建模流程等等

 如何自实现逻辑回归的原理
 如果不想调用软件包,而是自行实现一个逻辑回归,可参考《
课程:逻辑回归-原理与自实现
 该课程是老饼阅读matlab的逻辑回归源码后整理出来的课程
在课程中讲逻辑回归模型的细节原理,并用python复现出与matlab逻辑回归函数一模一样的结果







好了,以上就是逻辑回归模型的原理以及使用方法了~









 End 





联系老饼