第五章 挖掘建模

经过数据探索与数据预处理,得到了可以直接建模的数据。根据挖掘目标和数据形式可以建立分类与预测、聚类分析、关联规则、时序模式和偏差检测等模型,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。

5.1 分类与预测

就餐饮企业而言,经常会碰到如下问题:

  1. 如何基于菜品历史销售情况,以及节假日、气候和竞争对手等影响因素,对菜品销量进行趋势预测?
  2. 如何预测未来一段时间哪些顾客会流失,哪些顾客最有可能会成为VIP客户?
  3. 如何预测一种新产品的销售量,以及在哪些类型的客户中会较受欢迎?

除此之外,餐厅经理需要通过数据分析来帮助他了解具有哪些特征的顾客的消费习惯;餐饮企业老板希望知道下个月的销售收入,原材料采购需要投入多少,这些都是分类与预测的例子。
分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数类型,预测给定自变量对应的因变量的值。

5.1.1 实现过程

(1)分类
分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别。
分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习。
(2)预测
预测是指建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制。
(3)实现过程
分类和预测的实现过程类似,以分类模型为例,实现过程如下图所示。


分类模型的实现步骤

分类算法有两步过程:第一步是学习步,通过归纳分析训练样本集来建立分类模型得到分类规则;第二步是分类步,先用已知的测试样本集评估分类规则的准确率,如果准确率是可以接受的,则使用该模型对未知类标号的待测样本集进行预测。
预测模型的实现也有两步,类似于上图描述的分类模型,第一步是通过训练集建立预测属性(数值型的)的函数模型,第二步在模型通过检验后进行预测或控制。

5.1.2 常用的分类与预测算法

主要分类与预测算法简介

5.1.3 回归分析

回归分析是通过建立模型来研究变量之间相互关系的密切程度、结构状态及进行模型预测的一种有效工具,在工商管理、经济、社会、医学和生物学领域应用十分广泛。从19世纪初高斯提出最小二乘估计起,回归分析的历史已有200多年。从经典的回归分析方法到近代的回归分析方法,按照研究方法划分,回归分析研究的范围大致如下:



在数据挖掘环境下,自变量与因变量具有相关关系,自变量的值是已知的,因变量是要预测的。
常见的回归模型如下表:

回归模型名称 使用条件 算法描述
线性回归 因变量与自变量是线性关系 对一个或多个自变量和因变量之间的线性关系进行建模,可用最小二乘法求解模型系数
非线性回归 因变量与自变量之间不都是线性关系 对一个或多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单的函数变换转化成线性关系,用线性回归的思想求解;如果不能转化,用非线性最小二乘法求解
Logistic回归 因变量一般有1和0(是否)两种取值 是广义线性回归模型的特例,利用Logistic函数将因变量的取值范围控制在0和1之间,表示取值为1的概率
岭回归 参与建模的自变量之间具有多重共线性 是一种改进最小二乘估计的方法
主成分回归 参与建模的自变量之间具有多重共线性 主成分回归是根据主成分分析的思想提出来的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性

线性回归模型是相对简单的回归模型,但是通常因变量和自变量之间呈现某种曲线关系,就需要建立非线性回归模型。
Logistic回归属于概率型非线性回归,分为二分类和多分类的回归模型。对于二分类的Logistic回归,因变量y只有“是、否”两个取值,记为1和0.假设在自变量x1,x2,...,xp作用下,y取“是”的概率是p,则取“否”的概率是1-p,研究的是当y取“是”发生的概率p与自变量x1,x2,...,xp的关系。
当自变量之间出现多重共线性时,用最小二乘估计的回归系数将会不准确,消除多重共线性的参数改进的估计方法主要有岭回归和主成分回归。

1.Logistic回归分析介绍

(1)Logistic函数
Logistic回归模型中的因变量的只有1-0(如是和否、发生和不发生)两种取值。假设在p个独立自变量x1,x2,...,xp作用下,记y取1的概率是p = P(y = 1|X),取0的概率是1-p,取1和取0的概率之比为p/(1-p),称为事件的优势比(odds),对odds曲子然对数即得Logistic变换Logit(p) = ln(p/(1-p))
Logit(p) = ln(p/(1-p)) = z,则p = 1/(1+e-z)即为Logistic函数,如下图所示:

Logistic函数

当p在(0,1)之间变化时,odds的取值范围是(0, +∞),则ln(p/(1-p))的取值范围是(-∞,+∞)。
(2)Logistic回归模型
Logistic回归模型是建立ln(p/(1-p))与自变量的线性回归模型。
Logistic回归模型为:

因为ln(p/(1-p))的取值范围是(-∞,+∞),这样,自变量x1,x2,...,xp可在任意范围内取值。
记g(x) = β01x1+...+βpxp,得到:

(3)Logistic回归模型解释

2.Logistic回归建模步骤

Logistic回归模型的建模步骤如下所示:

Logistic回归模型的建模步骤

1)根据分析目的设置指标变量(因变量和自变量),然后收集数据,根据收集到的数据,对特征再次进行筛选;
2)y取1的概率是p = P(y = 1|X),取0概率是1-p。用ln(p/(1-p))和自变量列出线性回归方程,估计出模型中的回归系数;
3)进行模型检验。模型有效性的检验指标有很多,最基本的有正确率,其次有混淆矩阵、ROC曲线、KS值等。
4)模型应用:输入自变量的取值,就可以得到预测变量的值,或者根据预测变量的值去控制自变量的取值。
下面对某银行在降低贷款拖欠率的数据进行逻辑回归建模,该数据示例如下表所示:

年龄 教育 工龄 地址 收入 负债率 信用卡负债 其他负债 违约
41 3 17 12 176.00 9.30 11.36 5.01 1
27 1 10 6 31.00 17.30 1.36 4.00 0
40 1 15 14 55.00 5.50 0.86 2.17 0
41 1 15 14 120.00 2.90 2.66 0.82 0
24 2 2 0 28.00 17.30 1.79 3.06 1

利用Scikit-Learn对这个数据进行逻辑回归分析。首先进行特征筛选,特征筛选的方法有很多,主要包含在Scikit-Learn的feature_selection库中,比较简单的有通过F检验(f_regression)来给出各个特征的F值和p值,从而可以筛选变量(选择F值大的或者p值小的特征)。其次有递归特征消除(Recurisive Feature Elimination,RFE)和稳定性选择(Stability Selection)等比较新的方法。这里使用了稳定性选择方法中的随机逻辑回归进行特征筛选,然后利用筛选后的特征建立逻辑回归模型,输出平均正确率,其代码如下:

# _*_ coding:utf-8 _*_
# 逻辑回归 自动建模
import pandas as pd

# 参数初始化
filename = 'data/fifth_data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:, :8].as_matrix()
y = data.iloc[:, 8].as_matrix()

from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR()  # 建立随机逻辑回归模型,筛选变量
rlr.fit(x, y)  # 训练模型
rlr.get_support()  # 获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
print(u'通过随机逻辑回归建模筛选特征结束。')
print(u'有效特征维:%s' % ','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix()  # 筛选好特征

lr = LR()
lr.fit(x, y)  # 用筛选后的特征数据来训练模型
print(u'逻辑回归模型训练结束。')
print(u'模型的平均正确率为:%s' % lr.score(x, y))

运行结果:

通过随机逻辑回归模型筛选特征结束。
有效特征为:工龄,地址,负债率,信用卡负债
逻辑回归模型训练结束。
模型的平均正确率为:0.814285714286

你可能感兴趣的:(第五章 挖掘建模)