常见的简单的无监督学习算法总结

一.聚类(clustering)

1.k-均值聚类(k-means)

  这是机器学习领域除了线性回归最简单的算法了。该算法用来对n维空间内的点根据欧式距离远近程度进行分类。

  INPUT:

    K(number of clusters)

    Training set{x1,x2,x3,....xn} (xi belongs to R^n)

  OUTPUT:

    K个聚类中心

  算法工作原理摘要:

  

自己手写的python实现K—means:

#簇数为k#数据空间维度为n#训练集元素数为mdef K_means_demo(k,n,m):
    clusters=np.random.randint(0,40,size=[k,n]) #随机生成聚类中心
    tr_set=np.random.randint(0,40,size=[m,n]) #因为是模拟,所以自己随机生成的数据集for iter in range(0,5):
            clu_asist=np.zeros(shape=[k,n],dtype=int)
            for i in range(0,m):  #遍历训练集内每个样本
                min=9999999
                owner=0
                for j in range(0,k): #遍历所有聚心找到最近的聚心owner
                    dis=0
                    for p in range(0,n):
                        abso =tr_set[i][p] - clusters[j][p]
                        dis+=abso*abso  #dis为第i个元素和第j个聚心的欧式距离的平方
                    if dis-min < 0:
                        min=dis
                        owner=j
                for p in range(0,n):    #渐进更新均值
                    clu_asist[owner][p]+=(tr_set[i][p]-clu_asist[owner][p])//(p+1)
            clusters=clu_asist  return clusters

在上面的代码中我手动设定了迭代更新次数为5,因为我做的demo规模比较小,迭代几次便收敛了,而在实际使用中一般用( 迭代次数 || EarlyStop )作为迭代终止条件。

更新情况:(assume n=2,k=4,m=15)

(虽然我的demo不太显著,可毕竟是亲手做的QAQ)

通读本算法,可以发现k-means对聚心初始值非常敏感,如果初始情况不好会震荡的。这里可以采取一些措施预判聚心大致要在哪个位置,然后直接将其初始化。

另外,关于收敛的判断,可以采取多种方法。比如使用代价函数,或者F-Measure和信息熵方法。

K-means优缺点分析:

- 优点: 算法简单易实现;

- 缺点: 需要用户事先指定类簇个数; 聚类结果对初始类簇中心的选取较为敏感; 容易陷入局部最优; 只能发现球形类簇。

2.层次聚类(Hierarchical Clustering)

  顾名思义,层次聚类就是一层一层地进行聚类。既可以由下向上对小的类别进行聚合(凝聚法),也可以由上向下对大的类别进行分割(分裂法)。在应用中,使用较多的是凝聚法。

  INPUT:training_set D,聚类数目或者某个条件(一般是样本距离的阈值)

  OUTPUT:聚类结果

  凝聚法:

  跟竞赛中经常出现的并查集问题略相似,凝聚法指的是先将每个样本当做一个类簇,然后依据某种规则合并这些初始的类簇,直到达到某种条件或者减少到设定的簇数。

  在算法迭代中每次均选取类簇距离最小的两个类簇进行合并。关于类簇距离的计算表示方法主要有以下几种:

  (1)取两个类中距离最小的两个样本的距离作为两个集合的距离

  (2)取两个类中距离最大的两个样本的距离作为两个集合的距离

  (3)计算两个集合中每两两点的距离并取平均值,这种方法要略费时

  (4)比(3)轻松一些,取这些两两点距的中位数

  (5)求每个集合中心点,然后以中心点代表集合来计算集合距离

  (6)......

  迭代会在簇数减少到设定数量时结束,当然,如果设定了阈值f,那么当存在两个距离小于f的集合时则会继续迭代直到不存在这样的两个集合。

  分裂法:

  首先将所有样本归类到一个簇,然后依据某种规则逐渐分裂,直到达到某种条件或者增加到设定的簇数。

  (手写再拍照真不容易QAQ)

  

层次聚类和K-means作比较:

  (1)K-means时间复杂度为O(N),而层次聚类时间复杂度为O(N^2),所以分层聚类不能很好地处理大批量数据,而k-means可以。

  (2)K-means不允许嘈杂数据,而层次聚类可以直接使用嘈杂数据集进行聚类

  (3)当聚类形状为超球形(如2D圆形,3D球形)时,k-means聚类效果更好。

3.基于密度聚类Mean Shift

4.基于密度聚类DBSCAN

5.高斯混合模型(GMM)与EM

6.基于图论聚类

二.降维(demensionality reduction)

1.主成分分析(PCA)

2.独立成分分析(ICA)

3奇异值分解(SVD)

4.t-SNE

原文地址:https://www.cnblogs.com/dynmi/p/11619698.html

时间: 2024-11-09 05:59:06

常见的简单的无监督学习算法总结的相关文章

无监督学习算法-Apriori进行关联分析

关联分析 是无监督讯息算法中的一种,Apriori主要用来做_关联分析_,_关联分析_可以有两种形式:频繁项集或者关联规则.举个例子:交易订单 序号 商品名称 1 书籍,电脑 2 杯子,手机,手机壳,盘子 3 古筝,手机,手机壳,玻璃 4 手机,玻璃 5 电视,手机,手机壳 频繁项集:{ 古筝,手机,手机壳,玻璃}就是一个例子. 关联规则:手机->手机壳,买手机很大概率会买手机壳. 关联分析使用的思路 无论是频繁项集还是关联规则,都是需要看发生的频率,比如有手机就有手机壳的概率,如果这个比率超过

聊聊机器学习中的无监督学习

机器学习分为监督式机器学习.无监督式机器学习和半监督式机器学习.其划分的标准是训练样本是否包含人为标注的结果. (1)监督式机器学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果.监督学习的训练集要求是包括输入和输出,也可以说是特征和目标.训练集中的目标是由人标注的.常见的监督学习算法包括回归分析和统计分类. (2)无监督式机器学习:与监督学习相比,训练集没有人为标注的结果.常见的无监督学习算法有聚类. (3)半监督式机器学习:是监督学习和无监督学习相结合的一种

机器学习:监督学习和无监督学习

************************************** 注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的<机器学习>课程笔记.博主深感学过课程后,不进行总结非常easy遗忘.依据课程加上自己对不明确问题的补充遂有此系列博客. 本系列博客包含线性回归.逻辑回归.神经网络.机器学习的应用和系统设计.支持向量机.聚类.将维.异常检測.推荐系统及大规模机器学习等内容. ************************************** 机器学习定

机器学习的定义及监督学习和无监督学习

机器学习定义 机器学习是人工智能的一个分支,目标是赋予机器一种新的能力.(专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.)机器学习的应用很广泛,例如大规模的数据挖掘(网页点击数据,医疗记录等),无人驾驶飞机.汽车,手写手别,大多数的自然语言处理任务,计算机视觉,推荐系统等. 机器学习有很多定义,广为人知的有如下两条: ArthurSamuel (1959): Machine Learning: Field of study tha

无监督学习——K-均值聚类算法对未标注数据分组

无监督学习 和监督学习不同的是,在无监督学习中数据并没有标签(分类).无监督学习需要通过算法找到这些数据内在的规律,将他们分类.(如下图中的数据,并没有标签,大概可以看出数据集可以分为三类,它就是一个无监督学习过程.) 无监督学习没有训练过程. 聚类算法 该算法将相似的对象轨道同一个簇中,有点像全自动分类.簇内的对象越相似它的分类效果越好. 未接触这个概念可能觉得很高大上,稍微看了一会其实算法的思路和KNN一样很简单. 原始数据集如下(数据有两个特征,分别用横纵坐标表示),原始数据集并没有任何标

【机器学习算法-python实现】K-means无监督学习实现分类

1.背景 无监督学习的定义就不多说了,不懂得可以google.因为项目需要,需要进行无监督的分类学习. K-means里面的K指的是将数据分成的份数,基本上用的就是算距离的方法. 大致的思路就是给定一个矩阵,假设K的值是2,也就是分成两个部分,那么我们首先确定两个质心.一开始是找矩阵每一列的最大值max,最小值min,算出range=max-min,然后设质心就是min+range*random.之后在逐渐递归跟进,其实要想明白还是要跟一遍代码,自己每一步都输出一下看看跟自己想象的是否一样. (

K-均值算法(数据挖掘无监督学习)

一.无监督学习 1.聚类:是一个将数据集中在某些方面相似的数据成员进行分类组织的过程.因此,一个聚类就是一些数据实例的集合.聚类技术经常被称为无监督学习. 二.K-均值聚类 1.k-均值算算法:是发现给定数据集k个簇的算法 2.步骤: 1).随机选取k个数据点作为初始的聚类中心(要求发现k个簇). 2).把每个数据点分配给距离它最近的聚类中心(对图中的所有点求到这K个种子点的距离,假如点P离种子点S最近,那么P属于S点群.) 3).重新确定聚类中心(x,y),一旦全部的数据点都被分配,每个聚类的

【ML入门系列】(三)监督学习和无监督学习

概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervised learning) 定义 监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类. 非监督学习:直接对输入数据集进行建模,例如聚类. 半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数. 区别 是否有监督(supervise

Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1.1.3    如何选择K值 1.1.4    Spark MLlib 实现 k-means 算法 1.2    Mixture of Gaussians and the EM algorithm 1.3    The EM Algorithm 1.4    Principal Components