1.3 数据挖掘中的一些基本概念
在本节中,我们讨论一下在数据挖掘领域中常见的一些基本概念,基本覆盖了本书所讲述的各种案例中所涉及的算法和概念。
1.3.1 分类算法
在数据挖掘领域,有大量基于海量数据的分类问题。
分类算法的应用非常广泛,只要是涉及把客户、人群、地区、商品等按照不同属性区分开的很多场景,都可以使用分类算法。例如,我们可以通过客户分类构造一个分类模型来对银行贷款进行风险评估,通过人群分类来评估酒店或饭店如何定价,通过商品分类来考虑市场整体营销策略等。
当前的市场营销行为中,很重要的一个特点是强调目标客户细分,无论是银行对贷款风险的评估还是营销中目标客户(或市场)的细分,其实都属于分类算法中客户类别分析的范畴。而客户类别分析的功能则是采用数据挖掘中的分类技术,将客户分成不同的类别,以便于提高企业的决策效率和准确度。例如,设计呼叫中心时,可以将客户分为呼叫频繁的客户、偶然大量呼叫的客户、稳定呼叫的客户和其他客户,以帮助呼叫中心寻找出这些不同种类客户的分布特征。
通常,我们先把数据分成训练集(Training Set)和测试集(Testing Set),通过对训练集的训练,生成一个或多个分类器(classifier);将这些分类器应用到测试集中,就可以对分类器的性能和准确性作出评判。如果效果不佳,那么可以重新选择训练集,或者调整训练模式,直到分类器的性能和准确性达到要求为止。最后将选出的分类器应用到未经分类的新数据中,就可以对新数据的类别作出预测了。
场景:汽车4S店通过数据挖掘找到新的客户
案例阐述:
A公司是一家汽车4S店,拥有完备的客户历史消费数据库,现公司准备举办一次高端品牌汽车的促销活动。为配合这次促销活动,公司计划为潜在客户(主要是新客户)寄去一份精美的汽车销售材料并附带一份小礼品。由于资源有限,公司仅有1000份材料和礼品的预算额度。
表述问题:
这里的新客户是指在店中留下过详细资料但又没有消费记录的客户。这次促销活动的要求是转化收到这1000份材料和礼品的新客户,让尽量多的新客户能够最终成为4S店的消费客户。
解决问题:
公司首先找出与这次促销活动类似的已经举办过的促销活动的历史消费数据,将这些历史数据集中的促销结果分成正反两类,正类用来表示可以最终消费的客户。通过历史数据的训练我们可以得出一个分类器,如果用的是决策树,我们还能够得出一个类似if-then的规则,而这个规则就能够揭示参加促销活动并最终消费的客户的主要特征。由于分类结果最后可以表示成概率形式,因此,用经过测试集测试过的分类器对新客户进行分类,将得到的正类客户的概率由大到小排序,这样就可以生成一个客户列表,营销人员按着这个表由上至下数出前1000个客户并向他们寄出材料和礼品即可。
1.3.2 聚类算法
所谓聚类,就是类或簇(Cluster)的聚合,这里的类指的是一个数据对象的集合。
和分类一样,聚类的目的也是把所有的对象分成不同的群组,但它和分类算法的最大不同在于采用聚类算法划分对象之前,我们并不知道要把数据分成几组,也不知道依赖哪些变量来划分。
聚类有时也称分段,是指将具有相同特征的对象归结为一组,将特征平均,以形成一个“特征矢量”或“矢心”。聚类系统通常能够把相似的对象通过静态分类的方法分成不同的组别或者更多的子集(subset),这样使同一个子集中的成员对象都有相似的属性。聚类被一些提供商用来直接形成不同访客群组或者客户群组特征的报告。聚类算法是数据挖掘的核心技术之一,而除了其本身的算法应用之外,聚类分析也可以作为数据挖掘算法中其他分析算法的一个预处理步骤。
图1-9所示是聚类算法的一种展示。图中的Cluster1和Cluster2分别代表聚类算法计算出的两类样本。“+”表示Cluster1, “o”表示Cluster2。
图1-9 聚类算法示意
在商业上,聚类可以帮助市场分析人员从消费者数据库中区分出不同的消费群体,并且概括出每一类消费者的消费模式或者消费习惯。它作为数据挖掘中的一个模块,可以作为一个单独的工具以发现数据库中分布的一些深层次的信息,也可以对某一个特定的类作进一步的分析并概括出每一类数据的特点。
比如,下面几个场景比较适合应用聚类算法,同时又有相应的商业应用。
(1)哪些特定症状的聚集可能预示什么特定的疾病?
(2)租同一类型车的是哪一类客户?
(3)网络游戏上增加什么样的功能可以吸引哪些人来?
(4)哪些客户是我们想要长期保留的客户?
1.3.3 关联算法
所谓关联,反映的是一个事件和其他事件之间依赖或关联的知识。
如果两项或多项属性之间存在关联,那么其中一项的属性值就可以依据其他属性值进行预测。简单来说,关联规则可以用这样的方式来表示:A==>B,其中A被称为前提或者左部(LHS),而B被称为结果或者右部(RHS)。如果我们要描述关于尿不湿和啤酒的关联规则(买尿不湿的人也会买啤酒),那么我们可以这样表示:
买尿不湿==>买啤酒
数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联等。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有置信度。
关联规则挖掘可发现大量数据中项集之间有趣的关联或相关联系,它在数据挖掘中是一个重要的课题,最近几年已被业界广泛研究。关联规则挖掘的一个典型例子是购物篮分析。关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响。分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。
关联规则算法在市场交叉销售(cross selling)、向上销售(up selling)、商场布置、产品定价、促销安排、医疗诊断、基因科学研究等领域都有大量的实际应用。
1.3.4 序列算法
数据挖掘中的序列挖掘指的是从一个序列(sequence)数据中找出统计规律。
如果序列中可能出现的单元是一个有限的集合,那么这个集合可以称作Alphabet(字母表),而对此类序列作挖掘的算法可以称为string mining(字符串挖掘)。比如生物遗传学中所有的DNA基因序列都是由A、G、C和T四个字母组成的氨基酸形成的,不同的排列是生物信息学(Bioinformatics)所研究的课题,而该学科采用的不少数据挖掘算法都是序列算法。
时间序列(time series)处理的数据是在不同时间点上收集到的数据,是序列算法中重要的一种。这种序列反映了某一事物、现象等随时间的变化状态或程度。通常在时间序列算法中要求时间段是相同间隔的。如我国国内生产总值从1949年到2009年的变化、Facebook股价从2016年4月1日到5月12日的变化都是时间序列数据。
时间序列数据可作年度数据、季度数据、月度数据等细分,其中很有代表性的季度时间序列模型就是因为其数据具有四季一样的变化规律,虽然变化周期不尽相同,但是整体的变化趋势都是按照周期变化的。
时间序列通常会在连续的时间流中截取一个时间段,然后让该时间段在整个时间轴上滑动,从而获得需要的训练数据集。比如金融分析师会根据前面29天的货币汇率估计第30天货币汇率的变化;电子商务企业会根据前面99天的销售情况估计第100天和第101天的销售数据;网站联盟会根据前面13个月的点击率和收入情况估计第14个月的总体点击率和收入情况等。
1.3.5 估测和预测
估测(Estimation)和预测(Prediction)是数据挖掘比较常用的应用。估测应用是用来猜测现在的未知值,而预测应用是预测未来的某一个未知值。估测和预测在很多时候可以使用同样的算法。估测通常用来为一个存在但是未知的数值填空,而预测的数值对象发生在将来,往往目前并不存在。
举例来说,如果我们不知道某人的收入,可以通过与收入密切相关的量来估测,然后找到具有类似特征的其他人,利用他们的收入来估测未知者的收入和信用值。另外,以某人的未来收入为例来谈预测,我们可以根据历史数据来分析收入和各种变量的关系以及时间序列的变化,从而预测某人在未来某个时间点的具体收入会是多少。
估测和预测在很多时候也可以联合应用。比如我们可以根据购买模式来估测一个家庭的孩子个数和家庭人口结构;或者根据购买模式估测一个家庭的收入,然后预测这个家庭将来最需要的产品和数量,以及需要这些产品的时间点。
对估测和预测所作的数据分析可以称作预测分析(Predictive Analysis),而因为预测分析应用非常普遍,现在已被不少商业客户和数据挖掘行业的从业人员当作数据挖掘的同义词。
我们在数据分析中经常听到的回归分析(Regression Analysis)就是用来作估测和预测的分析方法。所谓回归分析,简称回归,指的是预测多个变量之间相互关系的技术,而这门技术在数据挖掘中的应用是非常广泛的。分类算法和序列算法都可以运用到回归的技术。
1.3.6 A/B Test
当我们在选择数据模型和算法的时候,A/B Test是一个非常重要的工具。
A/B Test又称为对比试验,用来比较两个(或多个)策略的优劣。常见于两个(或多个)网页设计、分析模型、推荐算法、解决方案难以抉择之时,以一种先验的方式,由用户反馈来进行检验或抉择。根据验证对象,对比试验包括基于前端(Front-end AB test)和基于后端(Back-end AB test)两种。
一般情况下,用户在一次浏览中,会从客户端(Client)发起一个请求,这个请求被传到服务器(Server),服务器的后台程序根据计算,得出要给用户返回什么内容(Data),同时向数据仓库(Data Warehouse)添加一条打点信息,记录本次访问的相关信息。数据仓库收集到足够的数据之后,就可以开始进行分析(Analytics),最终生成分析结果与分析报告。
在比较算法和模型的时候,我们用“分流”的方法。在A/B Test中,分流指通过一定的随机策略,将等量的访问IP分配给不同策略。
常见的分流方式有两种:①在全量中抽样出两份小流量,分别走新策略分支和旧策略分支,通过对比这两份流量下各指标的差异,来评估出新策略的优劣,进而决定新策略是否全流量运行。此方式适用于访问日IP较大的场景。②直接在全量层面进行上述过程,适用于访问日IP较小的场景。需要注意的是,访问日IP很小的情况下(如日IP不足100),测试结果会因偶然因素而导致分流结果误差很大,此时不适用于A/B检验。
场景:电商用A/B Test选择推荐策略
某电商平台首页有出站连接34个,首页内链53个,Baidu、Google、Sogou等搜索引擎记录数均超过30000条。Web端(包括桌面与移动端)和移动APP端日访问总数达数十万,主要来源包括百度等搜索引擎、第三方外链、Web端访问、客户端访问等。
该电商平台基于星环科技的TDH打造了Hadoop大数据平台,由Transwarp Discover打造了全新的推荐系统。
在该新的推荐策略上线之后,在全流量上线之前,要评新策略的优劣,此时就用到A/B Test,以验证其有效性。
推荐算法是典型的后端应用,故本次测试属于典型的后端检验。测试过程中,采用了最为常见的单层流量切分作为流量打散依据,新旧分支每日随机抽样各分配1000独立IP,连续观察10日。
主要对比的指标包括平均访问时长、注册转化率、购买转化率、每用户平均收入等。其中访问时长通过Transwarp Stream SQL实现,其他指标通过从数据仓库的相关记录中获取。最终所有指标取每个分支10000个IP的平均值。
主要测试指标中:
(1)平均访问时长指某一IP从入站到出站的时间差;
(2)注册转化率指“观察到的新注册用户数/观察总数×100%”;
(3)购买转化率指“发生消费行为的用户数/观察总数×100%”;
(4)每用户平均收入指“观察用户消费总额/观察用户总数”。
最终的测试结果如图1-10所示。
图1-10 推荐策略对比示意
访问时长由原来的18分钟增加至31分钟,注册转化率和购买转化率分别提高3%和1%,最终每用户平均收入增加超过1/5。
测试结束不久,新的推荐系统正式上线,在全流量运行中,新的推荐系统表现优异,甚至出乎该电商预料。该电商关注的主要业务与经营指标都有了明显改善,一对一精准营销和智能化推荐获得了大量用户的正面反馈,平台整体收益也有了显著提高。