【一】数据挖掘(DM)到底是何方神圣?
- 什么是数据挖掘?
- 数据挖掘有什么用处?
- 数据挖掘怎么做?
在此借助 5W1H 的思想,从整体上了解下数据挖掘,比如什么是数据挖掘、为什么要做数据挖掘、在哪些场景下用数据挖掘,以及怎么做数据挖掘。
什么是数据挖掘?
数据挖掘(Data mining)一般是指从大量的数据中自动搜索隐藏于其中的有着特殊关系性的信息并用于产生商业价值。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。
随着互联网技术的发展,数据的生产、收集和存储也越来越方便。面对海量的数据,通常其维度众多,涉及的问题又复杂,我们需要一种规范的解决方案,能够利用并且充分利用这些数据里的每一个部分,通过一些自动化的机器学习算法,从数据中自动提取价值。而数据挖掘就提供了这样一系列的框架、工具和方法,可以处理不同类型的大量数据,并且使用复杂的算法部署,去探索数据中的模式。
数据挖掘有什么用处?
既然数据挖掘是一种方法,那就要用它去解决一些问题。下面具体讲一下最实际的四类问题,数据挖掘到底有什么用处。
1.分类问题
分类问题是最常见的问题。比如新闻网站,判断一条新闻是社会新闻还是时政新闻,是体育新闻还是娱乐新闻?这就是一个分类问题,也就是对已知类别的数据进行学习,为新的内容标注一个类别。
360导航栏图
2.聚类问题
聚类与分类不同,聚类的类别预先是不清楚的,我们的目标就是要去发现这些类别。聚类的算法比较适合一些不确定的类别场景。
比如出去玩,捡了一大堆不同的树叶回来,你不知道这些树叶是从什么树上掉落的,但是你可以根据它们的大小、形状、纹路、边缘等特征给树叶进行划分,最后得到了三个较小的树叶堆,每一堆树叶都属于同一个种类。
3.回归问题
简单来说,回归问题可以看作高中学过的解线性方程组。它的最大特点是,生成的结果是连续的,可以拟合成直线或曲线,而不像分类和聚类生成的是一种离散的结果。
比如,使用回归的方法预测北京某个房子的总价(y),假设总价只跟房子的面积(x)有关,那么我们构建的方程式就是 ax+b=y。如何根据已知 x 和 y 的值解出 a 和 b 就是回归问题要解决的。回归方法是通过构建一个模型去拟合已知的数据(自变量),然后预测因变量结果。
4.关联问题
关联问题最常见的一个场景就是推荐,比如,你在京东或者淘宝购物的时候,在选中一个商品之后,往往会给你推荐几种其他商品组合,这种功能就可以使用关联挖掘来实现。
数据挖掘怎么做?
数据挖掘,也是有方法论的。应用最多的 CRISP-DM(Cross-industry Standard Process for Data Mining,跨行业数据挖掘标准流程)方法论,这里先简单地了解数据挖掘的操作步骤有哪些,后面也会逐一详细讲解。
下面我们就来看一下,如何依照这 6 个步骤进行数据挖掘。
1.业务理解(Business Understanding)
想象有一天,老板突然给你说:“小高啊,你能不能训练一个模型来预测一下明年公司的利润呢?”这就是一个业务需求了,若要解决这个问题,首先要弄明白需求是什么,这就是业务理解,或者也可以叫作商业理解。比如,你要搞清楚什么是利润、利润的构成是什么样的、利润受什么影响,同时老板说的利润是净利润还是毛利润等问题。
业务理解,主旨是理解你的数据挖掘要解决什么业务问题。任何公司启动数据挖掘,都是想为业务赋能,因此 我们必须从商业或者从业务的角度去了解项目的要求和最终的目的,去分析整个问题涉及的资源、局限、设想,甚至是风险、意外等情况。从业务出发,到业务中去。
2.数据理解(Data Understanding)
明白了问题,还要明白解决问题需要什么数据。比如这个时候,老板又说了:“我想改改需求,能不能多做几个模型,把竞品公司明年的利润也都算算,我想对比一下。”然而“巧妇难为无米之炊”,你根本就没有这个数据,这个需求也就无从完成了。
数据理解阶段始于数据的收集工作,但重点是在业务理解的基础上,对我们所掌握的数据要有一个清晰、明确的认识,了解有哪些数据、哪些数据可能对目标有影响、哪些可能是冗余数据、哪些数据存在不足或缺失,等等。
需要注意的是,数据理解和业务理解是相辅相成的,因此在制定数据挖掘计划的时候,不能只是单纯地谈需求。数据理解得不好,很可能会导致你对业务需求的错误评估,从而影响后续进度甚至是结果。
3.数据准备(Data Preparation)
完成上面两个步骤后,就可以准备数据了。你需要找销售要销售数据,找采购要采购数据,找财务要各种收入、支出数据,然后整理所有需要用到的数据,想办法补全那些缺失的数据,计算各种统计值,等等。数据准备就是基于原始数据,去构建数据挖掘模型所需的数据集的所有工作,包括数据收集、数据清洗、数据补全、数据整合、数据转换、特征提取等一系列动作。
事实上,在大多数的数据挖掘项目中,数据准备是最困难、最艰巨的一步。如果你的数据足够干净和完整,那么在建模和评估阶段所付出的精力就越少,甚至都不必去使用什么复杂的模型就可以得到足够好的效果,所以这个阶段也是十分重要的。
4.构建模型(Modeling)
也可以叫作训练模型,在这一阶段,我们会把准备好的数据喂给算法,所以这个阶段重点解决的是技术方面的问题,会选用各种各样的算法模型来处理数据,让模型学习数据的规律 ,并产出模型用于后续的工作。
对于同一个数据挖掘的问题类型,可以有多种方法选择使用。如果有多重技术要使用,那么在这一任务中,对于每一个要使用的技术要分别对待。一些建模方法对数据的形式有具体的要求,比如 SVM 算法只能输入数值型的数据 。 因此,在这一阶段,重新回到数据准备阶段执行某些任务有时是非常必要的。
5.评估模型(Evaluation)
在模型评估阶段,我们已经建立了一个或多个高质量的模型。但是模型的效果如何,能否满足我们的业务需求,就需要使用各种评估手段、评估指标甚至是让业务人员一起参与进来,彻底地评估模型,回顾在构建模型过程中所执行的每一个步骤,以确保这些模型达到了目标。在评估之后会有两种情况,一种是评估通过,进入到上线部署阶段;另一种是评估不通过,那么就要反过来再进行迭代更新了。
6.模型部署(Deployment)
整理了数据,研究了算法模型,并通过了多方评估,终于到了部署阶段。此时可能还要解决一些实际的问题,比如长期运行的模型是否有足够的机器来支撑,数据量以及并发程度会不会造成我们部署的服务出现问题,等等。但是,关于数据挖掘的生命周期可能还远未结束,关于一些特殊情况的出现可能仍然无法处理,以及在后续的进程中,随着新数据的生产以及变化,我们的模型仍然会发生一些变化。所以部署是一个挖掘项目的结束,也是一个数据挖掘项目的开始。
总结
本文主要来认识一下“数据挖掘”,从“它解决什么问题”和“怎么做”的角度建立了全面而具体的认识。后面的篇幅,也将围绕这些内容进行展开和扩充讲解。
学习也是一个自主的过程,平时多找一些资料来学习、补充,任何关于数据挖掘的疑问、工作疑惑等,你都可以在留言区与专栏的所有用户一起沟通交流。