统计学12-逻辑回归

作者: 赵阳_c149 | 来源:发表于2019-11-26 11:09 被阅读0次

定义

线性回归中, 反应变量是一个数值变量。在逻辑回归中,得到的反应变量在0到1之间。比如,在信用卡交易的例子中,可以认为诈骗的案例为1,其他非诈骗的案例为0。那么,逻辑回归就是要创建线性模型,以预测对数几率而不是反应变量本身。

log(\frac{p}{1-p}) = b_0 + b_1 * x_1 + b_2 * x_2 + ...

这里:
p是某个值出现的概率,称为优势率(odds)。

使用对数几率改变方程式,可以直接得出概率:


logic.png

这个函数称为sigmoid函数。

Sigmoid.png
sigmoid函数通过线性回归的直线得到值,并将值映射到一个0到1之间的概率值。

python 演示

  • 导入数据和库
import numpy as np
import pandas as pd
import statsmodels.api as sm

df = pd.read_csv("./fraud_dataset.csv")
df.head()
  • 获得虚拟变量
df[['no_fraud', 'fraud']] = pd.get_dummies(df['fraud'])
df = df.drop('no_fraud', axix = 1)

df[['weekday', 'weekend']] = pd.get_dummies(df['day'])
df = df.drop('weekend', axix = 1)
  • 逻辑回归
df['intercept'] = 1

logit_mod = sm.Logit(df['fraud'], df[['intercept','duration', 'weekday']])
results = logit_mod.fit()
results.summary()
  • 显示系数的指数值以便对其进行解释
np.exp(results.params)

例如假设工作日的系数为12.76,则可以说在其他解释变量不变的情况下,在工作日,诈骗为12.76乘以周末的值
exp:返回e的n次方。

解释结果

p值

和线性回归类似,这里p值有助于我们理解某个变量对于我们用模型预测结果是否具有统计学上的显著性。

系数

对于系数的理解和线性回归不同。他是指,在其他解释变量不变的情况下,解释变量每增加一个单位,优势率(odds)将发生乘数变化(multiplicateive change),变化量为exp(系数)
逻辑回归中对虚拟变量的编码方式和线性回归中相同,所以其解释方式也仅仅是加上了一个指数化的过程。
值得注意的是:

  1. 通常对系数进行指数处理
np.exp(results.params)

例如假设工作日的系数为12.76,则可以说在其他解释变量不变的情况下,在工作日,诈骗为12.76乘以周末的值

  1. 如果系数为负,通常描述其相反方向的变化:在其他解释变量不变的情况下,在页面上的时长每降低一个单位,诈骗将增加4.32倍。

模型诊断+性能指标

通常情况下,我们可以用准确率描述模式是否能较好的预测正确的标记。正确率是指正确标记的行数除以数据集中的总行数的比例。但是有些情况下,正确率并不能较好的发挥作用,尤其是在数据集中存在着大量不均衡的数据时。所以还有一些其他的常用衡量标准,为此我们还需要理解模型是否能较好的符合这些衡量标准。更多类似的概念可查看 机器学习纳米学位课程

混淆矩阵

召回率:recall,表示的是样本中的正例有多少被预测正确了。
\frac{True Positive}{ True Positive+ FalseNegative}
准确率:precision,检测到为真,而且真实结果也为真的概率。
\frac{True Positive}{ True Positive+ FalsePositive}
精确率:accuracy,分类器正确分类的样本数与总样本数之比。
\frac{True Positive}{sample}

python 演示

  • 导入数据和库
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, precision_score, recall_score, accuracy_score
from sklearn.model_selection import train_test_split
np.random.seed(42)

df = pd.read_csv('./admissions.csv')
df.head()
  • 创建虚拟变量
df[['level1','level2','level3','level4']] = pd.get_dummies(df['prestige'])
  • 逻辑回归
y = df['admit']
X = df[['gre','gpa','level1','level2','level3']]
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.20,random_state=0) 
log_mod = LogisticRegression()
log_mod.fit(X_train, y_train)

这里是逻辑回归 sklearn 包的相关文献。

  • 预测
y_preds = log_mod.predict(X_test)
y_preds
  • 输出混淆矩阵
print(precision_score(y_test, y_preds))
print(recall_score(y_test, y_preds))
print(accuracy_score(y_test, y_preds))
confusion_matrix(y_test, y_preds)

这里是处理混淆矩阵的相关文献。

precisionrecallaccuracy 这些都是常见的度量标准。

  • 解释confusion_matrix(y_test, y_preds)的结果
    confusion_matrix(y_test, y_preds)输出的是一个矩阵即二维数组,例如:
Predicted (预测值)
Actual(实际值) 0 1
0 23 1
1 14 2

因此,

  • 在我们预测的未入学人数中,有 23 人未入学。
  • 在我们预测的未入学人数中,有 14 人已入学。
  • 在我们预测的已入学人数中,有 1 人未入学。
  • 在我们预测的已入学人数中,有 2 人已入学。

其他常见的指标

其他非常常见的指标是 ROC 曲线 与 AUC 。这些实际上使用的是逻辑回归模型的概率,而不仅仅是标签。更多关于这两个指标的资料,点击 这里 即可获取。

python 演示

### Unless you install the ggplot library in the workspace, you will 
### get an error when running this code!

from ggplot import *
from sklearn.metrics import roc_curve, auc
%matplotlib inline

preds = log_mod.predict_proba(X_test)[:,1]
fpr, tpr, _ = roc_curve(y_test, preds)

df = pd.DataFrame(dict(fpr=fpr, tpr=tpr))
ggplot(df, aes(x='fpr', y='tpr')) +\
    geom_line() +\
    geom_abline(linetype='dashed')

逻辑回归通常的步骤

总结下来,逻辑回归通常的步骤是:

本文要点

  1. 如何使用 python 来实现逻辑回归,用 statsmodels 和 sklearn 包来预测二元分类反应值。

  2. 如何解释 statsmodels 逻辑回归输出的系数。

  3. 如何用多个指标来评估模型效果。

  4. 如何在 python 里评估模型拟合效果。

相关文章

  • 统计学12-逻辑回归

    定义 在线性回归中, 反应变量是一个数值变量。在逻辑回归中,得到的反应变量在0到1之间。比如,在信用卡交易的例子中...

  • 信贷风控实战(三)——评分卡建模之逻辑回归

    1. 逻辑回归的评分映射逻辑   逻辑回归(Logistic Regression)是统计学习中的经典分类方法,是...

  • 逻辑回归

    逻辑回归 0.引言 本文主要参考了李航的《统计学习方法》,算做学习笔记。 1. 二元逻辑回归模型定义 二元逻辑回归...

  • 逻辑斯谛回归/LR(Logistic Regression)

    作为统计学习的经典分类方法,逻辑斯谛回归在今天依旧应用非常广泛。 算法释义 逻辑斯谛回归指输入 x 的线性模型与 ...

  • 逻辑回归原理分析与python实现

    前言 逻辑回归是统计学习中的经典分类算法,如:可用于二分类 逻辑回归有以下几个特点: 优点:计算代价不高,易于理解...

  • 统计学习方法|SVM

    01 起 在统计学习方法这个板块中,我们学习了多个分类算法,比如逻辑斯蒂回归,在逻辑斯蒂回归模型中,我们对数据集有...

  • 逻辑回归与最大熵模型

    本文为《统计学习方法》第6章笔记。 概论 逻辑回归与最大熵模型都属于对数线性模型,逻辑回归求解似然函数的极大值,得...

  • 统计机器学习-逻辑斯谛回归与最大熵模型

    逻辑斯谛回归(逻辑回归)模型,是统计学习中的经典分类方法。最大熵是概率模型学习的一个准则,推广到分类问题得到最大熵...

  • 逻辑回归与最大熵模型

    转自微信公众号:机器学习算法与Python学习 以及统计学习方法 Logistic回归 逻辑回归是用来分类的,是一...

  • Logistic回归模型|算法实现

    01 起 在这篇文章中,我们学习了逻辑斯谛回归模型的算法原理:统计学习方法|logistic回归 今天我们基于算法...

网友评论

    本文标题:统计学12-逻辑回归

    本文链接:https://www.haomeiwen.com/subject/otddbctx.html