Logistic回归

在机器学习应用中,Logistic回归可用进行数据分类和数据预测,在SPSSAU机器学习模块中,Logistic回归的应用场景即为分类和预测,其与SPSSAU进阶方法中的二元logit回归或者多分类logit回归一致,但应用场景有区别,进阶方法中的二元Logit回归或者多分类Logit回归主要用于研究影响关系,但机器学习模块中的Logistic回归侧重于研究数据的分类和预测作用,因而即使原理一致,但输出的指标等却完全不同。

Logistic回归案例

  • 1、背景

    当前有一项关于‘信用卡交易欺诈’的数据科学研究,已整理好数据共为1000条,其包括六项,分别是换设备次数,支付失败次数,换IP次数,换IP国家次数,交易金额和欺诈标签,欺诈标签时,数字1表示欺诈,数字0表示没有欺诈行为,现希望通过一些机器学习算法来构建模型,并且做一些预测工作,部分数据如下图所示:

  • 2、理论

    Logistic回归时,如果Y为二分类,那么其数学模型为Logit(P/(1-P) = 常数 + b1*x1+b2*x2+…,如果是多分类时,其实质上是进行多次二分类,比如Y为3个类别,那么则进行2次(3-1=2)二元Logit回归,这是其数学原理。与此同时,在进行Logistic回归时,其涉及参数如下表所述:

    参数 说明 参数值设置
    优化算法 Logistic回归内部涉及的数学算法,可结合数据样本量等进行选择使用 lbfgs : 默认lbfgs牛顿法,算法较稳定;
    liblinear: 小型数据时使用;
    newton-cg : 另一种牛顿迭代法;
    newton-cholesky:样本量远大于特征数量时可以使用;
    sag:样本量非常大时建议使用;
    正则化 防止过拟合问题的处理技术方式 L1(Lasso正则化):减少参数数量降低模型复杂度,通常在特征选择应用时使用它;
    L2(Ridge正则化):通常用于处理过拟合问题时使用【默认】;
    None:不使用
    模型收敛参数 用来防止过拟合,正则化系数越大则正则化力度越大。 默认是0.001
    最大迭代次数 若迭代次数达到该值时依然不收敛,则停止迭代。 默认100次
    设置截距 模型中是否包括截距,通常包括 默认是包括截距,可选不无截距

    通常情况下,可结合样本数据条数使用优化算法,以及默认是使用L2正则化,如果更多目的为特征选择,可考虑使用L1正则化。其余3项参数建议保留默认即可。Logistic回归当前进行分类或者预测的使用相对较少,但其用于研究计量影响关系的情况较多。研究者可结合实际情况,选择使用其它的机器学习算法比如xgboost、神经网络等。

  • 3、操作

    本例子操作截图如下:

    将欺诈标签放入Y框中,其余5个特征项作为自变量X。与此同时,训练集比例默认为0.8,暂不进行数据归一化,当然当前数据也可考虑做标准化处理,因为涉及数据的量纲不同。其余参数值均保持默认项,即使用lbfgs优化算法,并且使用L2正则化处理。

  • 4、SPSSAU输出结果

    SPSSAU共输出5项结果,依次为基本信息汇总,训练集或测试集模型评估结果,测试集结果混淆矩阵,模型汇总表和模型代码,如下说明:

    说明
    基本信息汇总 因变量Y(标签项)的数据分布情况等
    训练集或测试集模型评估结果 分析训练集和测试集数据的模型效果评估,非常重要
    测试集结果混淆矩阵 测试集数据的进一步效果评估,非常重要
    模型汇总表 模型参数及评估汇总表格
    模型代码 模型构建的核心python代码

    上述表格中,基本信息汇总展示出因变量Y(标签项)的分类分布情况,模型评估结果(包括训练集或测试集)用于模型的拟合效果判断,尤其是测试集的拟合效果,以及提供测试集数据的混淆矩阵结果;模型汇总表格将各类参数值进行汇总,并且在最后附录模型构建的核心代码。

    与此同时,如果是二分类问题,SPSSAU默认还会输出训练集或者测试集的AUC指标及ROC曲线,如果是多分类问题,则不会输出。无论是二分类还是多分类问题,研究者可设置保存预测值,利用预测值作为X,利用Y作为Y进行ROC曲线(SPSSAU可视化模块里面的ROC曲线)进行AUC计算等。

  • 5、文字分析

    接下来针对最重要的模型拟合情况进行说明,如下表格:

    上表格中分别针对训练集和测试集,提供四个评估指标,分别是精确率、召回率、f1-scrore、准确率,以及平均指标和样本量指标等,整体来看,模型效果较差,因为无论是训练集还是测试集,F1-score值均约高于0.7而已,其它指标比如精确率或者召回率指标,均低于0.8。

    接着进一步查看测试数据的‘混淆矩阵’,即模型预测和事实情况的交叉集合,如下图:

    ‘混淆矩阵’时,右下三角对角线的值越大越好,其表示预测值和真实值完全一致。上图中显示测试集时,真实值为1(即欺诈)但预测为0(即不欺诈)的数量为29,还有24个真实值为0但预测为1,整体预测准确率较低。最后SPSSAU输出模型参数信息值,如下表格:

    模型汇总表展示模型各项参数设置情况,最后SPSSAU输出使用python中slearn包构建本次神经网络的核心代码如下:

    model = LogisticRegression(solver='lbfgs', penalty='l2', fit_intercept=True, max_iter=100, tol=0.001)

    model.fit(x_train, y_train)

    与此同时, 本次logistic回归为二分类问题,SPSSAU默认输入AUC指标和ROC曲线,如下。AUC指标时,训练集和测试集分别是0.769和0.781,相对尚可。

    AUC指标值
    训练集时 0.769
    测试集时 0.781

    ROC曲线时,可切换测试集或者训练集,查看对应的ROC曲线。需要注意的是,如果非二分类(即Y的不同数字个数大于2时),此时不会输出AUC指标或ROC曲线。研究者可自行结合保存预测值进行构造ROC曲线等。

  • 6、剖析

    涉及以下几个关键点,分别如下:

    • SPSSAU进行logistic回归时保存预测值?
    • 保存预测值时,SPSSAU会新生成一个标题用于存储模型预测的类别信息,其数字的意义与模型中标签项(因变量Y)的数字保持一致意义。并且还会生成标题用于存储各类别的预测概率值。

    • SPSSAU进行logistic回归输出的AUC或ROC?
    • Logistic回归时如果是二分类则默认输出AUC和ROC曲线,其原理是利用预测概率值进一步进行ROC曲线,研究者也可以自行保存预测概率值,然后使用SPSSAU可视化模块里面的ROC曲线进行绘制等。

    • SPSSAU进行logistic回归模型构建时,自变量X(特征项)中包括定类数据如何处理?
    • logistic回归模型时通常不会关注于数据类型本身,如果一定要处理,建议可对定类数据进行哑变量转化后放入,关于哑变量可点击查看

    • SPSSAU中logistic回归模型合格的判断标准是什么?
    • 机器学习模型中,通常均为先使用训练数据训练模型,然后使用测试数据测试模型效果。通常判断标准为训练模型具有良好的拟合效果,同时测试模型也有良好的拟合效果。机器学习模型中很容易出现‘过拟合’现象即假的好结果,因而一定需要重点关注测试数据的拟合效果。针对单一模型,可通过变换参数调优,与此同时,可使用多种机器学习模型,比如使用决策树、随机森林、支持向量机、神经网络、Xgboost模型等,综合对比选择最优模型。

    • SPSSAU机器学习如何进行预测?
    • SPSSAU中默认带有数据预测功能,当特征项X有完整数据,但标签项(因变量Y)没有数据时,此时‘保存预测值’,SPSSAU会默认对此种情况进行预测。如下图中的编号9到12共4行数据,其只有X没有Y,那么保存预测值时,默认对该4行数据进行预测。机器学习的各方法(包括决策树/随机森林/KNN/贝叶斯/支持向量机/神经网络/logistic回归/Xgboost等)均遵从此规则。

    • 如何将多个模型绘制ROC曲线对比优劣?
    • 如果涉及多个模型预测能力绘制ROC曲线,用于多个模型预测能力对比。建议按以下步骤进行:

    • 第1步是得到各个模型(比如神经网络模型、随机森林模型、logistic回归、Xgboost等)的预测值标题,该预测值可通过SPSSAU中‘保存预测值’参数选中后得到;

    • 第2步是将得到的预测值作为ROC曲线时的‘检验变量X’。此时绘制出来的ROC曲线则会有多条,分别表示各模型的预测值。与此同时,ROC曲线时的‘状态变量Y’为实际真实情况上的Y数据,并且该数据正常情况下为二分类(即仅包括2个数字即两个类别)。

    • 机器学习算法时保存数据集标识的意思是什么?
    • 选择‘保存数据集标识’后,SPSSAU会新生成一个标题,用于标识模型构建时训练集或测试集,使用数字1表示训练集,数字2表示测试集。如果后续分析时(比如绘制ROC曲线)只针对训练集,那么使用筛选样本功能,筛选出训练集后分析即可。

    • 如何将多个机器学习模型数据绘制ROC曲线?
    • 如果有多个机器学习模型后,需要对比模型优劣情况。建议按下述步骤进行。

    • 第1步:每个机器学习模型最后一次构建后,选中‘保存预测信息’,系统会生成类别的预测概率;

    • 第2步:将多个机器学习模型的某类别的预测概率值一并纳入作为X,以及将Y作为Y,进行ROC曲线【注意,放入的是某个类别的预测概率值】;

    • 第3步:设置ROC曲线时对应的分割点,需要注意的是,分割点一定要设置为放入的对应类别时预测概率值对应的数字。

    • 需要提示的是:预测概率是指某类别的预测概率值,二分类时只有两个数字,比如是和否(数字1和数字0表示),那么‘是’对应的预测概率值即为模型预测出‘是’的概率,‘是’和‘否’的概率加和一定为1。

    • 机器学习算法中保存预测信息具体是什么意思?
    • 如果选中保存预测信息,并且为分类任务时,SPSSAU会新生成两项标题,分别是预测类别和预测概率。预测类别是指最终预测出来Y的类别,预测概率是指预测出Y的每个类别对应的概率情况;事实上某个类别的预测概率相对最大时,此时预测类别就为该类别(比如Y有A/B/C共3个类别,某样本时3个类别的预测概率分别是0.4,0.5,0.1),那么预测类别则为B类别。

    • 预测类别标题名称类似为‘Logit_Prediction_probability_****’,以及预测属于每个类别概率标题名类似‘Logit_Prediction_probability_1.0_****’标题中的1.0表示为数字1的预测概率。

    • 保存预测信息后,可进一步使用预测概率进行其它的分析或者处理,比如绘制ROC曲线等。

    • 为什么没有输出AUC指标及ROC曲线?
    • 如果是分类任务并且为二分类(Y为分类数据且为二分类,且参数上默认或者选择为分类任务),此时SPSSAU默认会输出ROC曲线及AUC指标等。如果是多分类(Y为分类数据且大于两类,且为分类任务),此时AUC指标的意义较小暂未输出,如果有需要,可按下述步骤进行。

    • 第1步:构建模型时先‘保存预测信息’,得到多个标题,每个标题对应1个类别时的预测概率;

    • 第2步:将某个类别(即1个标题)的预测概率作为X,Y为模型构建时的Y,并且ROC曲线时分割点设置为放入的类别项对应的数字;

    • 第3步:多个类别则重复进行多次,即得到每个Y类别标签的ROC曲线和AUC值等。