逻辑回归 Logistic Regression
逻辑回归的基本概念,优缺点,应用场景和构建模型时可以应用的类库
目录
四、构建逻辑回归模型的注意事项
前言
逻辑回归是机器学习中有监督学习的解决分类任务的一种算法。
一、逻辑回归是什么?
分类任务的目标是引入一个函数,将观测值映射到与之相关联的类或标签。逻辑回归主要解决二分类问题,通常称为正向类和负向类。被解释变量描述了结果是正向情况的概率,如果该概率等于或大于一个用来区分的阈值(通常是0.5),则被预测为正向类,否则被预测为负向类。
在逻辑回归建模中,被解释变量使用逻辑函数(又被称为Sigmoid函数)建模,形成一个特征变量的线性组合函数。逻辑函数总是返回一个0~1之间的值。
二、逻辑回归的优点和缺点
1. 优点:
- 简单易懂:逻辑回归模型简单,易于理解和实现。
- 计算速度快:逻辑回归模型的计算速度较快,适用于大规模数据集。
- 可解释性强:逻辑回归模型的系数具有明确的物理或经济意义,可以解释自变量对分类结果的影响。
- 可以处理非线性关系:逻辑回归模型可以使用多项式、交互项等方法处理自变量和因变量之间的非线性关系。
- 概率输出:逻辑回归模型可以输出分类结果的概率,可以用于评估分类结果的置信度。
- 二元分类和多元分类:逻辑回归模型可以用于二元分类和多元分类问题,可以通过softmax函数实现多元分类。
- 可以进行特征选择:逻辑回归模型可以使用L1正则化方法进行特征选择,提高模型的泛化能力和解释性。
- 可以处理缺失值:逻辑回归模型可以处理缺失值,可以使用插值、删除等方法进行缺失值处理
2. 缺点:
- 对异常值敏感:逻辑回归模型对异常值敏感,可能会导致模型的不稳定性和预测结果的不准确性。
- 假设限制:逻辑回归模型假设自变量和因变量之间存在线性关系,且误差项服从二项分布,这些假设可能在实际问题中不成立。
- 容易发生过拟合:当自变量过多或存在多重共线性问题时,逻辑回归模型容易发生过拟合,导致模型的泛化能力下降。
- 难以处理不平衡数据:当分类结果不平衡时,逻辑回归模型可能会出现预测偏差,需要使用类别平衡技术进行优化。
- 需要注意的是,在实际应用中,逻辑回归模型通常会和其他模型结合使用,以提高预测准确率。同时,为了解决模型假设限制和异常值等问题,可以使用正则化方法和异常值检测方法等技术进行优化。
三、逻辑回归的应用场景
逻辑回归模型主要用于解决二分类问题,即将样本分为两个类别,因此适合于以下应用场景:
- 医学领域:例如预测患者是否患有某种疾病、预测药物是否有效等。
- 金融领域:例如预测客户是否会违约、预测信用卡交易是否为欺诈等。
- 市场营销:例如预测客户是否会购买某种产品、预测客户的忠诚度等。
- 安全领域:例如预测网络攻击是否发生、预测入侵检测结果等。
- 社会科学:例如预测人口普查数据中某个人是否有高等教育、是否有工作等。
- 教育研究:例如预测学生是否能够通过考试、是否会选择某个专业等。
- 自然语言处理:例如预测文本中的情感极性、文本是否属于某个类别等。
- 生物医学:例如预测细胞是否为恶性细胞、预测药物对细胞的影响等。
- 环境科学:例如预测某种污染物是否超标、是否会对环境造成危害等。
- 工业制造:例如预测产品的合格率、是否需要进行维修等。
- 交通运输:例如预测交通事故是否会发生、预测交通拥堵情况等
除了二分类问题,逻辑回归模型还可以扩展到多分类问题,即将样本分为多个类别。例如在图像识别中,可以使用逻辑回归模型将图像分为多个类别,如动物、交通工具等。
四、构建逻辑回归模型的注意事项
1. 解释变量可以是连续的数值变量,或分类变量,但被解释变量是二分类的离散变量
2. 样本数据不均衡问题的解决方案
- 调整分类阈值,使得更倾向于样本少的类别
- 选择合适的评估标准,比如ROC或者F1-score,而不是准确度accuracy
- 过采样法,有欠采样undersampling和过采样oversampling两种
- 过采样:重复正样本数据,会放大正比例噪声对模型的影响; SMOTE/Borderline-SMOTE/ADASYN
- 欠采样:丢弃大量数据,会存在过拟合的问题; EasyEnsemble/BalanceCascade
- 数据合成:SMOTE(Synthetic Minority Oversampling Technique),是对少数样本进行分析并根据少数样本人工合成新样本添加到数据中。
五、逻辑回归模型的实现类库
Python中有多个库可以实现逻辑回归,以下是其中比较常用的几个库:
- scikit-learn:scikit-learn是Python中常用的机器学习库,其中包含了多个分类模型,包括逻辑回归、决策树、随机森林等。
- statsmodels:statsmodels是Python中的统计分析库,其中包含了多个分类模型,包括逻辑回归、Probit回归等。
- TensorFlow:TensorFlow是Google开发的深度学习框架,其中也包含了逻辑回归模型。
- PyTorch:PyTorch是另一个常用的深度学习框架,其中也包含了逻辑回归模型。
- Keras:Keras是一个高级神经网络API,可以在多个深度学习框架上运行,其中也包含了逻辑回归模型。
- Theano:Theano是另一个深度学习框架,其中也包含了逻辑回归模型。
- pandas:pandas是Python中常用的数据处理库,其中也包含了逻辑回归模型。
以上这些库都提供了丰富的接口和功能,可以满足不同场景下的需求。需要注意的是,在使用这些库时,需要根据具体情况选择合适的模型、参数和评估指标,以获得更好的预测效果。
六、逻辑回归模型的评价指标
分类模型(不限于逻辑回归)的常用评价指标如下:
- 准确率(Accuracy)是指分类正确的样本数占总样本数的比例,用来衡量模型的分类准确度。
- 精确率(Precision)是指分类为正类的样本中,实际为正类的样本数占分类为正类的样本数的比例,用来衡量模型对正类的分类准确度。
- 召回率(Recall)是指实际为正类的样本中,被分类为正类的样本数占实际为正类的样本数的比例,用来衡量模型对正类的识别能力。
- F1 分数(F1-score)是精确率和召回率的调和平均数,用来综合衡量模型的分类准确度和识别能力。
- ROC 曲线和 AUC 值是用来评估二元分类器性能的常用指标。ROC 曲线是以假正率(False Positive Rate,FPR)为横轴,真正率(True Positive Rate,TPR)为纵轴,绘制出来的曲线。AUC 值是 ROC 曲线下面积的大小,取值范围为 0~1,AUC 值越大,说明分类器的性能越好。
需要注意的是,精确率和召回率是有一定关系的,一般来说,当精确率高时,召回率可能会偏低,当召回率高时,精确率可能会偏低。因此,在实际应用中需要根据具体情况选择合适的指标。
七、类库scikit-learn实现逻辑回归的例子
from sklearn.linear_model import LogisticRegression
import numpy as np
# 生成训练数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
y = np.array([0, 0, 1, 1])
# 训练模型
clf = LogisticRegression(random_state=0).fit(X, y)
# 预测新数据
print(clf.predict(np.array([[5, 6]]))))
总结
本文主要简单介绍了逻辑回归的基本概念,优缺点,应用场景和构建模型时可以应用的类库,在解决实际的业务问题时,会涉及到更多更复杂的情况需要应对,比如:自变量是否存在多重共线性的问题,利用代价函数对模型进行评价和调整等。接下来的内容中,会结合具体的案例,就逻辑回归建模过程中经常遇到的问题和需要考虑的关键点进行实操的处理。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)