当前位置:首页 » 操作系统 » 数据挖掘算法的实现

数据挖掘算法的实现

发布时间: 2022-12-30 20:39:49

A. 数据挖掘算法有哪些

以下主要是常见的10种数据挖掘的算法,数据挖掘分为:分类(Logistic回归模型、神经网络、支持向量机等)、关联分析、聚类分析、孤立点分析。每一大类下都有好几种算法,这个具体可以参考数据挖掘概论这本书(英文最新版)

B. 数据挖掘的方法有哪些

数据挖掘的的方法主要有以下几点:
1.分类挖掘方法。分类挖掘方法主要利用决策树进行分类,是一种高效且在数据挖掘方法中占有重要地位的挖掘方法。为了对数据进行较为准确的测试并据此分类,我们采用决策树算法,而决策树中比较典型的几种方法为:ID3算法,此方法具有较强的实用性,适用于大规模数据处理;KNN算法,此方法算量较大,适用于分别类别的数据处理。
2..聚类分析挖掘方法。聚类分析挖掘方法主要应用于样品与指标分类研究领域,是一种典型的统计方法,广泛应用于商业领域。此聚类分析方法根据适用对象不同又可分为四种分析挖掘方法:基于网格的聚类分析方法、基于分层的聚类方法、基于密度的聚类挖掘方法和基于模型的聚类方法。
3.预测方法。预测方法主要用于对知识的预测以及对连续数值型数据的挖掘,传统的预测方法主要分为:时间序列方法、回归模型分析法、灰色系统模型分析。而现在预测方法主要采用神经网络与支持向量机算法,进行数据分析计算,同时可预测未来数据的走向趋势。

关于大数据挖掘工程师的课程推荐CDA数据分析师的相关课程,课程内容兼顾培养解决数据挖掘流程问题的横向能力以及解决数据挖掘算法问题的纵向能力。要求学生具备从数据治理根源出发的思维,通过数字化工作方法来探查业务问题,通过近因分析、宏观根因分析等手段,再选择业务流程优化工具还是算法工具,而非“遇到问题调算法包”点击预约免费试听课。

C. 带你了解数据挖掘中的经典算法

数据挖掘的算法有很多,而不同的算法有着不同的优点,同时也发挥着不同的作用。可以这么说,算法在数据挖掘中做出了极大的贡献,如果我们要了解数据挖掘的话就不得不了解这些算法,下面我们就继续给大家介绍一下有关数据挖掘的算法知识。
1.The Apriori algorithm,
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。这个算法是比较复杂的,但也是十分实用的。
2.最大期望算法
在统计计算中,最大期望算法是在概率模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量。最大期望经常用在机器学习和计算机视觉的数据集聚领域。而最大期望算法在数据挖掘以及统计中都是十分常见的。
3.PageRank算法
PageRank是Google算法的重要内容。PageRank里的page不是指网页,而是创始人的名字,即这个等级方法是以佩奇来命名的。PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。这个就是所谓的“链接流行度”,这个标准就是衡量多少人愿意将他们的网站和你的网站挂钩。PageRank这个概念引自学术中一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。
3.AdaBoost算法
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,然后把这些弱分类器集合起来,构成一个更强的最终分类器。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。这种算法给数据挖掘工作解决了不少的问题。
数据挖掘算法有很多,这篇文章中我们给大家介绍的算法都是十分经典的算法,相信大家一定可以从中得到有价值的信息。需要告诉大家的是,我们在进行数据挖掘工作之前一定要事先掌握好数据挖掘需呀掌握的各类算法,这样我们才能在工总中得心应手,如果基础不牢固,那么我们迟早是会被淘汰的。职场如战场,我们一定要全力以赴。

D. 数据挖掘 算法

第一题结果:

#include<stdio.h>

#defineDATALEN27

intdata[DATALEN]=

{13,15,16,

16,19,20,

20,21,22,

22,25,25,

25,25,30,

33,33,35,

35,35,35,

36,40,45,

46,52,70};

intnSmoothByMeans[DATALEN]={0};

intnSmoothByMedians[DATALEN]={0};

intnSmoothByBoundaries[DATALEN]={0};

voidSmoothByMeans(intdepth)

{

inti=0,j=0;

intsum=0,mean=0;

for(i=0;i<27;i=i+3)

{

for(j=i;j<i+depth;j++)

{

sum+=data[j];

}

mean=sum/depth;

for(j=i;j<i+depth;j++)

{

nSmoothByMeans[j]=mean;

}

sum=0;

}

}

voidSmoothByMedians(intdepth)

{

inti=0,j=0;

for(i=1;i<27;i=i+3)

{

for(j=i-1;j<i+depth;j++)

{

nSmoothByMedians[j]=data[i];

}

}

}

voidSmoothByBoundaries(intdepth)

{

inti=0,j=0;

for(i=0;i<27;i++)

{

nSmoothByBoundaries[i]=data[i];

}

for(i=1;i<27;i=i+3)

{

if(data[i]-data[i-1]>data[i+1]-data[i])

{

nSmoothByBoundaries[i]=data[i+1];

}

else

{

nSmoothByBoundaries[i]=data[i-1];

}

}

}

voidmain()

{

intdepth=3;

inti=0;

intj=0;

SmoothByMeans(3);

SmoothByMedians(3);

SmoothByBoundaries(3);

printf("原始数据: ");

for(i=0,j=1;i<27;i=i+3,++j)

{

printf("Bin%d:%d,%d,%d ",

j,data[i],data[i+1],data[i+2]);

}

printf("使用平均值: ");

for(i=0,j=1;i<27;i=i+3,++j)

{

printf("Bin%d:%d,%d,%d ",

j,nSmoothByMeans[i],nSmoothByMeans[i+1],nSmoothByMeans[i+2]);

}

printf("使用中值: ");

for(i=0,j=1;i<27;i=i+3,++j)

{

printf("Bin%d:%d,%d,%d ",

j,nSmoothByMedians[i],nSmoothByMedians[i+1],nSmoothByMedians[i+2]);

}

printf("使用边界值: ");

for(i=0,j=1;i<27;i=i+3,++j)

{

printf("Bin%d:%d,%d,%d ",

j,nSmoothByBoundaries[i],nSmoothByBoundaries[i+1],nSmoothByBoundaries[i+2]);

}

}

E. 数据挖掘中的经典算法

大家都知道,数据挖掘中有很多的算法,不同的算法有着不同的优势,它们在数据挖掘领域都产生了极为深远的影响。那么大家知道不知知道数据挖掘中的经典算法都有哪些呢?在这篇文章中我们就给大家介绍数据挖掘中三个经典的算法,希望这篇文章能够更好的帮助大家。
1.K-Means算法
K-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k大于n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。这种算法在数据挖掘中是十分常见的算法。
2.支持向量机
而Support vector machines就是支持向量机,简称SV机(论文中一般简称SVM)。它是一种监督式学习的方法,这种方法广泛的应用于统计分类以及回归分析中。支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。这些优点也就成就了这种算法。

3.C4.5算法
然后我们给大家说一下C4.5算法,C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并对ID3算法进行了改进,这种改进具体体现在四个方面,第一就是在树构造过程中进行剪枝,第二就是能够完成对连续属性的离散化处理,第三就是用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足,第四就是能够对不完整数据进行处理。那么这种算法的优点是什么呢?优点就是产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
相信大家看了这篇文章以后对The k-means algorithm算法、Support vector machines、C4.5算法有了比较是深刻的了解,其实这三种算法那都是十分重要的算法,能够帮助数据挖掘解决更多的问题。大家在学习数据挖掘的时候一定要注意好这些问题。

F. 数据挖掘算法与生活中的应用案例

数据挖掘算法与生活中的应用案例

如何分辨出垃圾邮件”、“如何判断一笔交易是否属于欺诈”、“如何判断红酒的品质和档次”、“扫描王是如何做到文字识别的”、“如何判断佚名的着作是否出自某位名家之手”、“如何判断一个细胞是否属于肿瘤细胞”等等,这些问题似乎都很专业,都不太好回答。但是,如果了解一点点数据挖掘的知识,你,或许会有柳暗花明的感觉。
本文,主要想简单介绍下数据挖掘中的算法,以及它包含的类型。然后,通过现实中触手可及的、活生生的案例,去诠释它的真实存在。 一般来说,数据挖掘的算法包含四种类型,即分类、预测、聚类、关联。前两种属于有监督学习,后两种属于无监督学习,属于描述性的模式识别和发现。
有监督学习有监督的学习,即存在目标变量,需要探索特征变量和目标变量之间的关系,在目标变量的监督下学习和优化算法。例如,信用评分模型就是典型的有监督学习,目标变量为“是否违约”。算法的目的在于研究特征变量(人口统计、资产属性等)和目标变量之间的关系。
分类算法分类算法和预测算法的最大区别在于,前者的目标变量是分类离散型(例如,是否逾期、是否肿瘤细胞、是否垃圾邮件等),后者的目标变量是连续型。一般而言,具体的分类算法包括,逻辑回归、决策树、KNN、贝叶斯判别、SVM、随机森林、神经网络等。
预测算法预测类算法,其目标变量一般是连续型变量。常见的算法,包括线性回归、回归树、神经网络、SVM等。
无监督学习无监督学习,即不存在目标变量,基于数据本身,去识别变量之间内在的模式和特征。例如关联分析,通过数据发现项目A和项目B之间的关联性。例如聚类分析,通过距离,将所有样本划分为几个稳定可区分的群体。这些都是在没有目标变量监督下的模式识别和分析。
聚类分析聚类的目的就是实现对样本的细分,使得同组内的样本特征较为相似,不同组的样本特征差异较大。常见的聚类算法包括kmeans、系谱聚类、密度聚类等。
关联分析关联分析的目的在于,找出项目(item)之间内在的联系。常常是指购物篮分析,即消费者常常会同时购买哪些产品(例如游泳裤、防晒霜),从而有助于商家的捆绑销售。
基于数据挖掘的案例和应用上文所提到的四种算法类型(分类、预测、聚类、关联),是比较传统和常见的。还有其他一些比较有趣的算法分类和应用场景,例如协同过滤、异常值分析、社会网络、文本分析等。下面,想针对不同的算法类型,具体的介绍下数据挖掘在日常生活中真实的存在。下面是能想到的、几个比较有趣的、和生活紧密关联的例子。
基于分类模型的案例这里面主要想介绍两个案例,一个是垃圾邮件的分类和判断,另外一个是在生物医药领域的应用,即肿瘤细胞的判断和分辨。
垃圾邮件的判别邮箱系统如何分辨一封Email是否属于垃圾邮件?这应该属于文本挖掘的范畴,通常会采用朴素贝叶斯的方法进行判别。它的主要原理是,根据邮件正文中的单词,是否经常出现在垃圾邮件中,进行判断。例如,如果一份邮件的正文中包含“报销”、“发票”、“促销”等词汇时,该邮件被判定为垃圾邮件的概率将会比较大。
一般来说,判断邮件是否属于垃圾邮件,应该包含以下几个步骤。
第一,把邮件正文拆解成单词组合,假设某篇邮件包含100个单词。
第二,根据贝叶斯条件概率,计算一封已经出现了这100个单词的邮件,属于垃圾邮件的概率和正常邮件的概率。如果结果表明,属于垃圾邮件的概率大于正常邮件的概率。那么该邮件就会被划为垃圾邮件。
医学上的肿瘤判断如何判断细胞是否属于肿瘤细胞呢?肿瘤细胞和普通细胞,有差别。但是,需要非常有经验的医生,通过病理切片才能判断。如果通过机器学习的方式,使得系统自动识别出肿瘤细胞。此时的效率,将会得到飞速的提升。并且,通过主观(医生)+客观(模型)的方式识别肿瘤细胞,结果交叉验证,结论可能更加靠谱。
如何操作?通过分类模型识别。简言之,包含两个步骤。首先,通过一系列指标刻画细胞特征,例如细胞的半径、质地、周长、面积、光滑度、对称性、凹凸性等等,构成细胞特征的数据。其次,在细胞特征宽表的基础上,通过搭建分类模型进行肿瘤细胞的判断。
基于预测模型的案例这里面主要想介绍两个案例。即通过化学特性判断和预测红酒的品质。另外一个是,通过搜索引擎来预测和判断股价的波动和趋势。
红酒品质的判断如何评鉴红酒?有经验的人会说,红酒最重要的是口感。而口感的好坏,受很多因素的影响,例如年份、产地、气候、酿造的工艺等等。但是,统计学家并没有时间去品尝各种各样的红酒,他们觉得通过一些化学属性特征就能够很好地判断红酒的品质了。并且,现在很多酿酒企业其实也都这么干了,通过监测红酒中化学成分的含量,从而控制红酒的品质和口感。
那么,如何判断鉴红酒的品质呢?
第一步,收集很多红酒样本,整理检测他们的化学特性,例如酸性、含糖量、氯化物含量、硫含量、酒精度、PH值、密度等等。
第二步,通过分类回归树模型进行预测和判断红酒的品质和等级。
搜索引擎的搜索量和股价波动一只南美洲热带雨林中的蝴蝶,偶尔扇动了几下翅膀,可以在两周以后,引起美国德克萨斯州的一场龙卷风。你在互联网上的搜索是否会影响公司股价的波动?
很早之前,就已经有文献证明,互联网关键词的搜索量(例如流感)会比疾控中心提前1到2周预测出某地区流感的爆发。
同样,现在也有些学者发现了这样一种现象,即公司在互联网中搜索量的变化,会显着影响公司股价的波动和趋势,即所谓的投资者注意力理论。该理论认为,公司在搜索引擎中的搜索量,代表了该股票被投资者关注的程度。因此,当一只股票的搜索频数增加时,说明投资者对该股票的关注度提升,从而使得该股票更容易被个人投资者购买,进一步地导致股票价格上升,带来正向的股票收益。这是已经得到无数论文验证了的。
基于关联分析的案例:沃尔玛的啤酒尿布啤酒尿布是一个非常非常古老陈旧的故事。故事是这样的,沃尔玛发现一个非常有趣的现象,即把尿布与啤酒这两种风马牛不相及的商品摆在一起,能够大幅增加两者的销量。原因在于,美国的妇女通常在家照顾孩子,所以,她们常常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。沃尔玛从数据中发现了这种关联性,因此,将这两种商品并置,从而大大提高了关联销售。
啤酒尿布主要讲的是产品之间的关联性,如果大量的数据表明,消费者购买A商品的同时,也会顺带着购买B产品。那么A和B之间存在关联性。在超市中,常常会看到两个商品的捆绑销售,很有可能就是关联分析的结果。
基于聚类分析的案例:零售客户细分对客户的细分,还是比较常见的。细分的功能,在于能够有效的划分出客户群体,使得群体内部成员具有相似性,但是群体之间存在差异性。其目的在于识别不同的客户群体,然后针对不同的客户群体,精准地进行产品设计和推送,从而节约营销成本,提高营销效率。
例如,针对商业银行中的零售客户进行细分,基于零售客户的特征变量(人口特征、资产特征、负债特征、结算特征),计算客户之间的距离。然后,按照距离的远近,把相似的客户聚集为一类,从而有效的细分客户。将全体客户划分为诸如,理财偏好者、基金偏好者、活期偏好者、国债偏好者、风险均衡者、渠道偏好者等。
基于异常值分析的案例:支付中的交易欺诈侦测采用支付宝支付时,或者刷信用卡支付时,系统会实时判断这笔刷卡行为是否属于盗刷。通过判断刷卡的时间、地点、商户名称、金额、频率等要素进行判断。这里面基本的原理就是寻找异常值。如果您的刷卡被判定为异常,这笔交易可能会被终止。
异常值的判断,应该是基于一个欺诈规则库的。可能包含两类规则,即事件类规则和模型类规则。第一,事件类规则,例如刷卡的时间是否异常(凌晨刷卡)、刷卡的地点是否异常(非经常所在地刷卡)、刷卡的商户是否异常(被列入黑名单的套现商户)、刷卡金额是否异常(是否偏离正常均值的三倍标准差)、刷卡频次是否异常(高频密集刷卡)。第二,模型类规则,则是通过算法判定交易是否属于欺诈。一般通过支付数据、卖家数据、结算数据,构建模型进行分类问题的判断。
基于协同过滤的案例:电商猜你喜欢和推荐引擎电商中的猜你喜欢,应该是大家最为熟悉的。在京东商城或者亚马逊购物,总会有“猜你喜欢”、“根据您的浏览历史记录精心为您推荐”、“购买此商品的顾客同时也购买了商品”、“浏览了该商品的顾客最终购买了商品”,这些都是推荐引擎运算的结果。
这里面,确实很喜欢亚马逊的推荐,通过“购买该商品的人同时购买了**商品”,常常会发现一些质量比较高、较为受认可的书。一般来说,电商的“猜你喜欢”(即推荐引擎)都是在协同过滤算法(Collaborative Filter)的基础上,搭建一套符合自身特点的规则库。即该算法会同时考虑其他顾客的选择和行为,在此基础上搭建产品相似性矩阵和用户相似性矩阵。基于此,找出最相似的顾客或最关联的产品,从而完成产品的推荐。
基于社会网络分析的案例:电信中的种子客户种子客户和社会网络,最早出现在电信领域的研究。即,通过人们的通话记录,就可以勾勒出人们的关系网络。电信领域的网络,一般会分析客户的影响力和客户流失、产品扩散的关系。
基于通话记录,可以构建客户影响力指标体系。采用的指标,大概包括如下,一度人脉、二度人脉、三度人脉、平均通话频次、平均通话量等。基于社会影响力,分析的结果表明,高影响力客户的流失会导致关联客户的流失。其次,在产品的扩散上,选择高影响力客户作为传播的起点,很容易推动新套餐的扩散和渗透。
此外,社会网络在银行(担保网络)、保险(团伙欺诈)、互联网(社交互动)中也都有很多的应用和案例。
基于文本分析的案例这里面主要想介绍两个案例。一个是类似“扫描王”的APP,直接把纸质文档扫描成电子文档。相信很多人都用过,这里准备简单介绍下原理。另外一个是,江湖上总是传言红楼梦的前八十回和后四十回,好像并非都是出自曹雪芹之手,这里面准备从统计的角度聊聊。
字符识别:扫描王APP手机拍照时会自动识别人脸,还有一些APP,例如扫描王,可以扫描书本,然后把扫描的内容自动转化为word。这些属于图像识别和字符识别(Optical Character Recognition)。图像识别比较复杂,字符识别理解起来比较容易些。
查找了一些资料,字符识别的大概原理如下,以字符S为例。
第一,把字符图像缩小到标准像素尺寸,例如12*16。注意,图像是由像素构成,字符图像主要包括黑、白两种像素。
第二,提取字符的特征向量。如何提取字符的特征,采用二维直方图投影。就是把字符(12*16的像素图)往水平方向和垂直方向上投影。水平方向有12个维度,垂直方向有16个维度。这样分别计算水平方向上各个像素行中黑色像素的累计数量、垂直方向各个像素列上的黑色像素的累计数量。从而得到水平方向12个维度的特征向量取值,垂直方向上16个维度的特征向量取值。这样就构成了包含28个维度的字符特征向量。
第三,基于前面的字符特征向量,通过神经网络学习,从而识别字符和有效分类。
文学着作与统计:红楼梦归属这是非常着名的一个争论,悬而未决。对于红楼梦的作者,通常认为前80回合是曹雪芹所着,后四十回合为高鹗所写。其实主要问题,就是想确定,前80回合和后40回合是否在遣词造句方面存在显着差异。
这事让一群统计学家比较兴奋了。有些学者通过统计名词、动词、形容词、副词、虚词出现的频次,以及不同词性之间的相关系做判断。有些学者通过虚词(例如之、其、或、亦、了、的、不、把、别、好),判断前后文风的差异。有些学者通过场景(花卉、树木、饮食、医药与诗词)频次的差异,来做统计判断。总而言之,主要通过一些指标量化,然后比较指标之间是否存在显着差异,借此进行写作风格的判断。

以上是小编为大家分享的关于数据挖掘算法与生活中的应用案例的相关内容,更多信息可以关注环球青藤分享更多干货

G. 数据挖掘的常用方法都有哪些

在数据分析中,数据挖掘工作是一个十分重要的工作,可以说,数据挖掘工作占据数据分析工作的时间将近一半,由此可见数据挖掘的重要性,要想做好数据挖掘工作需要掌握一些方法,那么数据挖掘的常用方法都有哪些呢?下面就由小编为大家解答一下这个问题。
首先给大家说一下神经网络方法。神经网络是模拟人类的形象直觉思维,在生物神经网络研究的基础上,根据生物神经元和神经网络的特点,通过简化、归纳、提炼总结出来的一类并行处理网络,利用其非线性映射的思想和并行处理的方法,用神经网络本身结构来表达输入和输出的关联知识。神经网络方法在数据挖掘中十分常见。
然后给大家说一下粗糙集方法。粗糙集理论是一种研究不精确、不确定知识的数学工具。粗糙集处理的对象是类似二维关系表的信息表。目前成熟的关系数据库管理系统和新发展起来的数据仓库管理系统,为粗糙集的数据挖掘奠定了坚实的基础。粗糙集理论能够在缺少先验知识的情况下,对数据进行分类处理。在该方法中知识是以信息系统的形式表示的,先对信息系统进行归约,再从经过归约后的知识库抽取得到更有价值、更准确的一系列规则。因此,基于粗糙集的数据挖掘算法实际上就是对大量数据构成的信息系统进行约简,得到一种属性归约集的过程,最后抽取规则。
而决策树方法也是数据挖掘的常用方法之一。决策树是一种常用于预测模型的算法,它通过一系列规则将大量数据有目的分类,从中找到一些有价值的、潜在的信息。它的主要优点是描述简单,分类速度快,易于理解、精度较高,特别适合大规模的数据处理,在知识发现系统中应用较广。它的主要缺点是很难基于多个变量组合发现规则。在数据挖掘中,决策树常用于分类。
最后给大家说的是遗传算法。遗传算法是一种基于生物自然选择与遗传机理的随机搜索算法。数据挖掘是从大量数据中提取人们感兴趣的知识,这些知识是隐含的、事先未知的、潜在有用的信息。因此,许多数据挖掘问题可以看成是搜索问题,数据库或者数据仓库为搜索空间,挖掘算法是搜索策略。
上述的内容就是我们为大家讲解的数据挖掘工作中常用的方法了,数据挖掘工作常用的方法就是神经网络方法、粗糙集方法、决策树方法、遗传算法,掌握了这些方法才能够做好数据挖掘工作。

H. 云计算的海量数据挖掘工作是怎样实现的

云计算属于新兴技术领域,群英云计算转一篇关于问题的学术报告吧。对您应该有所帮助。

1引言

目前,人们正处于一个“无处不网、无时不网,人人上网、时时在线”的时代,图灵奖获得者吉姆·格雷(Jim Gray)认为,网络环境下每18个月产生的数据量等于过去几千年的数据量之和。目前互联网的数据具有海量增长、用户广泛、动态变化等特征。2010年,QQ同时在线的用户超过1亿人,淘宝一年交易次数比上年增长150%,视频服务Animoto在3天内通过Amazon将其服务能力迅速扩展至75万用户。

数据挖掘能够发现隐含在大规模数据中的知识,提高信息服务的质量。如伊朗事件中twitter快速传播假消息的识别、Amazon和淘宝网中商品关联关系分析,以及优酷网中视频个性化推荐等。海量数据挖掘在国家安全、国民经济和现代服务业中具有广泛应用,有助于提升网络环境下信息服务的质量,实现以人为本的信息服务。

从数据挖掘技术的发展历史看,随着互联网的蓬勃发展,数据的规模越来越大,从KB级发展到TB甚至PB级海量数据;数据挖掘的对象也变得越来越复杂,从数据库、到多媒体数据和复杂社会网络;数据挖掘的需求也从分类、聚类和关联到复杂的演化和预测分析;挖掘过程中的交互方式从单机的人机交互发展到现在社会网络群体的交互。这种发展给数据挖掘带来了巨大的挑战:对于网络环境下产生的TB级和PB级的复杂数据,需要有高效的海量数据挖掘算法;网络环境下大众的广泛参与,需要在数据挖掘算法中能够融入群体智慧;同时社会网络的迅速发展使得信息服务的个性化成为必然,要求能够满足即时组合的个性化挖掘服务。

云计算是一种基于互联网的、大众参与的计算模式,其计算资源(包括计算能力、存储能力、交互能力等)是动态、可伸缩、被虚拟化的,并以服务的方式提供 [1] 。具体表现在:云计算的动态和可伸缩的计算能力为高效海量数据挖掘带来可能性;云计算环境下大众参与的群体智能为研究集群体智慧的新的数据挖掘方法研究提供了环境;云计算的服务化特征使面向大众的数据挖掘成为可能。同时,云计算发展也离不开数据挖掘的支持,以搜索为例,基于云计算的搜索包括网页存储、搜索处理和前端交互三大部分。数据挖掘在这几部分中都有广泛应用,例如网页存储中网页去重、搜索处理中网页排序和前端交互中的查询建议,其中每部分都需要数据挖掘技术的支持。

因此,云计算为海量和复杂数据对象的数据挖掘提供了基础设施,为网络环境下面向大众的数据挖掘服务带来了机遇,同时也为数据挖掘研究提出了新的挑战性课题。

下面将对并行编程模型、基于并行编程模型高效海量数据挖掘算法,以及基于云计算的海量数据挖掘服务相关研究进行综述。

2并行编程模型相关方法

为了使用户能够通过简单的开发来方便地达到并行计算的效果,研究人员提出了一系列的并行计算模型。并行计算模型在用户需求和底层的硬件系统之间搭建桥梁使得并行算法的表示变得更加直观,对大规模数据的处理更加便捷。根据用户使用硬件环境的不同,并行编程模型又可以分为在多核机器、GPU计算、大型计算机以及计算机集群上的多种类型。目前比较常用的并行编程接口和模型包括:

pThread接口[2]。pThread是在类Unix系统上进行多线程编程的通用API,为用户提供了一系列对线程进行创建、管理和各类操作的函数,使用户能够方便地编写多线程程序。

MPI模型[3]。MPI的全称为消息传递接口(Message Passing Interface),它为用户提供了一系列的接口,使用户利用消息传递的方式来建立进程间的通信机制,从而方便地对各种算法进行并行实现。

MapRece模型[4]。MapRece模型是由谷歌公司提出的并行编程框架,它首先为用户提供分布式的文件系统,使用户能方便地处理大规模数据;然后将所有的程序运算抽象为Map和Rece两个基本操作,在Map阶段模型将问题分解为更小规模的问题,并在集群的不同节点上执行,在Rece阶段将结果归并汇总。MapRece是一个简单,但是非常有效的并行编程模型。

Pregel模型[5]。Pregel同样是由谷歌公司提出的专门针对图算法的编程模型,能够为大规模数据的图算法提供并行支持。一个典型的Pregel计算过程将在图上进行一系列的超级步骤(SuperSteps),在每个超级步骤中,所有顶点的计算都并行地执行用户定义的同一个函数,并通过一个“投票”机制来决定程序是否停止。

CUDA模型①。CUDA是由NVIDIA公司提出的一个基于GPU的并行计算模型。由于GPU在设计需求上与普通CPU不同,GPU通常被设计为能较慢地执行许多并发的线程,而不是较快的连续执行多个线程,这使得GPU在并行计算上有先天的优势。CUDA为用户提供了利用GPU计算的各种接口,使程序员能够像在普通电脑上进行CPU编程那样进行GPU程序的编写。

此外还有OpenMP、PVM、OpenCL等各种并行编程模型和方法。这些并行编程和方法一般都提供了主流编程语言的实现,从而使得用户能根据自身编程习惯来选用。

另一方面,随着云计算的不断推广,还出现了各种商用的并行计算/云计算平台,为用户提供并行计算服务。这其中比较着名的包括微软的Azure平台、Amazon公司的EC2平台、IBM公司的蓝云平台、谷歌公司的Google App Engine等。各大IT公司也纷纷开发自己的并行计算模型/框架作为自身技术服务的基本平台,这使得并行计算技术得到了更加快速的发展。

3基于并行编程模型高效海量数据挖掘算法研究

为了实现海量数据上的数据挖掘,大量分布式并行数据挖掘算法被提出。Bhari et al[6]整理了一个十分详尽的并行数据挖掘算法文献目录,包含了关联规则学习、分类、聚类、流数据挖掘四大类分布式数据挖掘算法,同时还包括分布式系统、隐私保护等相关的研究工作。

MapRece并行编程模型具有强大的处理大规模数据的能力,因而是海量数据挖掘的理想编程平台。数据挖掘算法通常需要遍历训练数据获得相关的统计信息,用于求解或优化模型参数。在大规模数据上进行频繁的数据访问需要耗费大量运算时间。为了提高算法效率,斯坦福大学Chu et al[7]提出了一种适用于大量机器学习算法的通用并行编程方法。通过对经典的机器学习算法进行分析可以发现,算法学习过程中的运算都能转化为若干在训练数据集上的求和操作;求和操作可以独立地在不同数据子集上进行,因此很容易在MapRece编程平台上实现并行化执行。将大规模的数据集分割为若干子集分配给多个Mapper节点,在Mapper节点上分别执行各种求和操作得到中间结果,最后通过Rece节点将求和结果合并,实现学习算法的并行执行。在该框架下,Chu et al实现了十种经典的数据挖掘算法,包括线性回归、朴素贝叶斯、神经网络、主成分分析和支持向量机等,相关成果在NIPS 2006会议上发表。

Ranger et al[8]提出了一个基于MapRece的应用程序编程接口Phoenix,支持多核和多处理器系统环境下的并行程序设计。Phoenix能够进行缓存管理、错误恢复和并发管理。他们使用Phoenix实现了K-Means、主成分分析和线性回归三种数据挖掘算法。

Gillick et al[9]对单程学习(Single-pass)、迭代学习(Iterative Learning)和基于查询的学习(Query-based Learning)三类机器学习算法在MapRece框架下的性能分别做了评测。他们对并行学习算法涉及到的如何在计算节点之间的共享数据、如何处理分布式存储数据等问题进行了研究。

Mahout①是APS(Apache Software Foundation)旗下的一个开源数据挖掘项目,通过使用Apache Hadoop库,可以实现大规模数据上的并行数据挖掘,包括分类、聚类、频繁模式挖掘、回归、降维等算法,目前已经发布了四个版本。

4基于云计算的海量数据挖掘服务研究

云计算除了给用户提供通用的并行编程模型和大规模数据处理能力之外,另一个重要的特点是为用户提供开放的计算服务平台。在数据挖掘方向,现在也有一系列的系统被开发出来,面向公众提供数据挖掘服务云计算平台。

Talia et al[10]提出可以从四个层次提供云计算数据挖掘服务:底层为组成数据挖掘算法的基本步骤;第二层为单独的数据挖掘服务,例如分类、聚类等;第三层为分布式的数据挖掘模式,例如并行分类、聚合式机器学习等;第四层为之前三层元素构成的完整的数据挖掘应用。在此设计基础上,他们设计了基于云计算的数据挖掘开放服务框架,并开发了一系列的数据挖掘服务系统,例如Weka4WS、Knowledge Grid、Mobile Data Mining Services、Mining@home等,用户可以利用图形界面定义自己的数据挖掘工作流,然后在平台上执行。

PDMiner[11]是由中国科学院计算技术研究所开发的基于Hadoop的并行分布式数据挖掘平台,该系统现在已经用于中国移动通信企业TB级实际数据的挖掘。PDMiner提供了一系列并行挖掘算法和ETL操作组件,开发的ETL算法绝大多数达到了线性加速比,同时具有很好的容错性。PDMiner的开放式架构可以使用户将算法组件经过简单配置方便地封装加载到系统中。

此外,商业智能领域的各大公司也提供面向企业的大规模数据挖掘服务,例如微策略、IBM、Oracle等公司都拥有自己的基于云计算的数据挖掘服务平台。

5总结和展望

通过云计算的海量数据存储和分布计算,为云计算环境下的海量数据挖掘提供了新方法和手段,有效解决了海量数据挖掘的分布存储和高效计算问题。开展基于云计算特点的数据挖掘方法的研究,可以为更多、更复杂的海量数据挖掘问题提供新的理论与支撑工具。而作为传统数据挖掘向云计算的延伸和丰富,基于云计算的海量数据挖掘将推动互联网先进技术成果服务于大众,是促进信息资源的深度分享和可持续利用的新方法、新途径。

I. 数据挖掘十大算法-

整理里一晚上的数据挖掘算法,其中主要引自wiki和一些论坛。发布到上作为知识共享,但是发现Latex的公式转码到网页的时候出现了丢失,暂时没找到解决方法,有空再回来填坑了。

——编者按

一、 C4.5

C4.5算法是由Ross Quinlan开发的用于产生决策树的算法[1],该算法是对Ross Quinlan之前开发的ID3算法的一个扩展。C4.5算法主要应用于统计分类中,主要是通过分析数据的信息熵建立和修剪决策树。

1.1 决策树的建立规则

在树的每个节点处,C4.5选择最有效地方式对样本集进行分裂,分裂规则是分析所有属性的归一化的信息增益率,选择其中增益率最高的属性作为分裂依据,然后在各个分裂出的子集上进行递归操作。

依据属性A对数据集D进行分类的信息熵可以定义如下:

划分前后的信息增益可以表示为:

那么,归一化的信息增益率可以表示为:

1.2 决策树的修剪方法

C4.5采用的剪枝方法是悲观剪枝法(Pessimistic Error Pruning,PEP),根据样本集计算子树与叶子的经验错误率,在满足替换标准时,使用叶子节点替换子树。

不妨用K表示训练数据集D中分类到某一个叶子节点的样本数,其中其中错误分类的个数为J,由于用估计该节点的样本错误率存在一定的样本误差,因此用表示修正后的样本错误率。那么,对于决策树的一个子树S而言,设其叶子数目为L(S),则子树S的错误分类数为:

设数据集的样本总数为Num,则标准错误可以表示为:

那么,用表示新叶子的错误分类数,则选择使用新叶子节点替换子树S的判据可以表示为:

二、KNN

最近邻域算法(k-nearest neighbor classification, KNN)[2]是一种用于分类和回归的非参数统计方法。KNN算法采用向量空间模型来分类,主要思路是相同类别的案例彼此之间的相似度高,从而可以借由计算未知样本与已知类别案例之间的相似度,来实现分类目标。KNN是一种基于局部近似和的实例的学习方法,是目前最简单的机器学习算法之一。

在分类问题中,KNN的输出是一个分类族群,它的对象的分类是由其邻居的“多数表决”确定的,k个最近邻居(k为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若k = 1,则该对象的类别直接由最近的一个节点赋予。在回归问题中,KNN的输出是其周围k个邻居的平均值。无论是分类还是回归,衡量邻居的权重都非常重要,目标是要使较近邻居的权重比较远邻居的权重大,例如,一种常见的加权方案是给每个邻居权重赋值为1/d,其中d是到邻居的距离。这也就自然地导致了KNN算法对于数据的局部结构过于敏感。

三、Naive Bayes

在机器学习的众多分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBC)[3]。朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。

在假设各个属性相互独立的条件下,NBC模型的分类公式可以简单地表示为:

但是实际上问题模型的属性之间往往是非独立的,这给NBC模型的分类准确度带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型;而在属性相关性较小时,NBC模型的性能最为良好。

四、CART

CART算法(Classification And Regression Tree)[4]是一种二分递归的决策树,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分。在CART算法中主要分为两个步骤:将样本递归划分进行建树过程;用验证数据进行剪枝。

五、K-means

k-平均算法(k-means clustering)[5]是源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-means的聚类目标是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类。

5.1 k-means的初始化方法

通常使用的初始化方法有Forgy和随机划分(Random Partition)方法。Forgy方法随机地从数据集中选择k个观测作为初始的均值点;而随机划分方法则随机地为每一观测指定聚类,然后执行“更新”步骤,即计算随机分配的各聚类的图心,作为初始的均值点。Forgy方法易于使得初始均值点散开,随机划分方法则把均值点都放到靠近数据集中心的地方;随机划分方法一般更适用于k-调和均值和模糊k-均值算法。对于期望-最大化(EM)算法和标准k-means算法,Forgy方法作为初始化方法的表现会更好一些。

5.2 k-means的标准算法

k-means的标准算法主要包括分配(Assignment)和更新(Update),在初始化得出k个均值点后,算法将会在这两个步骤中交替执行。

分配(Assignment):将每个观测分配到聚类中,使得组内平方和达到最小。

更新(Update):对于上一步得到的每一个聚类,以聚类中观测值的图心,作为新的均值点。

六、Apriori

Apriori算法[6]是一种最有影响的挖掘布尔关联规则频繁项集的算法,其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。Apriori采用自底向上的处理方法,每次只扩展一个对象加入候选集,并且使用数据集对候选集进行检验,当不再产生匹配条件的扩展对象时,算法终止。

Apriori的缺点在于生成候选集的过程中,算法总是尝试扫描整个数据集并尽可能多地添加扩展对象,导致计算效率较低;其本质上采用的是宽度优先的遍历方式,理论上需要遍历次才可以确定任意的最大子集S。

七、SVM

支持向量机(Support Vector Machine, SVM)[7]是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

除了进行线性分类之外,SVM还可以使用所谓的核技巧有效地进行非线性分类,将其输入隐式映射到高维特征空间中,即支持向量机在高维或无限维空间中构造超平面或超平面集合,用于分类、回归或其他任务。直观来说,分类边界距离最近的训练数据点越远越好,因为这样可以缩小分类器的泛化误差。

八、EM

最大期望算法(Expectation–Maximization Algorithm, EM)[7]是从概率模型中寻找参数最大似然估计的一种算法。其中概率模型依赖于无法观测的隐性变量。最大期望算法经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。

九、PageRank

PageRank算法设计初衷是根据网站的外部链接和内部链接的数量和质量对网站的价值进行衡量。PageRank将每个到网页的链接作为对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。

算法假设上网者将会不断点网页上的链接,当遇到了一个没有任何链接出页面的网页,这时候上网者会随机转到另外的网页开始浏览。设置在任意时刻,用户到达某页面后并继续向后浏览的概率,该数值是根据上网者使用浏览器书签的平均频率估算而得。PageRank值可以表示为:

其中,是被研究的页面集合,N表示页面总数,是链接入页面的集合,是从页面链接处的集合。

PageRank算法的主要缺点是的主要缺点是旧的页面等级会比新页面高。因为即使是非常好的新页面也不会有很多外链,除非它是某个站点的子站点。

十、AdaBoost

AdaBoost方法[10]是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分的样本上。在具体实现上,最初令每个样本的权重都相等,对于第k次迭代操作,我们就根据这些权重来选取样本点,进而训练分类器Ck。然后就根据这个分类器,来提高被它分错的的样本的权重,并降低被正确分类的样本权重。然后,权重更新过的样本集被用于训练下一个分类器Ck[,并且如此迭代地进行下去。

AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。

引用

[1] Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan Kaufmann Publishers, 1993.

[2] Altman, N. S. An introction to kernel and nearest-neighbor nonparametric regression. The American Statistician. 1992, 46 (3): 175–185. doi:10.1080/00031305.1992.10475879

[3] Webb, G. I.; Boughton, J.; Wang, Z. Not So Naive Bayes: Aggregating One-Dependence Estimators. Machine Learning (Springer). 2005, 58 (1): 5–24. doi:10.1007/s10994-005-4258-6

[4] decisiontrees.net Interactive Tutorial

[5] Hamerly, G. and Elkan, C. Alternatives to the k-means algorithm that find better clusterings (PDF). Proceedings of the eleventh international conference on Information and knowledge management (CIKM). 2002

[6] Rakesh Agrawal and Ramakrishnan Srikant. Fast algorithms for mining association rules in large databases. Proceedings of the 20th International Conference on Very Large Data Bases, VLDB, pages 487-499, Santiago, Chile, September 1994.

[7] Cortes, C.; Vapnik, V. Support-vector networks. Machine Learning. 1995, 20 (3): 273–297. doi:10.1007/BF00994018

[8] Arthur Dempster, Nan Laird, and Donald Rubin. "Maximum likelihood from incomplete data via the EM algorithm". Journal of the Royal Statistical Society, Series B, 39 (1):1–38, 1977

[9] Susan Moskwa. PageRank Distribution Removed From WMT. [October 16, 2009]

[10] Freund, Yoav; Schapire, Robert E. A Decision-Theoretic Generalization of on-Line Learning and an Application to Boosting. 1995. CiteSeerX: 10.1.1.56.9855

热点内容
漆昼之翁密码是多少 发布:2025-05-10 15:52:55 浏览:846
linux与windows的分区 发布:2025-05-10 15:40:18 浏览:996
搜狐视频破解缓存 发布:2025-05-10 15:39:06 浏览:807
存储器主要用来 发布:2025-05-10 15:17:34 浏览:427
两台服务器怎么部署redis 发布:2025-05-10 15:16:09 浏览:903
cocoa编程 发布:2025-05-10 15:15:18 浏览:181
中控导航什么配置好 发布:2025-05-10 15:15:07 浏览:790
个人网站的数据库 发布:2025-05-10 15:10:17 浏览:119
会编程好处 发布:2025-05-10 14:58:49 浏览:480
编程的过程 发布:2025-05-10 14:58:38 浏览:343