聚类

无监督学习——聚类算法(Unsupervised learning-clustering)通俗讲解

跟風遠走 提交于 2019-12-06 16:39:01
接触过 机器学习(Machine learning) 的看官都应该知道机器学习分为 监督学习(supervised learning) 和 无监督学习(unsupervised learning) 。通俗的来讲,监督学习是我们提供大量数据,并且这些数据都有其对应的具体标签(或具体的准确值、实际特征对应值),也就是算法中的y,例如:训练集{X,Y}。然后由我们利用回归算法或分类算法对数据进行训练、分析、得到预测值。无监督学习是我们提供大量数据,但是这些数据没有对应的标签,例如:训练集{X},由算法来进行提取具体结构进行分类。 聚类算法 就是无监督学习的一种,这篇博客里提到的是聚类算法中应用最普遍的 K-means算法 (K均值算法),以下作简要讲述。 1.1 聚类算法 聚类算法可以实现将给定的一组未加标签数据自动地分成有紧密关系的 子集 (或是 簇 )。 K- 均值是一个迭代算法,假设我们想要将数据聚类成 K 个组,其方法为: 1)首先选择K个随机的点,称为 聚类中心 (cluster centroids); 2)对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。 3)计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。 4)重复步骤 2-4 直至中心点不再变化。 Repeat { for i = 1

机器学习入门科普:监督学习和无监督学习都是什么?都能干什么?

自古美人都是妖i 提交于 2019-12-06 16:38:46
导读: 学习究竟是什么? 简单来说,学习是在外部刺激下记住大部分以往的经验,从而能够实现改变的能力。 因此,机器学习是一种工程方法,对于增加或提高自适应变化的各项技术都十分重要。例如,机械手表是一种非凡的工件,但其结构符合静止定律,当外部变化发生变化时会变得没有任何用处。 学习能力是动物特别是人特有的,根据达尔文的理论,它也是所有物种生存和进化的关键要素。 机器虽然不能自主进化,但似乎也遵循同样的规律。 ▲自适应系统的示意图 Adaptive System: 适应系统 Parameter tuner/ trainer: 参数调整/训练器 Input elements: 输入元素 Feedback: 反馈 Output elements: 输出元素 Enviornment: 环境 机器学习的主要目标是学习、策划和改进数学模型,该数学模型可以使用由环境提供的相关数据进行一次或连续多次的训练得到,利用该数学模型推断未来并做出决定而不需要所有影响因素 (外部因素) 的全部知识。 换句话说,agent (从环境中接收信息的软件实体,选择达到特定目标的最佳行动并观察其结果) 采用统计学习方法,通过确定正确的概率分布,来预测最有可能成功 (具有最小错误) 的动作 (值或决策) 。 我更喜欢使用术语 推断 而不是 预测 ,只是为了避免把机器学习看成是一种现代魔法 (这种看法但并不罕见) 。此外

隐马尔科夫(HMM)的Matlab实现

偶尔善良 提交于 2019-12-06 14:36:26
说明: 1. 本文实现了PRML一书第13章的隐马尔科夫(HMM)算法,并与K-means聚类、GMM模型聚类进行了对比。当然,HMM的用处远不止是聚类; 2. 非职业码农,代码质量不高,变量命名也不规范,凑合着看吧,不好意思。 隐马尔科夫模型(HMM)是我一直想弄清楚的一种模型。可能是上学时随机过程只考了60分,心有不甘。 模型和算法本身不赘述了,详见PRML第13章。直接看结果,把隐变量z作为类别编号,HMM可用于聚类。这里可以看到,由于HMM利用了序列跳转信息(也就是马尔科夫特性),可以获得比混合高斯模型(GMM,http://blog.csdn.net/foreseerwang/article/details/75222522)更为准确的结果。 Matlab输出: **************************************************************** **************************************************************** K-means聚类计算,结果将作为HMM初始值...... K-means聚类算法结束 **************************************************************** GMM聚类计算中......

零基础的程序员们,关于大数据挖掘的知识点,都在这里了

▼魔方 西西 提交于 2019-12-06 13:11:50
下面是一些关于 大数据 挖掘的知识点,今天和大家一起来学习一下。 1. 数据、信息和知识是广义数据表现的不同形式。 2. 主要知识模式类型有:广义知识,关联知识,类知识,预测型知识,特异型知识 3. web挖掘研究的主要流派有:Web结构挖掘、Web使用挖掘、Web内容挖掘 4. 一般地说,KDD是一个多步骤的处理过程,一般分为问题定义、数据抽取、数据预处理、.数据挖掘以及模式评估等基本阶段。 5. 数据库中的知识发现处理过程模型有:阶梯处理过程模型,螺旋处理过程模型,以用户为中心的处理结构模型,联机KDD模型,支持多数据源多知识模式的KDD处理模型 6. 粗略地说,知识发现软件或工具的发展经历了独立的知识发现软件、横向的知识发现工具集和纵向的知识发现解决方案三个主要阶段,其中后面两种反映了目前知识发现软件的两个主要发展方向。 7. 决策树分类模型的建立通常分为两个步骤:决策树生成,决策树修剪。 8. 从使用的主要技术上看,可以把分类方法归结为四种类型: 基于距离的分类方法 决策树分类方法 贝叶斯分类方法 规则归纳方法 9. 关联规则挖掘问题可以划分成两个子问题: 发现频繁项目集:通过用户给定Minsupport ,寻找所有频繁项目集或者最大频繁项目集。 生成关联规则:通过用户给定Minconfidence ,在频繁项目集中,寻找关联规则。 10.

SOM聚类算法

社会主义新天地 提交于 2019-12-06 12:38:42
1. 算法简介 SOM神经网络[11]是由芬兰神经网络专家Kohonen教授提出的,该算法假设在输入对象中存在一些拓扑结构或顺序,可以实现从输入空间(n维)到输出平面(2维)的降维映射,其映射具有拓扑特征保持性质,与实际的大脑处理有很强的理论联系。自组织映射神经网络, 即Self Organizing Maps (SOM), 可以对数据进行无监督学习聚类。它的思想很简单,本质上是一种只有输入层--隐藏层的神经网络。隐藏层中的一个节点代表一个需要聚成的类。训练时采用“竞争学习”的方式,每个输入的样例在隐藏层中找到一个和它最匹配的节点,称为它的激活节点,也叫“winning neuron”。 紧接着用随机梯度下降法更新激活节点的参数。同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。   SOM的一个特点是,隐藏层的节点是有拓扑关系的。这个拓扑关系需要我们确定,如果想要一维的模型,那么隐藏节点依次连成一条线;如果想要二维的拓扑关系,那么就行成一个平面,如下图所示(也叫Kohonen Network):   SOM网络包含输入层和输出层。输入层对应一个高维的输入向量,输出层由一系列组织在2维网格上的有序节点构成,输入节点与输出节点通过权重向量连接。学习过程中,找到与之距离最短的输出层单元,即获胜单元,对其更新。同时,将邻近区域的权值更新

聚类-K-Means

时光怂恿深爱的人放手 提交于 2019-12-06 11:40:47
1.什么是K-Means? K均值算法聚类 关键词:K个种子,均值 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中 K-Means算法是一种聚类分析(cluster analysis)的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大. 2.k-Means原理 每次计算距离采用的是欧式距离 步骤图: 步骤总结: 从数据中选择k个对象作为初始聚类中心; 计算每个聚类对象到聚类中心的距离来划分; 再次计算每个聚类中心 2~3步for循环,直到达到最大迭代次数,则停止,否则,继续操作。 确定最优的聚类中心 主要优点: 原理比较简单,实现也是很容易,收敛速度快。 聚类效果较优。 算法的可解释度比较强。 主要需要调参的参数仅仅是簇数k。 主要缺点: K是事先给定的,这个K值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。(ISODATA算法通过类的自动合并和分裂,得到较为合理的类型数目K) K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。(K-Means++算法可以用来解决这个问题

11 K-Means 原理及案例

核能气质少年 提交于 2019-12-06 11:05:13
11 K-Means 原理及案例 非监督学习 unsupervised learning (非监督学习) ,只有特征值,没有目标值 聚类: 主要方法 - k-means (K - 需要分成的类别数) K-Means步骤 随机设置K个特征空间内的点作为初始的聚类中心 (红,绿,蓝) k=3 (给定) 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类 中心点作为标记类别,形成3个族群 分别计算这3个族群的平均值,把三个平均值与之前的三个旧中心进行比较。如果相同则结束聚类,如果不相同,把这三个平均点当做新的中心点,重复第二步。 Kmeans性能评估指标 注:对于每个点𝑖 为已聚类数据中的样本 ,𝑏_𝑖 为𝑖 到其它族群的所有样本的平均距离,𝑎_𝑖 为𝑖 到本身簇的距离平均值,最终计算出所有的样本点的轮廓系数平均值。 sc_i 取值 当b_i >>a_i 时, 外部距离远大于内部距离,为1, 完美情况。 当b_i <<a_i 时,内部距离远大于外部距离,为-1, 最差情况。 因此 取值范围为[-1,1] ,实际情况中超过0,或者0.1就已经算是不错的情况。 K-Means API sklearn.cluster.KMeans n_cluster=8 (开始的聚类中心数量) labels: 默认的标记类型(不是值),可以和真实值比较。 sklearn.metrics

实时跟踪之TRACA

荒凉一梦 提交于 2019-12-06 10:36:44
背景: 目前,在实时跟踪领域存在着越来越多的先进方法,同时也极大地促进了该领域的发展。主要有两种不同的基于深度学习的跟踪方法:1、由在线跟踪器组成,这些跟踪器依赖网络连续的微调来学习目标的变化外观,精度虽高,但无法满足实时要求;2、基于相关滤波器的跟踪器组成,利用原始深度卷积特征,如Imagenet中包含的一般对象,存在高维度的问题,另外,相关滤波器计算时间随着特征维度的增加而增加,也不满足实时要求。 在2018年的CVPR会议上,出现了这样一篇文章:《Context-aware Deep Feature Compression for High-speed Visual Tracking》,引起了不小的反响。主要提出了一种新的基于上下文感知的相关滤波器的跟踪框架,以实现一个实时跟踪器。在计算速度和精度方面都有着不错的成绩。速度提升主要来源于深度特征压缩,利用多个expert auto-encoder的上下文感知方案;上下文是指根据不同层特征图对跟踪目标的粗略分类。在预训练阶段,每个类别训练一个expert auto-encoder。在跟踪阶段,指定一个最佳expert auto-encoder。为了实现高效跟踪性能,引入外部去噪处理和新的正交性损失项orthogonality loss,用于expert auto-encoder的预训练和微调。在保持当前最佳性能的同时

7 中文短文本聚类

╄→尐↘猪︶ㄣ 提交于 2019-12-06 10:20:46
文本聚类是将一个个文档由原有的自然语言文字信息转化成数学信息,以高维空间点的形式展现出来,通过计算哪些点距离比较近,从而将那些点聚成一个簇,簇的中心叫做簇心。一个好的聚类要保证簇内点的距离尽量的近,但簇与簇之间的点要尽量的远。 如下图,以 K、M、N 三个点分别为聚类的簇心,将结果聚为三类,使得簇内点的距离尽量的近,但簇与簇之间的点尽量的远。 开发环境,我们选择:: Windows 系统 Python 3.6 Jupyter Notebook 本文继续沿用上篇文本分类中的语料来进行文本无监督聚类操作。 整个过程分为以下几个步骤: 语料加载 分词 去停用词 抽取词向量特征 实战 TF-IDF 的中文文本 K-means 聚类 实战 word2Vec 的中文文本 K-means 聚类 下面开始项目实战。 1. 首先进行语料加载,在这之前,引入所需要的 Python 依赖包,并将全部语料和停用词字典读入内存中。 第一步,引入依赖库,有随机数库、jieba 分词、pandas 库等: import random import jieba import pandas as pd import numpy as np from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature

数据挖掘--OPTICS

老子叫甜甜 提交于 2019-12-06 08:32:47
OPTICS是基于DBSCAN算法的缺陷提出来的一个算法。 核心思想 : 为每个数据对象计算出一个顺序值(ordering)。这些值代表了数据对象的基于密度的族结构,位于同一个族的数据对象具有相近的顺序值。根据这些顺序值将全体数据对象用一个图示的方式排列出来,根据排列的结果就可以得到不同层次的族。 考察DBSCAN,可以发现,对一个恒定的MinPts值来说,取值较小时得到的聚类结果完全包含在根据较大的取值所获得的聚类结果中。 如图,当取值较小时,得到的聚类结果是C1和C2,当取值较大时,得到的聚类结果是C3。 可以看到,C1和C2是包含在C3中的。换句话说,C1、C2、C3间具有层次关系,C3可以看作是C1和C2的父亲,而C1和C2可以看作是C3的孩子。 因此,在生成族的时候,最好能够将位于不同层次上的族同时构建出来,而不是根据某个特定的值仅仅构建其中的一层。 为了同时构建不同层次上的族,数据对象应当以特定的顺序来处理。这个顺序称为族序(cluster-ordering),它决定了对象扩展时的次序。 为了使较低层次上的族(这些族的数据密度较大)能够首先构建完成,在进行对象扩展时,应该优先选择那些根据最小的取值而密度可达的对象。 基于这个思想,每个数据对象需要存储两个值,一个是核心距离(core-distance),另一个是可达距离(reach-distance)。