拿电商行业举例, 经常会遇到以下问题:
如果基于商品的历史销售情况, 以及节假日, 气候, 竞争对手等影响因素, 对商品的销量进行趋势预测?
如何预测未来一段时间哪些客户会流失, 哪些客户可能会成为 VIP 用户?
如果预测一种新商品的销售量, 以及哪种类型的客户会比较喜欢?
除此之外, 运营部门需要通过数据分析来了解具有某些特征的客户的消费习惯, 管理人员希望了解下一个月的销售收入等, 这些都是分类与预测的日志.
分类和预测是预测问题的两种主要类型.
分类主要是预测分类标号(离散值)
预测主要是建立连续值函数模型
挖掘模型实现流程
准备训练集, 测试集
构建模型
进行分类或者预测
常见分类与预测算法
1, 回归分析
回归分析是确定预测值与其他边变量之间的依赖关系最常见的统计学方法. 包括:
线性回归模型
非线性回归模型
Logicstic 逻辑回归模型
岭回归模型
主成分回归模型
偏最小二乘回归模型
...
2, 决策树
决策树采用自顶向下的递归方式, 在内部节点进行属性值比较, 并根据不同的属性值从该节点向下分支, 最终得到的叶节点就是学习划分的类.
3, 人工神经网络
人工神经网络是一种模仿大脑神经网络结构和功能建立的信息处理系统, 表示神经网络的输入与输出变量之间关系的模型.
4, 贝叶斯网络
贝叶斯网络是不确定知识表达和推理领域最有效的理论模型之一
5, 支持向量机
支持向量机是一种通过某种非线性映射, 把低维的非线性可分为转化为高维的线性可分, 在高维空间进行线性分析的算法
以下我们重点讲解逻辑回归模型, 决策树模型, BP 神经网络模型来展开讲解.
逻辑回归模型
简介
逻辑回归属于规律性非线性回归, 分为二分类和多分类的回归模型. 对于二分类的逻辑回归, 因变量 y 只有「是, 否」两种取值, 记为 1 和 0.
假设在自变量 x1, x2, ..., xp 作用下, y 取 是 的概率是 p, 取否的概率是 1 - p. 研究的是当 y 取是发生的概率 p 与自变量 x1,x2,....,xp 的关系.
逻辑回归建模步骤
根据分析需求设置指标变量(因变量和自变量)
收集数据
将收集到的数据进行预处理(筛选, 清洗)
估计回归系数
进行模型检验
模型应用
举例
某个银行想要在降低贷款拖欠率的数据进行逻辑回归建模. 示例数据如下所示:
数据文件已经上传到百度网盘: https://pan.baidu.com/s/1pgNeFH4gwz90bL0MPASzkg
我们接下来将使用 Scikit-learn 来对上述数据进行逻辑回归分析.
特征选取
Python 的 scikit-learn 的 feature_selection 库可以进行特征的选择. 其中比较简单的有 F 检验 (通过 f_regission 来给出各个特征的 F 值和 p 值, 从而可以筛选变量(选择 F 值大的, 或者 p 值小的特征)), 其次有递归特征消除(RFE) 和稳定性选择 (SS) 等比较新的方法. 这里使用了: 稳定性选择方法中的随机逻辑回归进行特征筛选, 然后利用筛选后的特征建立逻辑回归模型, 输出平均正确率.
参考代码
- #-*- coding: utf-8 -*-
- # 1. 导入 pandas 读取数据
- import pandas as pd
- data = pd.read_excel('bankloan.xls')
- # 2. 获取数据
- # 2.1 获取前 8 列数据, 并转换为矩阵
- x = data.iloc[:, :8].as_matrix()
- # 2.2 获取二分类数据
- y = data.iloc[:,8].as_matrix()
- # 3. 导入机器学习库
- from sklearn.linear_model import RandomizedLogisticRegression as RLR
- # 4. 建立随机逻辑回归模型, 用于特征筛选
- rlr = RLR()
- # 4.1 训练模型
- rlr.fit(x, y)
- # 4.2 获取特征筛选结果
- validFeatureBoolean = rlr.get_support()
- print validFeatureBoolean
- # 找到有效的特征值
- validFeatures = []
- for i in range(0, len(validFeatureBoolean)):
- if validFeatureBoolean[i]:
- validFeatures.append(data.columns[i])
- print u'通过随机逻辑回归模型筛选特征结束...'
- print ','.join(validFeatures)
- # 将有效特征值转换为矩阵
- # print data[validFeatures]
- x = data[validFeatures].values
- # print x
- # 5. 建立逻辑回归模型
- from sklearn.linear_model import LogisticRegression as LR
- lr = LR()
- # 训练模型
- lr.fit(x, y)
- print u'逻辑回归模型训练结束'
- print u'模型的平均正确率为:%s' % lr.score(x, y)
运行后可以发现通过 RLR 模型筛选后的特征为:
工龄, 地址, 负债率, 信用卡负债
其他特征被过滤掉了, 模型的平均正确率为: 0.8142857142857143
来源: http://www.bubuko.com/infodetail-3399410.html