洞见数据之密
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

一线专家谈谈:数据挖掘在实际领域中的那些事儿

作者 佘伟

【编者按】本文是4月18日大数据杂谈群分享的内容。关注“大数据杂谈”公众号,点击“加群学习”,更多大牛一手技术分享等着你。讲师:佘伟(明略数据技术合伙人兼研究院执行院长)。

企业中的数据挖掘

我们先来看看在企业中数据挖掘都是怎么做的,以及有着哪些问题。

图1中的左边是SPSS在1999年提出的《跨行业数据挖掘标准流程》,在图中定义了数据挖掘的6个步骤。虽然这个图已经提出有10几年了,但是在大数据环境下,这个流程依然适用。

图1

1.理解商业问题。这需要大数据科学家和行业专业,以及客户的业务专家一起来明确问题。这是整个大数据挖掘中最关键的一步。如果不理解业务就贸然开做,最后的项目一定是失败的。

2.分析数据。当明确了业务问题之后,我们就需要去分析数据,看看到底哪些数据能够支撑我们的业务,用哪些数据去解决问题。在这个阶段,我们可能发现数据不足,或者数据质量太差,这个时候就可能要寻求第三方数据的帮助,或者规划如何去采集更多的数据了。

数据挖掘。前两步都是在做数据挖掘前的准备,当业务明略,数据可用时,我们就正式开始数据挖掘了。

1.提取特征

首先我们要对数据进行处理,从数据中提取特征。这是数据挖掘非常关键的一步,特征的好坏直接影响最终模型的效果。在数据挖掘过程中,算法其实并不是最主要的因素,影响效果最直接的因素就是特征。

良好的特征需要有非常好的区分度,只有这些特征,才能很好的去解决问题。举个例子,我们要辨别一个西瓜是好是坏,可能颜色是一个特征,条纹,重量,瓜蒂也是特征。但是,大家都知道西瓜一般都是绿色的,所以用绿色去作为判别西瓜好坏是没有区分度的。而条纹,重量,瓜蒂是判别一个西瓜是好是坏非常重要的因素,因此他们是好特征。

我们在解决不同问题时,所用的特征是不一样的。可能在解决某个问题有用的特征在解决另外一个问题时就不具备区分度。因此,我们必须紧密的联系业务,去选择合适的特征。

在提取特征时,因为我们是大数据挖掘,所以要使用大数据技术去从原始数据中提取特征。这需要大数据科学家有着非常丰富的大数据处理技能。

2.建立模型

当特征提取完毕后,我们就需要去应用算法建立模型了。在实际的建模过程中,由于数据量过于庞大,算法训练过程往往十分缓慢,如何加速算法计算速度,是一个非常突出的问题。

此外,由于传统的数据挖掘算法都是针对小数据集的,当数据规模到了一台服务器无法处理的程度,传统的数据挖掘算法就不再使用。此时,我们需要有新的数据挖掘技术来支持大数据上的数据挖掘。

当模型建立完成之后,我们需要对模型进行评估,来确定模型效果。此时最重要的是建立模型的评价指标。这个评价指标必须是要结合业务来建立的。当模型效果不佳时,我们要回到特征提取,建模过程来不断的迭代,甚至可能要重新分析业务和数据。

3.后期工作

当一个效果非常好的模型建立完毕了,我们的数据挖掘就结束了吗?传统的数据挖掘软件往往只做到模型建立这一步,但是在模型建立完成之后还有很多工作要做。我们如何将模型在生产系统中使用起来,如何去管理、运行、维护、扩展模型。

我们先来看看DataInsight对业务的支持(见图2)。

图2

用户需要针对不同的业务去建立不同的模型,这个建模过程可以由用户自己完成,也可以由明略的大数据科学家去完成。建立好的模型以插件的形式插入到DataInsight中去,方便模型的管理和扩展。

用户的业务系统会通过API和DataInsight进行通信,来运行或者更新DataInsight中插入的模型。

一个典型的DataInsight模型运行过程如下:用户通过API调用DataInsight,在请求中指定模型,模型的输入和模型的输出。DataInsight会将数据从数据源中取出,送入模型,并且将模型分成多个步骤,并行化的在分布式执行引擎中运行。当模型运行完毕后,结果将送入用户指定的目的数据库中。这样,用户的应用系统就可以直接从目的数据库中获得模型运行的最新结果了。

DataInsight中将解决客户业务问题的模型成为业务模型,或者应用。DataInsight对业务模型也进行了一定层次的抽象。每个业务模型都是由若干步骤组成的。每个步骤被称作一个算子。

图3是一个文本分类的业务模型,其解决的问题是将若干文本进行分类。例如我们有很多文章,我们要对每篇文章的情感进行分类,就可以使用这个模型。我们将文本分类模型抽象为很多算子的组合。每个算子都是对数据进行了某种转换,将一组输入转化为一组输出。这个转化过程可能是对数据进行的预处理,也可能是某种机器学习算法。

图3

每个算子都有输入和输出,且算子的输出可以作为另外一个算子的输入。这样,整个业务模型就抽象成了一个有向无环图(DAG)。DataInsight在执行模型时,会去调度模型中的每个算子,将适合分布式计算的算子送入不同的执行容器中去运行,加速了整个模型的计算速度(见图4)。

DataInsight总体的体系架构见图5。下面我们介绍一下明略在各个领域中的一些案例。由于时间关系,我这里只举两个案例。

图4、图5