最近团队须要招数据挖掘工程师,但公司暂时没有这样的人才。领导让我临时充当面试官,为了扮演好这个角色,我花了点时间了解了一下数据挖掘的知识,并整理了这份资料。
数据挖掘的分析方法能够划分为关联分析、序列模式分析、分类分析和聚类分析四种。面试
关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。算法
关联分析是从大量数据中发现项集之间有趣的关联和相关联系。数据库
关联分析的一个典型例子是购物篮分析。该过程经过发现顾客放入其购物篮中的不一样商品之间的联系,分析顾客的购买习惯。经过了解哪些商品频繁地被顾客同时购买,这种关联的发现能够帮助零售商制定营销策略。其余的应用还包括价目表设计、商品促销、商品的排放和基于购买模式的顾客划分。网络
可从数据库中关联分析出形如“因为某些事件的发生而引发另一些事件的发生”之类的规则。如“67%的顾客在购买啤酒的同时也会购买尿布”,所以经过合理的啤酒和尿布的货架摆放或捆绑销售可提升超市的服务质量和效益。又如“‘C语言’课程优秀的同窗,在学习‘数据结构’时为优秀的可能性达88%”,那么就能够经过强化“C语言”的学习来提升教学效果。数据结构
关联分析->相关性分析->回归分析机器学习
简单介绍Apriori算法工具
Apriori算法经常使用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合。学习
经过找出的数据集合,能够对人类商业决策进行指导。典型应用例子:超市购物的啤酒与尿布销售关系。人工智能
Apriori算法基本思想是对各类数值进行组合,计算其共同出现几率。但其中增长了迭代,截枝思想,大大减小组合计算次数,在海量数据的状况下依然能够保证足够高的计算效率。spa
所谓序列模式,个人定义是:在一组有序的数据列组成的数据集中,常常出现的那些序列组合构成的模式。跟咱们所熟知的关联规则挖掘不同,序列模式挖掘的对象以及结果都是有序的,即数据集中的每一个序列的条目在时间或空间上是有序排列的,输出的结果也是有序的。
举个简单的例子来讲明,关联规则一个经典的应用是计算超市购物中被共同购买的商品,它把每一个顾客的一次交易视做一个transaction,计算在不一样transaction中不一样item组合的规律性。而若是咱们考虑一个用户屡次在超市购物的状况,那么这些不一样时间点的交易记录就构成了一个购买序列,N个用户的购买序列就组成一个规模为N的序列数据集。考虑这些时间上的因素以后,咱们就能获得一些比关联规则更有价值的规律,好比关联挖掘常常能挖掘出如啤酒和尿布的搭配规律,而序列模式挖掘则能挖掘出诸如《育儿指南》->婴儿车这样带有必定因果性质的规律。因此,序列模式挖掘比关联挖掘能获得更深入的知识。
GSP算法,SPADE算法,PrefixSpan算法,Clospan算法等
分类是基于包含其类别成员资格已知的观察(或实例)的训练数据集来识别新观察所属的一组类别(子群体)中的哪个的问题。例如,将给定的电子邮件分配给“垃圾邮件”或“非垃圾邮件”类,并根据观察到的患者特征(性别,血压,某些症状的存在或不存在等)为给定患者分配诊断。分类分析,简单地说就是把数据分红不一样类别。
决策树,神经网络,贝叶斯分类,k最近邻分类(即KNN,见后面异常数据挖掘)
聚类是将数据分类到不一样的类或者簇这样的一个过程,因此同一个簇中的对象有很大的类似性,而不一样簇间的对象有很大的相异性。
聚类分析是一种探索性的分析,在分类的过程当中,人们没必要事先给出一个分类的标准,聚类分析可以从样本数据出发,自动进行分类。聚类分析所使用方法的不一样,经常会获得不一样的结论。不一样研究者对于同一组数据进行聚类分析,所获得的聚类数未必一致。
聚类分析跟分类分析区别是分类分析须要有已有标签的数据,而聚类分析则不须要。
从统计学的观点看,聚类分析是经过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。采用随机林林,k-均值、k-中心点等算法的聚类分析工具已被加入到许多著名的统计分析软件包中,如SPSS、SAS等。
简单介绍k-means(k均值):
异常数据挖掘是数据挖掘中一种经常使用的场景,异常数据通常是指在整体样本中占比较小的数据。
根据应用场景不一样也称错误数据,特殊数据,重要数据,高价值数据等。
异常数据挖掘经常使用方法有:
规则有特定场景的业务规则:
例如某个字段取值必须为0
冬天气温确定不能高于40度
也有通用的天然规则:
例如本福德定律(天然生成的数字首位为1的几率为30.10%,2的几率为17.61%,依次递减,首位为9的几率仅为4.58%。)。
简单统计规则:观察其方差、标准差、均值等是否和常规值有所差别
正态分布规则:找出数据集里面不符合正态分布的数据
1 KNN
人们常说“想知道本身是什么人,看看与本身关系最亲密的十我的是什么人就知道”,意思是人老是会跟类似的人交朋友。
那反过来,要将某我的归类,则看他跟什么人接触比较多,则将全归到那一类里面。
knn算法是基于这个原理的分类算法,预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪一个类别。
图中绿色的点就是咱们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点,看看哪一种类别多一些,好比这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了。
假设K=5。那么KNN算法就会找到与它距离最近的五个点(这里用圆圈把它圈起来了),看看哪一种类别多一些,好比这个例子中是红色多一些,新来的绿色点就归类到红色球了。
此类算法须要有现成的异常数据样本,属于有监督机器学习。算法主要难点在于怎么定义数据距离还有k值取值(过小和太大的k值都会形成比较大的偏差)
2 孤立森林
森林里面的树木通常是连成一片的,若是某一棵树跟其它树木不在一块,那这棵树通常有问题。
如何找出这样树呢?数据量少时能够经过可视化展现, 由人工判断。但数据量多时就比较麻烦。
孤立森林算法原理,就是逐次添加随机线段将森林划分片,直到每一片里面只有一棵树。孤立的树老是会在比较早的时候就分到独立的区域。
例如x0这个点,只须要四次划分就被分到独立区域,xi这个点须要11次划分才能分到独立区域。(这张图只演示了一次划分过程。若是重复屡次划分,每次划分的方法都是随机的,但x0都是比较早被分出来,则能够认为x0确定是差别点)
孤立森林是比较实用的异常数据挖掘算法,不须要现成的异常数据样本。
3 LOF
暂时没看懂原理
将数据进行建模造成不一样维度数据,并对不一样维度数值作标准化,降维到一维或者二维数据以方便经过散点图,折线图,箱线图,热力图等把数据可视化展现,供分析人员直观识别。
例如将人群年龄段,体重,性别,体育成绩等作加权累计,得出一个单一维度的数据,使用箱线图进行展现。
这种相对来讲比较适合没有专家参与的异常数据分析。利用深度学习算法,只须要前期导入足够多的有标记数据,通过多轮训练,得出一个合适的模型。
但缺点是结果没法预期(目前人类很难搞清楚人工智能的思惟),并且须要比较长时间的训练。