数据挖掘工作流
目前带着一个小组在做全面的用户画像的工作,不少同学都是第一次接触数据挖掘的工作。于是总结了一个较为简单,通用的数据挖掘工作流,也贴出作为自己的工作结果吧。
数据挖掘工作流
=========
#### 1 收集数据
收集数据一般是补充外部数据,包括采用爬虫和接口,获取,补充目前数据不足部分。Python scrapy,requests是很好的工具。
#### 2 准备数据
主要包括数据清洗,预处理,错值纠正,缺失值填补。连续值离散化,去掉异常值,以及数据归一化的过程。同时需要根据准备采用的挖掘工具准备恰当的数据格式。
#### 3 分析数据
通过初步统计、分析以及可视化,或者是探索性数据分析工具,得到初步的数据概况。分析数据的分布,质量,可靠程度,实际作用域,以确定下一步的算法选择。 R的ggplot,python的matplotlib,js 的leaflet,d3都是很好的可视化工具。
#### 4 训练算法
整个工作流最核心的一步,根据现有数据选择算法,生成训练模型。主要是算法选择和参数调整
1. 算法的选择,需要对算法性能和精度以及编码实现难度进行衡量和取舍。 (甚至算法工具箱对数据集的限制情况都是算法选择考虑的内容)。实际工程上,不考虑算法复杂度超过O(N^2)的算法。Java的Weka和Python的Scipy是很好的数据挖掘分析工具,一般都会在小数据集做算法选择的预研。
2. 参数调整。这是一门神奇的技能,只能在实际过程中体会。
#### 5 测试算法
这一步主要是针对监督算法(分类,回归),为了防止模型的Overfit,需要测试算法模型的覆盖能力和性能。方法包括Holdout,还有random subsampling.
非监督算法(聚类),采用更加具体的指标,包括熵,纯度,精度,召回等。
#### 6 使用,解释,修正算法
数据挖掘不是一个静态的过程,需要不断对模型重新评估,衡量,修正。算法模型的生命周期也是一个值得探讨的话题。