数据挖掘流程
理解业务与数据
一个好的数据挖掘必须去理解业务,对业务好的理解能够帮助你选择合适的数据、合适的算法去训练,得到更好的结果
数据准备
数据准备是基于原始数据,去构建数据挖掘模型所需的数据集的所有工作。一个好的数据准备过程能够使你甚至无需使用复杂的算法就能得到好用的模型。这是整个数据挖掘过程中最重要也是最耗时的环节。
- 数据收集
- 你要知道项目需要什么数据,从哪里获取数据
- 从不同的数据源中获取数据(数据库、互联网等等)
- 数据探索
- 对数据分析、预处理以及转换等基础工作
- 将获得的数据根据业务进行处理,比如把内容进行分词,从而获得了一个分词后的字段
- 也叫把数据升维、数据扩展
- 数据清洗
- 处理扩展后的数据,去除无用的数据
- 缺失值的处理
- 删掉
- 补充
- 不做处理
- 异常值的处理
- 数据本身是错误,需要修正或丢弃
- 数据是正确的,就根据业务需求进行处理
- 数据偏差的处理
- 丢弃较多的数据
- 补充较少的数据
- 数据标准化
- 有的字段是数值大,有的字段数值小,可能影响有的算法的判断
- 比如可以将数据标准化到0-1的区间内
- 特征选择
- 尽可能留下较少的数据维度,又不降低模型训练效果
- 维度越多数据越稀疏
- 维度越多计算耗时长
- 使用一些特征选择的技巧
- 数据采样
- 构建训练集和测试集
- 留出法
- 交叉验证法
- 自助法
构建模型
构建模型也叫做训练模型,重点解决技术方面的问题
选用各种各样的算法模型来处理数据,让模型学习数据的规律,并产出模型
如果有多重技术要使用,那么每个技术都要区别对待,因为不同技术所需要的数据类型可能是不相同的
一般问题分为四种
- 分类问题
- 聚类问题
- 回归问题
- 关联问题
评估模型
模型的效果如何,能否满足业务需求,需要使用各种评估手段,是否能够达到所需的指标。
有两个结果
- 评估通过,进入下一阶段
- 评估不通过,返回构建模型迭代更新
评估指标
- 混淆矩阵
- 业务抽样评估
- 泛化能力
- 过拟合:模型在训练集上表现良好,在测试集或者验证集上表现不佳,泛化能力很差,成死记硬背了
- 欠拟合:在训练集和测试集表现都不好
- 模型速度
- 鲁棒性
- 可解释性
模型部署
解决模型实际落地的一些问题,随着新数据的产生,我们的模型可能会逐渐变得不好用,所以模型部署是一个数据挖掘项目的结束,也是一个数据挖掘项目的开始
- 模型的存储
- 模型的优化
- 模型训练阶段优化的目标–尽量好的效果
- 模型部署阶段优化的目标–少影响效果的情况下,适配应用的限制
- 记录项目经历,留下文档,也方便今后的迭代改进
- 考虑数据挖掘模型能否做成统一的服务,应用在更多地方
- 监控和迭代
- 随着时间流逝,模型不会一直都效果很好
- 结果监控
- 人工定期复审
小结
数据挖掘的过程并非是一番风顺的,经常会遇到问题,导致不会按固定的流程进行。
- 准备数据阶段发现数据无法解决业务需求时,要返回去重新讨论业务需求与数据的问题
- 训练模型阶段发现数据与模型无法匹配,或者如果要更换其他模型时,要回到准备数据环节
- 模型评估的时候发现效果达不到预期,可能要回到准备数据环节重新处理数据,甚至要回到理解业务阶段