大数据十大经典算法讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Kmeans算法都是假设数据都是在内存中存储的, 随着数据集的增大,基于内存的KMeans就难 以适应.MapReduce是一个为并行处理大 量数据而设计的编程模型,它将工作划分为独立任 务组成的集合。
Map-reduce的过程简介
Map函数设计
1Map函数的设计 MapReduce框架中Map 函数 的输入为〈key,value〉对,其 中:key为输入数据记录的偏移量;v alue为当前样本的各维坐标值组成的 向量. 首先计算该向量到各个聚簇中心点的距离, 然后选择最小的距离的聚簇作为该样本所 属的簇,之后输出〈key′,valu e′〉,其中key′是距最近的聚簇的标 识符,value′为表示该样本的向 量.
我们主要研究的三个方面因素。
初始中心点的划分
讨论初始中心点意义何在?下面的例子一目了然吧?
初始中心点
收敛后
你
懂
的
…
如何衡量Kmeans算法的精确度 ?
在进一步阐述初始中心点选择 之前,我们应该先确定度量 kmeans的算法精确度的方法。 一种度量聚类效果的标准是: SSE(Sum of Square Error, 误差平方和) SSE越小表示数据点越接近于 它们的质心,聚类效果也就越 好。因为对误差取了平方所以 更重视那些远离中心的点。 一种可以肯定降低SSE的方法 是增加簇的个数。但这违背了 聚类的目标。因为聚类是在保 持目标簇不变的情况下提高聚 类的质量。 现在思路明了了我们首先以缩 小SSE为目标改进算法。
于是得到百度文库个很不靠 谱的聚类结果。
为什么会出错?
究竟哪里错 了!!!
上面的例子当中出错的原因 很明显。凭直觉我们很容易 知道不可能有这样的天气— —它的气温是100℃,湿度 是1100%。可见坏点对 kmeans的影响之大。另一 方面,季节有春夏秋冬之分, 而我们强行的把它们分为夏 冬两个类也是不太合理的。 如果分为四个类我们也许可 以“中和”掉坏点的影响。
Combine函数设计
Combine函数的设计Comb ine函数的输入为〈key′,val ue′〉对,即Map函数的输出.首先, 从value中解析出各个向量,然后 将解析出的向量相加并记录集合中向量 的个数.输出是〈key1′,valu e1′〉对,其中:key1′是聚簇的标 识符;value1′是以上集合中所有 的向量相加所得的向量及集合中向量的 数目
带canopy预处理的kmeans 算法
(1)将数据集向量化得到一个list后放 入内存,选择两个距离阈值:T1和T2。 (2)从list中任取一点P,用低计算成 本方法快速计算点P与所有Canopy之 间的距离(如果当前不存在Canopy, 则把点P作为一个Canopy),如果点P 与某个Canopy距离在T1以内,则将点 P加入到这个Canopy; (3)如果点P曾经与某个Canopy的距 离在T2以内,则需要把点P从list中删 除,这一步是认为点P此时与这个 Canopy已经够近了,因此它不可以再 做其它Canopy的中心了; (4)重复步骤2、3,直到list为空结 束
改进的算法——二分 Kmeans算法
为了克服k均值算法收敛于局部的问题,提出了二分k 均值算法。该算法首先将所有的点作为一个簇,然后 将该簇一分为二。之后选择其中一个簇继续划分,选 择哪个簇进行划分取决于对其划分是否可以最大程度 降低SSE值。 伪代码如下: 将所有的点看成一个簇 当簇数目小于k时 对于每一个簇
K值的选择以及坏点的剔除
讨论k值、剔除坏点的意义何在?下面以一个例 子来说明k值的重要性。
有一组关于湿度和温 度的数据想把它划分 为冬天和夏天两部分。
(k=2)
气象学家打了个盹不小 心把(100℃,1000%) 和(101℃,1100%)加 入了数据,并不幸选取 (100℃,1000%)作为 其中一个初始点
算法改进后的实效
a的 的可 n运 K以 s行 M看 算效 e出 法率 a:
要 n基 远 s于 远 算M 高 法a 于p 传R 统e 的d Ku Mc ee
Q&A
http://www.ahj zj y.com/ http://m.ahj zj y.com/ http://j k.wuhunews.cn/ http://www.08711000.com/ http://www.cnb uddhism.com / http://m.cnbuddhism.com/ http://www.j hdxj k.com/ http://3g.j hdxj k.com/ http://www.8b2. net/ http://m.8b2.net/ http://health.zhaoyuan365.co m/ http://zhaoyuan365.yyd120.com/ http://dx.587766.com/ http://dx.587766.com/m/ http://www.dian xian300.com/ http://www.chem36.co m/ http://www.bj scp.com/ http://dxb.ldqxn.com/ http://www.hljdxb yy120.com/ http://www.moo beye.com/ http://www.dz wlw.com http://www.tbjkids.co m http://www.hzdiyan.co m http://www.gu wxb.co m/ http://www.taixsw.com / http://www.uj bj b.com/ http://www.xcqs wj .com http://www.sysm120.com http://sx.xazj dxb.com 治 疗 癫 痫 病 医院 癫痫医院 癫 痫 病 的 治 疗方法 治 疗 癫 痫 病 医院哪 家好 全 国 癫 痫 医 院排名 癫 痫 病 的 最 新治疗 方法 北京癫痫医院 北 京 癫 痫 病 专科医 院 北 京 癫 痫 病 医院 北 京 好 的 癫 痫病医 院 北 京 治 疗 癫 痫病的 医院 癫 痫 病 能 治 好吗 治 疗 癲 痫 病 好办法 治 疗 癫 痫 病 最好的 医院 治 疗 癫 痫 病 最好的 药 北 京 治 疗 癫 痫的医 院 儿 童 癫 痫 的 最新治 疗方法 北 京 儿 童 癫 痫病科 医院 癫痫治疗费用 癫 痫 治 疗 多 少钱 癫 痫 病 的 手 术费用 癫 痫 病 会 遗 传吗 癫痫遗传吗 癫 痫 病 的 早 期症状 癫痫病的症状 癫痫症状 小 儿 癫 痫 病 的早期 症状 儿 童 癫 痫 病 的早期 症状 癫 痫 病 是 怎 么引起 的 癫 痫 病 的 发 病原因 癫 痫 病 能 治 愈吗 癫 痫 病 可 以 治愈吗 北 京 治 愈 癫 痫病最 好的医 院 癫 痫 病 人 的 寿命 癫 痫 病 人 的 寿命多 长 治 疗 癫 痫 病 最好的 药 吃 什 么 药 治 癫痫最 有效 癫痫药
The algorithm of Kmeans
小组成员:徐佳、张俊飞、刘志伟、孔祥玉
主要内容:
聚类算法简介 Kmeans算法详解 Kmeans算法的缺陷及若干改进 Kmeans的单机实现与分布式实现策略
Kmeans实战
聚类算法简介
1
聚类的目标:将一组向量分成若干组,组内数据是相似的, 而组间数据是有较明显差异。
Summary:Kmeans是用均值算法把数 据分成K个类的算法!
Kmeans算法详解(1)
步骤一:取得k个初始初始中心点
Kmeans算法详解(2)
步骤二:把每个点划分进相应的簇
Min of three due to the EuclidDistance
Kmeans算法详解(3)
步骤三:重新计算中心点
一个运行结果
一个实验
所有实验都是在实验室搭建的Hadoop平台 上运行的.平台有5 台机器,都是四核Inte l Corei3处理器,4GB内存.Hadoo p版本0.20.2, java版本1.6.25.每台机器之间用千 兆以太网 卡,通过交换机连接.实验所用的数据是人工数 据,维度是48维.为了测试算法的性能,实验 中构 造了分别含有10^4,10^5,10^6,2*10^6 条 记录的数据来进行测试.由于KMeans算法 中有 随机初始化中心点的操作,因此对每一组实验重 复执行25次,取其平均执行时间作为最终实验 结 果
决定性因素
Input & centroids
①数据的采集和抽象 ②初始的中心选择
Selected k
① k值的选定
MaxIterations & Convergence
①最大迭代次数 ②收敛值
factors?
Meassures
①度量距离的手段
主要讨论
初始中 心点
输入的数 据及K值 的选择
距离度 量
2 与分类区别:分类与聚类最大的区别在于分类的目标事先已 知,聚类也被称为无监督机器学习
3
聚类手段:传统聚类算法 ①划分法 ②层次方法 ③基于密 度方法 ④基于网络方法 ⑤基于模型方法
什么是Kmeans算法?
Q1:K是什么?A1:k是聚类算法当中类的个数。 Q2:means是什么?A2:means是均值算法。
计算总误差 在给定的簇上面进行K均值聚类(K=2) 计算将该簇一分为二后的总误差 选择使得误差最小的那个簇进行划分操作
二分Kmeans算法的效果
既然是改进算法就要体现改 进算法的优越性。为此控制 变量,在相同的实验环境下, ①取相同的k值取。 ②选取相同的的距离度量标 准(欧氏距离)
③在相同的数据集下进行测 试。
一组实验结果
一组不好的初始点产生的 Kmeans算法结果
二分kmeans产生的结果
要强调的是尽管只是这一组实验不得以得出二分kmeans的 优越性,但是经过大量实验得出的结论却是在大多数情况下 二分kmeans确实优于朴素的kmeans算法。
全局最小值
二分kmeans真 的能使SSE达 到全局最小值 吗?
从前面的讲解可以看到二分 kmeans算法的思想有点类 似于贪心思想。但是我们会 发现贪心的过程中有不确定 的因素比如:二分一个聚类 时选取的两个中间点是随机 的,这会对我们的策略造成 影响。那么如此一来二分 kmeans算法会不会达到全 局最优解呢?答案是:会! 尽管你可能惊诧于下面的说 法,但全局最小值的定义却 是:可能的最好结果。
Min of three due to the EuclidDistance
Kmeans算法详解(4)
步骤四:迭代计算中心点
Kmeans算法详解(5)
步骤五:收敛
Kmeans算法流程
1.从数据中随机抽取k个点作为初始聚类 的中心,由这个中心代表各个聚类 2.计算数据中所有的点到这k个点的距离, 将点归到离其最近的聚类里 3.调整聚类中心,即将聚类的中心移动到 聚类的几何中心(即平均值)处,也就是 k-means中的mean的含义 4.重复第2步直到聚类的中心不再移动, 此时算法收敛 最后kmeans算法时间、空间复杂度是: 时间复杂度:上限为O(tKmn),下限为Ω (Kmn)其中,t为迭代次数,K为簇的数 目,m为记录数,n为维数 空间复杂度:O((m+K)n),其中,K为簇 的数目,m为记录数,n为维数
带canopy预处理的kmeans 算法的优点
canopy可以自动帮我我们确定k值。
• 有多少canopy,k值就选取多少。 Canopy可以帮我们去除“坏点”。
• 去除离群的canopy
带canopy预处理的kmeans 算法的新挑战
Canopy预处理这么好, 我们以后就用它好了!
我看不见得,它虽然解决 kmeans当中的一些问题, 但其自身也引进了新的问题: t1、t2的选取。
大数据下kmeans算法的并 行策略
单挑OR群殴?!
VS
大数据下kmeans算法的并 行策略
面对海量数据时,传统的聚类算法存在着单位时 间内处理量小、面对大量的数据时处理时间较长、 难以达到预期效果的缺陷以上算法都是假设数据都 是在内存中存储的,随着数据集的增大,基于内存 的KMeans就难以适应.MapReduce 是一个为并行处理大量数据而设计的编程模型。
Reduce函数设计
Reduce函数的输入是〈key2,va lue2〉键值对,其中:key2为聚簇的 标识符;value2为map节点处理的聚 簇中含有的样本的个数及用向量表示的聚簇的 中心点vectortemp.输出为〈ke y2′,value2′〉对,其中:key′为 聚簇的标识符;value′为新的聚簇中 心.Reduce函数首先从函数的输入中解 析出属于同一个聚簇的样本的个数及各个ma p节点传过来的vectortemp,然后 将个数及各个vectortemp相加,之 后将所得到的向量除以个数得到新的中心点坐 标。
Map-reduce的过程简介
Map函数设计
1Map函数的设计 MapReduce框架中Map 函数 的输入为〈key,value〉对,其 中:key为输入数据记录的偏移量;v alue为当前样本的各维坐标值组成的 向量. 首先计算该向量到各个聚簇中心点的距离, 然后选择最小的距离的聚簇作为该样本所 属的簇,之后输出〈key′,valu e′〉,其中key′是距最近的聚簇的标 识符,value′为表示该样本的向 量.
我们主要研究的三个方面因素。
初始中心点的划分
讨论初始中心点意义何在?下面的例子一目了然吧?
初始中心点
收敛后
你
懂
的
…
如何衡量Kmeans算法的精确度 ?
在进一步阐述初始中心点选择 之前,我们应该先确定度量 kmeans的算法精确度的方法。 一种度量聚类效果的标准是: SSE(Sum of Square Error, 误差平方和) SSE越小表示数据点越接近于 它们的质心,聚类效果也就越 好。因为对误差取了平方所以 更重视那些远离中心的点。 一种可以肯定降低SSE的方法 是增加簇的个数。但这违背了 聚类的目标。因为聚类是在保 持目标簇不变的情况下提高聚 类的质量。 现在思路明了了我们首先以缩 小SSE为目标改进算法。
于是得到百度文库个很不靠 谱的聚类结果。
为什么会出错?
究竟哪里错 了!!!
上面的例子当中出错的原因 很明显。凭直觉我们很容易 知道不可能有这样的天气— —它的气温是100℃,湿度 是1100%。可见坏点对 kmeans的影响之大。另一 方面,季节有春夏秋冬之分, 而我们强行的把它们分为夏 冬两个类也是不太合理的。 如果分为四个类我们也许可 以“中和”掉坏点的影响。
Combine函数设计
Combine函数的设计Comb ine函数的输入为〈key′,val ue′〉对,即Map函数的输出.首先, 从value中解析出各个向量,然后 将解析出的向量相加并记录集合中向量 的个数.输出是〈key1′,valu e1′〉对,其中:key1′是聚簇的标 识符;value1′是以上集合中所有 的向量相加所得的向量及集合中向量的 数目
带canopy预处理的kmeans 算法
(1)将数据集向量化得到一个list后放 入内存,选择两个距离阈值:T1和T2。 (2)从list中任取一点P,用低计算成 本方法快速计算点P与所有Canopy之 间的距离(如果当前不存在Canopy, 则把点P作为一个Canopy),如果点P 与某个Canopy距离在T1以内,则将点 P加入到这个Canopy; (3)如果点P曾经与某个Canopy的距 离在T2以内,则需要把点P从list中删 除,这一步是认为点P此时与这个 Canopy已经够近了,因此它不可以再 做其它Canopy的中心了; (4)重复步骤2、3,直到list为空结 束
改进的算法——二分 Kmeans算法
为了克服k均值算法收敛于局部的问题,提出了二分k 均值算法。该算法首先将所有的点作为一个簇,然后 将该簇一分为二。之后选择其中一个簇继续划分,选 择哪个簇进行划分取决于对其划分是否可以最大程度 降低SSE值。 伪代码如下: 将所有的点看成一个簇 当簇数目小于k时 对于每一个簇
K值的选择以及坏点的剔除
讨论k值、剔除坏点的意义何在?下面以一个例 子来说明k值的重要性。
有一组关于湿度和温 度的数据想把它划分 为冬天和夏天两部分。
(k=2)
气象学家打了个盹不小 心把(100℃,1000%) 和(101℃,1100%)加 入了数据,并不幸选取 (100℃,1000%)作为 其中一个初始点
算法改进后的实效
a的 的可 n运 K以 s行 M看 算效 e出 法率 a:
要 n基 远 s于 远 算M 高 法a 于p 传R 统e 的d Ku Mc ee
Q&A
http://www.ahj zj y.com/ http://m.ahj zj y.com/ http://j k.wuhunews.cn/ http://www.08711000.com/ http://www.cnb uddhism.com / http://m.cnbuddhism.com/ http://www.j hdxj k.com/ http://3g.j hdxj k.com/ http://www.8b2. net/ http://m.8b2.net/ http://health.zhaoyuan365.co m/ http://zhaoyuan365.yyd120.com/ http://dx.587766.com/ http://dx.587766.com/m/ http://www.dian xian300.com/ http://www.chem36.co m/ http://www.bj scp.com/ http://dxb.ldqxn.com/ http://www.hljdxb yy120.com/ http://www.moo beye.com/ http://www.dz wlw.com http://www.tbjkids.co m http://www.hzdiyan.co m http://www.gu wxb.co m/ http://www.taixsw.com / http://www.uj bj b.com/ http://www.xcqs wj .com http://www.sysm120.com http://sx.xazj dxb.com 治 疗 癫 痫 病 医院 癫痫医院 癫 痫 病 的 治 疗方法 治 疗 癫 痫 病 医院哪 家好 全 国 癫 痫 医 院排名 癫 痫 病 的 最 新治疗 方法 北京癫痫医院 北 京 癫 痫 病 专科医 院 北 京 癫 痫 病 医院 北 京 好 的 癫 痫病医 院 北 京 治 疗 癫 痫病的 医院 癫 痫 病 能 治 好吗 治 疗 癲 痫 病 好办法 治 疗 癫 痫 病 最好的 医院 治 疗 癫 痫 病 最好的 药 北 京 治 疗 癫 痫的医 院 儿 童 癫 痫 的 最新治 疗方法 北 京 儿 童 癫 痫病科 医院 癫痫治疗费用 癫 痫 治 疗 多 少钱 癫 痫 病 的 手 术费用 癫 痫 病 会 遗 传吗 癫痫遗传吗 癫 痫 病 的 早 期症状 癫痫病的症状 癫痫症状 小 儿 癫 痫 病 的早期 症状 儿 童 癫 痫 病 的早期 症状 癫 痫 病 是 怎 么引起 的 癫 痫 病 的 发 病原因 癫 痫 病 能 治 愈吗 癫 痫 病 可 以 治愈吗 北 京 治 愈 癫 痫病最 好的医 院 癫 痫 病 人 的 寿命 癫 痫 病 人 的 寿命多 长 治 疗 癫 痫 病 最好的 药 吃 什 么 药 治 癫痫最 有效 癫痫药
The algorithm of Kmeans
小组成员:徐佳、张俊飞、刘志伟、孔祥玉
主要内容:
聚类算法简介 Kmeans算法详解 Kmeans算法的缺陷及若干改进 Kmeans的单机实现与分布式实现策略
Kmeans实战
聚类算法简介
1
聚类的目标:将一组向量分成若干组,组内数据是相似的, 而组间数据是有较明显差异。
Summary:Kmeans是用均值算法把数 据分成K个类的算法!
Kmeans算法详解(1)
步骤一:取得k个初始初始中心点
Kmeans算法详解(2)
步骤二:把每个点划分进相应的簇
Min of three due to the EuclidDistance
Kmeans算法详解(3)
步骤三:重新计算中心点
一个运行结果
一个实验
所有实验都是在实验室搭建的Hadoop平台 上运行的.平台有5 台机器,都是四核Inte l Corei3处理器,4GB内存.Hadoo p版本0.20.2, java版本1.6.25.每台机器之间用千 兆以太网 卡,通过交换机连接.实验所用的数据是人工数 据,维度是48维.为了测试算法的性能,实验 中构 造了分别含有10^4,10^5,10^6,2*10^6 条 记录的数据来进行测试.由于KMeans算法 中有 随机初始化中心点的操作,因此对每一组实验重 复执行25次,取其平均执行时间作为最终实验 结 果
决定性因素
Input & centroids
①数据的采集和抽象 ②初始的中心选择
Selected k
① k值的选定
MaxIterations & Convergence
①最大迭代次数 ②收敛值
factors?
Meassures
①度量距离的手段
主要讨论
初始中 心点
输入的数 据及K值 的选择
距离度 量
2 与分类区别:分类与聚类最大的区别在于分类的目标事先已 知,聚类也被称为无监督机器学习
3
聚类手段:传统聚类算法 ①划分法 ②层次方法 ③基于密 度方法 ④基于网络方法 ⑤基于模型方法
什么是Kmeans算法?
Q1:K是什么?A1:k是聚类算法当中类的个数。 Q2:means是什么?A2:means是均值算法。
计算总误差 在给定的簇上面进行K均值聚类(K=2) 计算将该簇一分为二后的总误差 选择使得误差最小的那个簇进行划分操作
二分Kmeans算法的效果
既然是改进算法就要体现改 进算法的优越性。为此控制 变量,在相同的实验环境下, ①取相同的k值取。 ②选取相同的的距离度量标 准(欧氏距离)
③在相同的数据集下进行测 试。
一组实验结果
一组不好的初始点产生的 Kmeans算法结果
二分kmeans产生的结果
要强调的是尽管只是这一组实验不得以得出二分kmeans的 优越性,但是经过大量实验得出的结论却是在大多数情况下 二分kmeans确实优于朴素的kmeans算法。
全局最小值
二分kmeans真 的能使SSE达 到全局最小值 吗?
从前面的讲解可以看到二分 kmeans算法的思想有点类 似于贪心思想。但是我们会 发现贪心的过程中有不确定 的因素比如:二分一个聚类 时选取的两个中间点是随机 的,这会对我们的策略造成 影响。那么如此一来二分 kmeans算法会不会达到全 局最优解呢?答案是:会! 尽管你可能惊诧于下面的说 法,但全局最小值的定义却 是:可能的最好结果。
Min of three due to the EuclidDistance
Kmeans算法详解(4)
步骤四:迭代计算中心点
Kmeans算法详解(5)
步骤五:收敛
Kmeans算法流程
1.从数据中随机抽取k个点作为初始聚类 的中心,由这个中心代表各个聚类 2.计算数据中所有的点到这k个点的距离, 将点归到离其最近的聚类里 3.调整聚类中心,即将聚类的中心移动到 聚类的几何中心(即平均值)处,也就是 k-means中的mean的含义 4.重复第2步直到聚类的中心不再移动, 此时算法收敛 最后kmeans算法时间、空间复杂度是: 时间复杂度:上限为O(tKmn),下限为Ω (Kmn)其中,t为迭代次数,K为簇的数 目,m为记录数,n为维数 空间复杂度:O((m+K)n),其中,K为簇 的数目,m为记录数,n为维数
带canopy预处理的kmeans 算法的优点
canopy可以自动帮我我们确定k值。
• 有多少canopy,k值就选取多少。 Canopy可以帮我们去除“坏点”。
• 去除离群的canopy
带canopy预处理的kmeans 算法的新挑战
Canopy预处理这么好, 我们以后就用它好了!
我看不见得,它虽然解决 kmeans当中的一些问题, 但其自身也引进了新的问题: t1、t2的选取。
大数据下kmeans算法的并 行策略
单挑OR群殴?!
VS
大数据下kmeans算法的并 行策略
面对海量数据时,传统的聚类算法存在着单位时 间内处理量小、面对大量的数据时处理时间较长、 难以达到预期效果的缺陷以上算法都是假设数据都 是在内存中存储的,随着数据集的增大,基于内存 的KMeans就难以适应.MapReduce 是一个为并行处理大量数据而设计的编程模型。
Reduce函数设计
Reduce函数的输入是〈key2,va lue2〉键值对,其中:key2为聚簇的 标识符;value2为map节点处理的聚 簇中含有的样本的个数及用向量表示的聚簇的 中心点vectortemp.输出为〈ke y2′,value2′〉对,其中:key′为 聚簇的标识符;value′为新的聚簇中 心.Reduce函数首先从函数的输入中解 析出属于同一个聚簇的样本的个数及各个ma p节点传过来的vectortemp,然后 将个数及各个vectortemp相加,之 后将所得到的向量除以个数得到新的中心点坐 标。