mahout之canopy算法简单理解
canopy是聚类算法的一种实现
它是一种快速,简单,但是不太准确的聚类算法
canopy通过两个人为确定的阈值t1,t2来对数据进行计算,可以达到将一堆混乱的数据分类成有一定规则的n个数据堆
由于canopy算法本身的目的只是将混乱的数据划分成大概的几个类别,所以它是不太准确的
但是通过canopy计算出来的n个类别可以用在kmeans算法中的k值的确定(因为人为无法准确的确定k值到底要多少才合适,而有kmeans算法本身随机产生的话结果可能不是很精确。有关kmeans算法的解释请看点击打开链接)
canopy算法流程如下:
(1)确定两个阈值t1,t2(确保t1一定大于t2)
(2)从数据集合中随机选出一个数据,计算这个数据到canopy的距离(如果当前没有canopy,则该点直接作为canopy)
(3)如果这个距离小于t1,则给这个数据标上弱标记,将t1加入这个canopy中(同时这个数据可以作为新的canopy来计算其他数据到这个点的距离)
(4)如果这个距离小于t2,则给这个数据标上强标记,并将其中数据集合中删除,此时认为这个数据点距离该canopy已经足够近了,不可能在形成新的canopy
(5)重复2-4的过程,直至数据集合中没有数据
这里的canopy指的是作为要划分数据的中心点,以这个canopy为中心,t2为半径,形成一个小圆。t1为半径,形成一个大圆。在小圆范围内的数据点被认为一定属于这个canopy,不能作为一个新的canopy来划分数据,而小圆范围外,大圆范围内的数据则又可以作为新的canopy来划分数据
划分完之后的数据类似下图
虚线的圈是t2,实线的圈是t1
可以看到canopy算法将可以将一堆杂乱的数据大致的划分为几块
所以canopy算法一般会和kmeans算法配合使用来到达使用者的目的
在使用canopy算法时,阈值t1,t2的确定是十分重要的
t1的值过大,会导致更多的数据会被重复迭代,形成过多的canopy;值过小则导致相反的效果
t2的值过大,会导致一个canopy中的数据太多,反之则过少
这样的情况都会导致运行的结果不准确
mahout之canopy算法简单理解的更多相关文章
- Mahout之Canopy Clustering深入理解
转自:http://www.cnblogs.com/vivounicorn/archive/2011/09/23/2186483.html Mahout学习——Canopy Clustering 聚类 ...
- 寻找图的强连通分量:tarjan算法简单理解
1.简介tarjan是一种使用深度优先遍历(DFS)来寻找有向图强连通分量的一种算法. 2.知识准备栈.有向图.强连通分量.DFS. 3.快速理解tarjan算法的运行机制提到DFS,能想到的是通过栈 ...
- mahout中kmeans算法和Canopy算法实现原理
本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...
- Mahout 系列之--canopy 算法
Canopy 算法,流程简单,容易实现,一下是算法 (1)设样本集合为S,确定两个阈值t1和t2,且t1>t2. (2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p. (3 ...
- SDUT OJ 数据结构实验之串一:KMP简单应用 && 浅谈对看毛片算法的理解
数据结构实验之串一:KMP简单应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- mahout 实现canopy
环境: mahout-0.8 hadoop-1.1.2 ubuntu-12.04 理论这里就不说了,直接上实例: 下面举一个例子. 数据准备: canopy.dat文件,COPY到HDFS上,文件内容 ...
- Deep learning:四十九(RNN-RBM简单理解)
前言: 本文主要是bengio的deep learning tutorial教程主页中最后一个sample:rnn-rbm in polyphonic music. 即用RNN-RBM来model复调 ...
- Deep learning:四十六(DropConnect简单理解)
和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...
- Canopy算法聚类
Canopy一般用在Kmeans之前的粗聚类.考虑到Kmeans在使用上必须要确定K的大小,而往往数据集预先不能确定K的值大小的,这样如果 K取的不合理会带来K均值的误差很大(也就是说K均值对噪声的抗 ...
随机推荐
- js获取URL中指定的值
function getSearchString(key) { // 获取URL中?之后的字符 var str = location.search; str = str.substring(1,str ...
- OpenVAS漏洞扫描基础教程之创建用户组与创建角色
OpenVAS漏洞扫描基础教程之创建用户组与创建角色 OpenVAS创建用户组 用户组就是指许多个用户的组合.在网络中,各个访问网络的用户的权限可能各不相同.所以,可以通过将具体相同权限的用户划为一组 ...
- django常见问题小结,细节容易忽视
中文URL:这个其实是很常识的东西,但是之前做web一直没注意过,在使用HttpResponseRedirect的时候,如果Redirect的URL中带中文的话,会报UnicodeEncodeErro ...
- Topcoder Srm 726 Div1 Hard
Topcoder Srm 726 Div1 Hard 解题思路: 问题可以看做一个二分图,左边一个点向右边一段区间连边,匹配了左边一个点就能获得对应的权值,最大化所得到的权值的和. 然后可以证明一个结 ...
- 【推导】【贪心】【高精度】Gym - 101194E - Bet
题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到.问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱. ...
- [HAOI2015]数组游戏
题目大意: 有一排n个格子,每个格子上都有一个白子或黑子,在上面进行游戏,规则如下: 选择一个含白子的格子x,并选择一个数k,翻转x,2x,...,kx格子上的子. 不能操作者负. 思路: 将“某个格 ...
- Java高级架构师(一)第43节:Varnish简介、安装和基本使用
第一部分:Varnish简介 Varnish是一款开源的.高性能的HTTP加速器和反向代理服务器. Varnish反向代理的能力远不如Nginx. Varnish主要作用是HTTP的加速器,主要通过缓 ...
- luoguoj 1598 垂直柱状图 模拟
P1598 垂直柱状图 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.luogu.org/problem/show?pid=1598 ...
- iOS 发光字流水
{ CAGradientLayer *_gradientLayer; NSInteger count; } - (void)addLabel{ // 创建UILabel UILabel *label ...
- mui 页面滚动解决方案
默认情况下mui 页面不能滚动,以下为解决方案: 1. mui('.mui-scroll-wrapper').scroll({ deceleration: 0.0005 //flick 减速系数,系 ...