我们无法从上帝视角看待世界,但是有大量的数据来发现规律
数据挖掘就是从大量的数据中根据算法模型得到有用的规律信息,以备后续的工作与决策。因此一般数据挖掘的步骤为:业务理解、数据获取、数据预处理、数据建模、模型评估、模型部署。业务理解与模型部署需要结合实际情况进行分析,本文不考虑这两部分。将剩下步骤分为数据获取、数据预处理、模型建立、整体分析进行整理与归纳。
数据获取
- 公共数据集
许多的高校与政府部门会公布一些开源的公开数据集,这些数据集都是经过处理的高质量数据集,对于学习数据挖掘是一个很好的练手数据,比较出名的如UCI的公开数据集。 - 竞赛数据
公共数据集一般是用于科研,研究算法实验项目。若需要得到第一手的业务数据集,各大数据竞赛的数据集将是一个更好的选择。国外的kaggle,国内的天池都存在大量的公司业务真实数据集。 - 爬虫获取
目前各大网站提供大量信息,知乎提供各个话题的优质回答、豆瓣提供电影等娱乐信息的评分与评论。利用数据分析就更能对人们的意见与娱乐偏好更有感性认识,为了获取这些原始数据,爬虫就是一个高效的手段。
数据预处理
当我们得到原始数据之后,就需要对数据进行预处理,为后续建模奠定基础。
- 数据清洗
数据清洗的主要目的去除数据集中的重复值、缺失值、异常值等。重复值一般将冗余信息直接删去;缺失值看该属性缺失的数量有多少,一般如果超过90%就直接将该属性删去,若缺失值数量不多,可采用平均值填充等方法;异常值处理方法与缺失值处理方法类似,不过异常值需注意是属性的异常还是标签异常。 - 数据变换
数据变换指某些特殊的数据需要转换为其他形式。比如通过归一化降属性放入0-1的区间内、图像数据的标准化处理等。 - 特征工程
特征工程作为模型的输入,决定了模型好坏的上限,是一个非常重要的部分。特征工程可分为人工特征与机器特征。人工特征指人为根据经验与技巧创建特征,这需要深刻理解业务,从实际角度出发,探索出好的特征;机器特征指模型直接生成的特征,如PCA、神经网络特征等。
在数据预处理部分,不同的人有不同的概念理解,比如有的人将数据清洗等工作直接看做特征工程的内容。虽然概念不同,但目的基本相同。数据预处理阶段就是将原始收集的粗糙数据通过各种方法转换为高质量的数据,作为模型的输入。
模型建立
上文说了特征工程决定了整个模型的上限,那么模型的选择与调参就是为了逼近这个上限。模型的建立指为了挖掘出有用的信息所选用的各种算法,无论是传统的机器学习算法,还是近年比较流行的深度学习算法。按照学习的方式不同,机器学习算法可分为:监督学习、非监督学习、半监督学习、强化学习。面对不同的数据情况、可选用分类、回归、聚类、关联分析等不同的算法。
目前单模型都不能得到很好的结果,都采用集成学习的理念,将模型进行融合。集成学习两大原则:
- 个体学习器之间强依赖关系、必须串行生成序列化方法,Boosting。
- 个体学习器不存在强依赖关系、可同时生成的并行化方法,Bagging、RF。
目前越来越多的算法被提出,但是没有最好最优的算法,只有最合适的。
整体分析
在整个流程中,对数据的分析应该处于各个阶段,无论是数据的预处理还是建模阶段都应该对数据进行全面的分析。在模型建立前,应该考虑构造合适的标签与优质的特征,在得到模型之后,应该分析结果,从业务或者技巧角度来改善这个结果。所以整体的的分析应该是一个时刻存在,并且多次进行的,一遍又一遍来优化模型。