数据挖掘算法案例三篇Word文档格式.docx
- 文档编号:19406380
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:129.91KB
数据挖掘算法案例三篇Word文档格式.docx
《数据挖掘算法案例三篇Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据挖掘算法案例三篇Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
一个极好的指南是C.J.CBurges的《模式识别支持向量机指南》。
vanderWalt和Barnard将支持向量机和其他分类器进行了比较。
(四)TheApriorialgorithm
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。
其核心是基于两阶段频集思想的递推算法。
该关联规则在分类上属于单维、单层、布尔关联规则。
在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
(五)最大期望(EM)算法
在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(LatentVariabl)。
最大期望经常用在机器学习和计算机视觉的数据集聚(DataClustering)领域。
(六)PageRank
PageRank是Google算法的重要内容。
20XX年9月被授予美国专利,专利人是Google创始人之一拉里·
佩奇(LarryPage)。
因此,PageRank里的page不是指网页,而是指佩奇,即这个等级方法是以佩奇来命名的。
PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。
PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。
这个就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和你的网站挂钩。
PageRank这个概念引自学术中一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。
(七)AdaBoost
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。
将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
(八)kNN:
k-nearestneighborclassification
K最近邻(k-NearestNeighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
该方法的思路是:
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
(九)NaiveBayes
在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(DecisionTreeModel)和朴素贝叶斯模型(NaiveBayesianModel,NBC)。
朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。
理论上,NBC模型与其他分类方法相比具有最小的误差率。
但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。
在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。
而在属性相关性较小时,NBC模型的性能最为良好。
(十)CART:
分类与回归树
CART,ClassificationandRegressionTrees。
在分类树下面有两个关键的思想。
第一个是关于递归地划分自变量空间的想法;
第二个想法是用验证数据进行剪枝。
二、数据挖掘经典案例
当前,市场竞争异常激烈,各商家企业为了能在竞争中占据优势,费劲心思。
使用过OLAP技术的企业都知道,OLAP技术能给企业带来新的生机和活力。
OLAP技术把企业大量的数据变成了客户需要的信息,把这些信息变成了价值,提高了企业的产值和效益,增强了客户自身的竞争实力。
“啤酒与尿布”的故事家喻户晓,在IT界里,几乎是数据挖掘的代名词,那么各商家企业受了多少启发,数据挖掘又给他们带来了多少价值呢?
客户需求
客户面对大量的信息,用OLAP进行多维分析。
如:
一个网上书店,用OLAP技术可以浏览到什么时间,那个类别的客户买了多少书等信息,如果想动态的获得深层次的信息,比如:
哪些书籍可以打包推荐,哪些书籍可以在销售中关联推出等等,就要用到数据挖掘技术了。
当客户在使用OLAP技术进行数据的多维分析的时候,联想到“啤酒与尿布”的故事,客户不禁会有疑问,能不能通过数据挖掘来对数据进行深层次的分析呢,能不能将数据挖掘和OLAP结合起来进行分析呢?
SQLServer20XX数据挖掘:
SQLServer20XX的DataMining是SQLServer20XX分析服务(AnalysisServices)中的一部分。
数据挖掘通常被称为“从大型数据库提取有效、可信和可行信息的过程”。
换言之,数据挖掘派生数据中存在的模式和趋势。
这些模式和趋势可以被收集在一起并定义为挖掘模型。
挖掘模型可以应用于特定的业务方案,例如:
预测销售额、向特定客户发送邮件、确定可能需要搭售的产品、查找客户将产品放入购物车的顺序序列。
Microsoft决策树算法、MicrosoftNaiveBayes算法、Microsoft聚类分析算法、Microsoft神经网络算法(SSAS),可以预测离散属性,例如,预测目标邮件活动的收件人是否会购买某个产品。
Microsoft决策树算法、Microsoft时序算法可以预测连续属性,预测连续属性,例如,预测下一年的销量。
Microsoft顺序分析和聚类分析算法预测顺序,例如,执行公司网站的点击流分析。
Microsoft关联算法、Microsoft决策树算法查找交易中的常见项的组,例如,使用市场篮分析来建议客户购买其他产品。
Microsoft聚类分析算法、Microsoft顺序分析和聚类分析算法,查找相似项的组,例如,将人口统计数据分割为组以便更好地理解属性之间的关系。
巅峰之旅之案例一:
网上书店关联销售
提出问题
网上书店现在有了很强的市场和比较固定的大量的客户。
为了促进网上书店的销售量的增长,各网上书店采取了各种方式,给客户提供更多更丰富的书籍,提供更优质服务,等方式吸引更多的读者。
是不是这样就够了呢?
这里,给众多网上书店的商家们提供一种非常好的促进销售量增长,吸引读者的方法,就是关联销售分析。
这种方法就是给客户提供其他的相关书籍,也就是在客户购买了一种书籍之后,推荐给客户其他的相关的书籍。
这种措施的运用给他们带来了可观的效益。
首先必须明确的是,这里介绍的关联销售并不是,根据网上书店的销售记录进行的比例统计,也区别于简单的概率分析统计,是用的关联规则算法。
“啤酒和尿布”的故事足以证明了该算法的强大功能和产生的震撼效果。
那么,怎么来实现这样一个效果呢?
解决步骤
首先,我们有数据源,也就是销售记录。
这里我们做数据挖掘模型,要用到两张表,一张表是我们的会员,用会员ID号来代替;
另一张表是我们那个会员买了什么书。
我们应用SQLServer20XX的DataMining工具,建立数据挖掘模型。
具体步骤如下:
第一步:
定义数据源。
选取的为网上书店的销售记录数据源(最主要的是User表和Sales表)。
第二步:
定义数据源视图。
在此我们要建立好数据挖掘中事例表和嵌套表,并定义两者之间的关系,定义User为事例表(CaseTable),Sales为嵌套表(NestedTable)。
第三步:
选取MicrosoftAssociationRules(关联规则)算法,建立挖掘模型。
第四步、设置算法参数,部署挖掘模型。
第五步、浏览察看挖掘模型。
对于关联规则算法来说,三个查看的选项卡。
A:
项集:
“项集”选项卡显示被模型识别为经常发现一起出现的项集的列表。
在这里指的是经过关联规则算法处理后,发现关联在一起的书籍的集合。
B:
规则:
“规则”选项卡显示关联算法发现的规则。
“规则”选项卡包含一个具有以下列的网格:
“概率”、“重要性”和“规则”。
概率说明出现规则结果的可能性。
重要性用于度量规则的用途。
尽管规则出现的概率可能很高,但规则自身的用途可能并不重要。
重要性列就是说明这一情况的。
例如,如果每个项集都包含属性的某个特定状态,那么,即使概率非常高,预测状态的规则也并不重要。
重要性越高,规则越重要。
C:
关联网络:
节点间的箭头代表项之间有关联。
箭头的方向表示按照算法发现的规则确定的项之间的关联。
效果展示
1、我们可以看到在上图中,绿色的是我们选择的节点,橙色的是可以预测所选节点的节点,也就是说如果消费者买了《月光宝盒(2VCD)》的话,那么我们可以给该消费者推荐《乱世佳人(上集,2VCD)》。
紫色的是和所选节点能够双向预测的,即买了《大圣娶亲》,推荐《乱世佳人(上集,2VCD)》;
同样,买了《乱世佳人(上集,2VCD)》,推荐《大圣娶亲》。
这样我们就很容易看到经过关联算法计算出来的书籍之间的关联性。
如图3所示效果。
2、我们也可以通过写DMX语句来实现预测查询。
SELECTPredictAssociation([User].[Sales],include_statistics,10)
From
[User]
NATURALPREDICTIONJOIN
(SELECT(SELECT'
月光宝盒(2VCD)'
AS[BookName])AS[Sales])ASt
巅峰之旅之案例二:
客户类别销售分析
这个案例的前提是我们已经建立好了一个OLAP的多维数据库Sales,事实表为FactInternetSales,有五个维度,分别是DimCurrency,DimCustomer,DimProduct,DimTime,DimPromotion。
利用OLAP建立的多维数据库Sales,我们可以实现多角度的浏览和分析。
例如:
我们可以分析20XX年第一季度的M生产线产品的销售量情况,还可以实现灵活的交叉分析,等等。
但是,如果我们要分析,某个维度的多个属性的综合的销售量,例如:
客户维度里有BirthDate、EnglishEducation、HouseOwnerFlag、NumberCarsOwned、YearlyIncome等属性,在多维数据库里面分析的时候,
我们可以把客户维度的NumberCarsOwned属性放在展示区域的行上,把度量值OrderQuantity放在列上,查看拥有0-4辆汽车的客户的订购所有产品的数量。
同样,我们也可以类似的查看其他属性的情况。
但是,如果我们要把客户维度的某些属性综合考虑来分类,例如:
我们要把高收入、高学历、高消费的客户作为一个群体,把高收入,低学历、高消费的客户作为一个群体,等等,然后,基于这些群体来浏览分析,销售情况,如何来实现呢?
用过聚类算法的大概比较清楚,聚类算法,是用来给事物分类的。
那么怎么用聚类算法的这个特性,和OLAP进行正和呢。
请看下面这个案例:
建立挖掘模型。
这里需要注意的是:
以前我们在建立数据挖掘模型的时候是基于关系型数据源。
而在这里,我们要基于多维数据库Sales,选取维度DimCustomer为数据挖掘模型的数据源。
按照向导,选取事例键DimCustomer,
在选取事例级别列对话框里面,选择一些属性和度量值,我们这里选取EnglishEducation、HouseOwnerFlag、NumberCarsOwned、YearlyIncome、SalesAmount。
如图5所示。
D:
在完成对话框里面,我们输入挖掘结构名称CustomerSturcture,输入挖掘模型名称CustomerClustering。
必须注意的是,一是一定要选择创建挖掘模型维度,输入挖掘模型维度的名称CustomerClustering;
二是一定要选择使用挖掘模型维度创建多维数据集Sales_DM。
E:
设置算法参数。
然后对创建的挖掘结构和挖掘模型进行处理。
此时,共享维度里面会自动添加了一个CustomerClustering维度,也就是数据挖掘维度。
处理CustomerClustering维度。
处理多维数据集Salse_DM。
处理后的多维数据集Sales_DM,就包含了数据挖掘维度CustomerClustering。
这样,我们就可以把经过聚类算法分类后的客户维度,来进行多维数据分析。
这些Cluster是我们用聚类算法建立的挖掘模型的维度成员,每个Cluster都是我们所选属性的一个综合的结果,但是代表着一个明显的特征。
我们还可以在数据挖掘模型里面,对各个Cluster进行名称的标示,如Cluster1是高收入高消费高学历的群体,我们就可以给他命名,把所有的Cluster都命名为能代表本身特性的名称,这样,使得多为数据库的信息就更丰富了。
篇二:
常用数据挖掘算法案例
频繁模式挖掘,关系挖掘,以及相互关系挖掘
所谓频繁模式挖掘,指的是比如在商品交易数据库记录中,找出一起出现的商品集合,这些商品集合出现的频率要高于一个阈值,这些经常出现的商品集合称之为频繁模式。
频繁模式的思路很简单,首先统计出每个单个商品出现的次数,这就构成了一个一维表。
然后再根据一维表,商品两两组合产生一个二维表。
然后再由二维表产生三维表,直至到n维表。
其中可以利用apriori,进行剪枝,也就是说一维表中如果出现的频率低于阈值的商品,就可以直接去掉,应为包含该商品的高维商品集合的出现频率不可能高于该阈值,可以直接剪枝去掉。
频繁模式挖掘还有一种更加高效的方式,就是FPGrowth,该方法通过扫描一遍数据库,在内存中构造一颗FP
tree,基于这棵树就可以产生所有的频繁模式。
很显然FPGrowth算法的效率要高很多,但是其缺陷也很明显,在内存中维护一颗FP
tree的开销也是很大的。
为了解决这个问题,一个直接的思路是将数据库水平分表到各台机器上,在各台机器上执行本地的FP
Growth,然后再将各台机器上的结果汇总起来,得到最终的FPGrowth的结果。
所谓关系挖掘,值得是挖掘出各个项目之间的因果关系。
关系挖掘的基础是频繁模式挖掘,通过频繁模式挖掘,很容易得出关系,举例就很容易明白,比如我们得到一个频繁集合:
那么通过排列组合可以得到l的子集集合:
那么很容易得到下面的推理集合,也就是挖掘出的关系:
所有的关系挖掘本质上都是基于频繁模式推导出来的。
在关系挖掘中,有一种非常有用的关系模式挖掘:
miningquantitativeassociation
rules。
所谓quantitativeassociationrules是这样一种关系模式:
该关系模式的挖掘,首先是确定我们所感兴趣的属性:
quan1,quan2,cat,然后根据事先确定的间隔,将quan1,quan2按照一定的间隔划分成一定的catorgory,然后进行频繁模式挖掘,得出一些关系,然后将这些关系按照grid进行聚合,生成最后的关系模式。
通过关系挖掘挖出的关系中往往有很多不是非常有用,因此需要通过另外的指标排除一些这样的关系,这个指标就是correlation,如下:
Correlation是用来衡量A,B之间的相关性,从而排除那些没有意义的规则。
对于上述所提到的关系挖掘,有一种称之为constraint-basedassociation
mining,这是一种特殊的关系挖掘,它对于所挖掘出的条件加了一些限制条件,这些限制条件可能是由用户提出的,其主要目的是排除一些不感兴趣的关系。
对于这种关系挖掘,最直接的办法先按照最普通的关系挖掘方法进行挖掘,然后利用条件来对结果进行。
但是还有更好的方法,就是在挖掘的过程中利用这些条件,从而缩小整个挖掘过程中的search
space,从而提高效率。
这些限制条件分为这么几种:
antimonotonic,monotonic,succinct,convertible,inconvertible,针对每一种的限制条件,都有一些通用的方法或策略来缩小挖掘的search
space,可参阅相关资料。
分类和预测
分类树
分类树是一种很常用的分类方法,它该算法的框架表述还是比较清晰的,从根节点开始不断得分治,递归,生长,直至得到最后的结果。
根节点代表整个训练样本集,通过在每个节点对某个属性的测试验证,算法递归得将数据集分成更小的数据集.某一节点对应的子树对应着原数据集中满足某一属性测试的部分数据集.这个递归过程一直进行下去。
该算法是数据挖掘中常用的一类方法。
贝叶斯分类器
贝叶斯分类的思想很简单,就是计算属性和分类之间的条件概率,选择使得条件概率最大的分类作为最终的分类结果,这是一种基于统计的分类方法,得到了广泛的引用。
贝叶斯分类器分为两种,一种是朴素贝叶斯分类器,它基于贝叶斯理论:
其中X代表特征向量,C代表分类.我们的目标就是找出使得这个后验概率最大的那个类.
其中需要注意的是X中的各个特征分量是分布独立的.这样就有:
朴素贝叶斯分类器最经典的应用场景就是垃圾邮件过滤。
朴素贝叶斯分类器的升级版本就是贝叶斯网络,因为朴素贝叶斯网络假设样本的特征向量的各个特征属性是独立的,但对于现实世界,这样的建模未必合理,因此有人就提出了贝叶斯网络,贝叶斯网络假设各个属性之间是存在条件概率的。
贝叶斯网络是一个各个属性组成的有向拓扑网络,每条边代表条件概率,通过贝叶斯网络能够计算出各个属性相互组合的条件概率。
基于规则的分类器
这种分类器利用IFTHEN的规则来进行分类。
对于如何产生规则,有两种方法:
第一种方法,就是从决策树中生成规则。
因为决策树天然的就是规则。
第二种方法,是采用SequentialCovering
Algorithm,直接从训练样本中生成规则集。
该方法的思路是一种general-to-specific的方法,该方法从一个空规则开始,然后向规则中依次逐渐增加属性测试条件,选择该属性测试值(也就是测试分界点,attr
基于神经网络的分类器
神经网络分类器是依据属性构造一个网络拓扑结构,该拓扑结构的边具有权重值,我们的目的是不断得利用训练样本然后不断得更新神经网络的边权重值。
然后利用该网络就可以得到输出的分类。
该算法模拟神经的组成结构,利用了单元之间的反馈机制。
但该算法的缺点也很明显,网络拓扑结构的确定没有明确统一的方法论,很多只能靠规划者的经验,因此训练结果往往因人而异,限制了神经网络的使用。
支持向量机分类器
支持向量机是在训练样本空间中构造超平面来对样本进行分类,它的优势是对高维度不敏感。
但效率较低,实施较为复杂。
关联分类器
关联分类器的思路很简单,前面我们提到频繁模式挖掘,我们将样本的某一属性的(属性,值)对作为一个条目,我们找出经常在一起出现的条目集合,然后找出这些频繁项目集合,这些频繁项目集合对应的样本集合中占主流的分类就作为关联规则的分类结果,该结果如下:
关联分类器有三种方法:
CBA,CMAR和CPAR
LazyLearner
LazyLearner主要有两种分类器:
Knn分类器和Cbr分类器。
Knn分类器思路很直接,找出和待分类样本最近的K的样本,然后将这k个样本中占主流的的类别作为分类结果分配给待分类样本。
该分类器的关键在于如何确定k,一种思路是根据经验,另外一种思路是迭代,让k从1开始递增,计算每个k取值时对某一测试集的错误率,选择错误最小的那个k。
另外一个关键就是如何快速得找出k个最近的邻居,这需要我们对各个样本点进行事先排序,并设计一个合适的数据结构,使得找出k个最近邻居的复杂度降为log|D|.
预测
所谓预测,就是根据既有的数据预测新出现的数据的预测值。
预测有两种方法,线性回归和非线性回归。
所谓线性回归,指的是
Y=b+wX公式1
其中X可以是向量,比如(x1,x2),因此线性回归则变成
y=w0+w1*x1+w2*x2公式2
对于公式1,其目标就是求出w向量。
那么比较常用的方法就是最小二乘法,使得求出的w对于已有的样本使其方差和最小。
方差和就是目标函数,目标函数就是自变量w的一个函数,通过求导求极值,很容易得到使得目标函数最小的w的值。
通过一些软件包,如SAS,matlab,SPSS很容易做这种线性回归的w计算。
并不是所有的模型都是线性模型,实际的问题中很多模型是非线性的,比如多项式,如下
y=w0+w1*x+w2*x*x+w3*x*x*x
解决这种问题的思路是将非线性模型转化为线性模型,然后再用线性回归的方法来解决。
比如上面的多项式公式,我们令
x1=xx2=x*xx3=x*x*x
这样就变成了y=w0+w1*x1+w2*x2+w3*x3,这就变成了线性回归的问题。
聚类
聚类是数据挖掘需要解决的另外一个问题,分类是我们知道确切的分类结果,知道我们需要将样本分成具体的哪几类。
而聚类问题是实现不知道我们的样本具体属于哪些类别,而需要我们从样本中发掘出这些类别。
下面谈几种较为通用的聚类方法谈谈。
基于分区的聚类法
该方法的一个典型的方法就是K-means,该方法非常简单,首先确定我们需要将数据样本分成多少个类,这个需要确定,我们称之为k。
然后从样本中任意选择k个样本作为k个类的中心,然后计算每个样本到这k个中心的距离,把他们分配到最相近的类。
这样就得到k个聚类,然后重新计算这k个聚类的中心,然后再重复前面的过程,直至没有样本被重新分配从而达到收敛。
下面是k-means的伪码
基于层次的分类法
基于层次的分类法有两种:
凝聚和分裂。
凝聚:
它基于一种自底而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 挖掘 算法 案例
![提示](https://static.bdocx.com/images/bang_tan.gif)