ML_Clustering
西瓜书学习。。。ing
K均值 k-means
给定样本集$ D = {X_1,X_2,...X_n} \(,k-means针对聚类所得簇划分\)C = {C_1,C_2,...,C_k}$最小化平方误差
目标函数$ E = \sum\limits_{i=1}^{k} \sum\limits_{x \in C_i} |x - \mu_i|_2^2 $
其中$ \mu_i = \frac{1}{|C_i|} \sum_{x \in C_i} x $是簇的均值向量可见式(1.1)在一定程度刻画了簇内样本围绕簇均值的紧密程度,E越小簇内样本相似度越高
实现步骤
参数:K
从D中随机选择K个样本作为初始均值向量
repeat
计算样本中每一个向量与各个初始向量的距离,并依此分类,得到新的K个簇
根据新的K个簇计算新的K个均值向量
until 当前均值向量未更新
输出:簇划分
缺点
学习向量量化LVQ
类似K均值,LVQ也是通过试图找到一组原型向量来刻画聚类结构,不同点在于LVQ假设数据样本带有类别标记,因此在学习过程中利用样本的这些监督信息进行辅助聚类
给定$ D = {(X_1,y_1),(X_1,y_1),...,(X_m,y_m)} $,LVQ目标是学得一组n维原型向量,每个原型向量代表一个聚类簇
Input:D = {(X1,y1),(X2,y2),...,(Xm,ym)},
原型向量个数q,各个原型向量预设的类别标记{t1,t2,t3,..,tq},
学习率yita属于(0,1)
初始化一组原型向量(随机)
repeat
从样本集中选取一个样本并计算与最近的原型向量之间的距离
if yi == ti then
原型向量P' = Pi + yita * (xj - Pi)
else
原型向量P' = Pi - yita * (xj - Pi)
更新Pi为P’
until 满足停止条件(最大迭代次数、原型向量更新小or不更新)
Output:原型向量
每轮迭代中,随机选取的训练样本若与最近的原型向量同标记,Pi向此样本靠近,反之远离
密度聚类
假设聚类结构能够通过样本分布的紧密程度确定,密度聚类算法从样本密度的角度来考察样本之间的可连接性,基于可连接样本不断扩展聚类簇以获得最终聚类结果
DBSCAN
基于一组邻域的参数(MinPts,\(\epsilon\))来刻画样本分布的紧密程度,给定数据集定义如下概念:
1.\(\epsilon\)-邻域:包括了样本集中与Xj距离不大于epsilon的样本
2.核心对象:Xj的\(\epsilon\)-邻域内至少包括Minpts个样本,则Xj为一个核心对象
3.密度直达:Xj位于Xi的\(\epsilon\)-邻域内则Xj可由Xi密度直达
4.密度可达:存在X1、X2、X3...Xn,X2可有X1密度直达,X3可有X2密度直达......有Xi+1有Xi密度直达,则Xn与X1密度可达
5.密度相连:存在Xk使得Xi、Xj均可由Xk密度可达,称Xi、Xj密度相连
于是DBSCAN将簇定义为:由密度可达得出的最大密度相连样本集合
层次聚类
在不同层次上对数据集进行划分,从而形成树形的聚类结构,可用“自底向上”或“自顶向下”。
AGNES
自底向上局策略的层次聚类算法,先将数据集中的每个样本看作一个初始聚类簇,然后再算法运行的每步中照道距离最近的两个聚类簇进行合并,过程重复直至达到预设的聚类簇的个数。
计算聚类簇之间的距离的方法包括了最小距离(两个簇的最近的样本)(单链接)、最大距离(最远)(全链接)、平均距离(所有样本共同决定)(均链接)等等。
先对仅含一个样本的初始聚类簇和相应的距离矩阵进行初始化,而后不断的合并距离最近的聚类簇,并更新合并得到的聚类簇的距离矩阵,重复直至预设的聚类簇数。
最终可得一个树状图(西瓜书P216 图9.12),每层链接一组聚类簇。
在树状图的特定层次上进行分割,可得到相应的簇划分结果。
缺点:
简单,但遇到合并点选择困难的情况,算法的复杂度为O(n的平方),不适合大数据集计算
DIANA
DIANA(Divisive Analysis)算法属于分裂的层次聚类,首先将所有的对象初始化到一个簇中,然后根据一些原则(比如最邻近的最大欧式距离),将该簇分类。直到到达用户指定的簇数目或者两个簇之间的距离超过了某个阈值
定义:
1.簇的直径:在一个簇中的任意两个数据点都有一个欧氏距离,这些距离中的最大值是簇的直径
2.平均相异度(平均距离)
Input:包含n个对象的数据库,终止条件簇的数目k
Output:k个簇,达到终止条件规定簇数目
将所有对象整个当成一个初始簇
for ( i=1;i<k;i++) Do Begin
在所有簇中挑选出具有最大直径的簇
把这个簇里与其他点平均相异度最大的一个点挑出来放进一个新的簇里
Repeat
在簇中剩余的点中找到 和新簇中点的最近距离 <= 和自身簇的最近距离的点
Until 再也没有会被分出去的点了
分裂成的两个簇,与其他簇一起组成新的簇集合
END
缺点:
已做的分裂操作不能撤销,类之间不能交换对象。如果在某步没有选择好分裂点,可能会导致低质量的聚类结果。大数据集不太适用。
ML_Clustering的更多相关文章
随机推荐
- 实训任务04 MapReduce编程入门
实训任务04 MapReduce编程入门 1.实训1:画图mapReduce处理过程 使用有短句“A friend in need is a friend in deed”,画出使用MapReduce ...
- spring jpa 语法
摘自http://www.cnblogs.com/BenWong/p/3890012.html Table 2.3. Supported keywords inside method names Ke ...
- Python数据库连接池---DBUtils
Python数据库连接池DBUtils DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不 ...
- Js的运算符
JS的运算符 1.运算符的分类: a) 算数运算符 b) 字符串运算符 c) 赋值运算符 d) 比较运算符 e) 逻辑运算符 f) 位运算符 g) 其他运算符 2.算数运算符 + 加法运算符 - 减法 ...
- python的列表生成式
列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, ...
- SQLZOO网页中SQL的答案(SELECT from world篇)
SELECT from world篇 11. 题目: The CASE statement shown is used to substitute North America forCaribbean ...
- ForkJoinPool 源码
ForkJoinPool----FJP先看task.fork方法,含义是将当前任务,放到当前线程的工作队列中.但是第一次执行这个方法是在主线程中,主线程是不可能被FJP管理的.那么就进入ForkJoi ...
- 安装mavlink遇到的问题(future找不到)
从官网下载mavlink(git clone https://github.com/mavlink/mavlink.git) 然后进入mavlink 目录执行 git submodule update ...
- zabbix添加IIS网站计数器(并发连接数)详解
环境:windows server 2012 前提:IIS上要添加好配置 1,在被监控主机,powershell输入perfmon.msc 2,点击添加按钮 3,在下拉菜单中点击小箭头 ...
- 普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎。。。。。 测试。。测试。。。没刷过微博。屯里来的。看看啥效果
普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎..... 测试..测试...没刷过微博.屯里来的.看看啥效果