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的更多相关文章
随机推荐
- Applet
Applet简介: 可以翻译为小应用程序,Java Applet就是用Java语言编写的这样的一些小应用程序,它们可以直接嵌入到网页中,并能够产生特殊的效果.包含Applet的网页被称为Java-po ...
- Android : Camera之camx hal架构
一.camx的代码结构 目前主流的机型都使用camx架构,这个架构和之前架构的主要区别就是 芯片接口层的代码从hardware/qcom 迁移到 vendor/qcom/proprietary/下面, ...
- 团队项目需求心得——慢阻肺疾病管理APP
一.项目介绍: 先上图: 这是我们小组开发项目的系统构成图. 本项目研发面向家庭/社区,对稳定期中慢阻肺患者病情和环境全方位监测.简单病情趋势分析和患者行为干预,并且提供患者与家庭医生和专家沟通渠道的 ...
- 深入java----垃圾回收
Java和C++之间有一睹内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想出来.-------<深入理解JVM虚拟机> 补充:在无用对象判断这两种方法中,都是靠对 ...
- Oracle学习笔记之触发器
触发器 触发器(trigger)是一些过程,与表关系密切,用于保护表中的数据,当一个基表被修改(INSERT.UPDATE或DELETE)时,触发器自动执行,例如通过触发器可实现多个表间数据的一致性和 ...
- c++中sort()函数的用法
用法: 1.sort函数可以三个参数也可以两个参数,必须的头文件#include < algorithm>和using namespace std; 2.它使用的排序方法是类似于快排的方法 ...
- UML与软件建模:第二次作业(类图中类的表示)
一.类图 (1)类图定义 类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图.它形象的描述出了系统的结构,帮助人们理解系统. 类图是在&q ...
- No mapping found for HTTP request with URI [/crmcrmcrm/css/bootstrap.min.css] in DispatcherServlet with name 'springMvc'
先把错误贴上来 No mapping found for HTTP request with URI [/crmcrmcrm/css/sb-admin-2.css] in DispatcherServ ...
- 解决ps不能直接把文件拖进去的问题
在运行里输入regedit,然后确定,在里面按照HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVer ...
- LINUX磁盘分区
在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛.在这个过程中间,最大的困惑莫过于给硬盘进行分区.虽然,现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多 ...