机器学习10聚类

无监督学习

在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中, 然后让它找这个数据的内在结构。

 我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成两个分开的点集(称为簇),一个能够找到我圈出的这些点集的算法,就被称为聚类算法。


这将是我们介绍的第一个非监督学习算法。 

当然, 此后还将提到其他类型的非监督学习算法,它们可以找到其他类型的结构或者其他的一些模式,而不只是簇。 


那么聚类算法一般用来做什么呢?


应用例子:

1、市场分割:也许你在数据库中存储了许多客户的信息,而你希望将他们分成不同的客户群,这样你可以对不同类型的客户分别销售产品或者分别提供更适合的服务。

2、社交网络分析: 事实上有许多研究人员正在研究这样一些内容,他们关注一群人,关注社交网络,例如 Facebook, Google+,或者是其他的一些信息,比如说:你经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此找到关系密切的人群。 因此, 这可能需要另一个聚类算法, 你希望用它发现社交网络中关系密切的朋友。

3、用聚类算法来更好的组织计算机集群, 或者更好的管理数据中心。因为如果你知道数据中心中,哪些计算机经常协作工作。那么,你可以重新分配资源,重新布局网络。由此优化数据中心,优化数据通信。 

4、研究如何利用聚类算法了解星系的形成。然后用这个知识,了解一些天文学上的细节问题。 


—————————————————————————————————————————————————————————


K-均值算法(K-Means Algorithm)

K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。 


K-均值是一个迭代算法,假设我们想要将数据聚类成 n 个组,其方法为: 

1、首先选择 K 个随机的点,称为聚类中心(cluster centroids); 

2、对于数据集中的每一个数据, 按照距离 K 个中心点的距离, 将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。 

3、计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。 

4、重复步骤 2-3 直至中心点不再变化。



K-均值算法也可以很便利地用于将数据分为许多不同组, 即使在没有非常明显区分组群的情况下也可以。

下图所示的数据集包含身高和体重两项特征构成的, 利用 K-均值算法将数据分为三类,用于帮助确定将要生产的 T-恤衫的三种尺寸。



—————————————————————————————————————————————————————————


优化目标(Optimization Objective)

K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和。

因此 K-均值的代价函数(又称畸变函数 Distortion function)为: 



—————————————————————————————————————————————————————————


随机初始化(Random Initialization)

在运行 K-均值算法的之前,我们首先要随机初始化所有的聚类中心点: 

1. 应该选择 K<m,即聚类中心点的个数要小于所有训练集实例的数量

2. 随机选择 K 个训练实例,然后令 K 个聚类中心分别与这 K 个训练实例相等。

K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。 



为了解决这个问题,通常需要多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。

这种方法在 K 较小的时候(2--10)还是可行的,但是如果 K 较大,这么做也可能不会有明显地改善。


—————————————————————————————————————————————————————————


选择聚类数(Choosing the Number of Clusters)


没有所谓最好的选择聚类数的方法,通常是需要根据不同的问题,人工进行选择。

选择的时候思考我们运用 K-均值算法聚类的动机是什么,然后选择能最好服务于该目的标聚类数。

比如,我们的 T-恤制造例子中,我们要将用户按照身材聚类,我们可以分成 3 个尺寸 S,M,L;也可以分成 5 个尺寸 XS,S,M,L,XL。这样的选择是建立在回答“聚类后我们制造的 T-恤是否能较好地适合我们的客户”这个问题的基础上作出的。


另一种方法是肘部法则:

关于“肘部法则”,我们所需要做的是改变 K 值,也就是聚类类别数目的总数。

我们用一个聚类来运行 K 均值聚类方法然后计算畸变函数 J。


我们可能会得到一条类似于这样的曲线,像一个人的肘部。 

让我们来看这样一个图,看起来就好像有一个很清楚的肘在那儿。好像人的手臂,如果你伸出你的胳膊,那么这就是你的肩关节、肘关节、手。这就是“肘部法则”。

你会发现这种模式,从 1 到 2,从 2 到 3,它的畸变值会迅速下降。之后,会在 3 的时候达到一个肘点,在此之后,畸变值就下降的非常慢,看起来就像使用 3 个聚类来进行聚类是正确的,这是因为那个点是曲线的肘点。K等于3之前畸变值下降得很快,K 等于 3 之后就下降得很慢,那么我们就选 K 等于 3。当你应用“肘部法则”的时候,如果你得到了一个像上面这样的图,那么这将是一种
用来选择聚类个数的合理方法。 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关联分析(Association analysis)

关联分析&#xff08;Association analysis&#xff09; 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules&#xff1a;&#xff5b;Diapers&#xff5d;–>{Beer}说明两者之间有很强的关系&#xff0c;购买Diapers的消费者通常会购买Beer。 除…

机器学习11主成分分析

降维(Dimensionality Reduction) &#xff1a; 一、 降维目的&#xff1a; 目的一&#xff1a;数据压缩&#xff08;Data Compression&#xff09; 目的二&#xff1a;数据可视化&#xff08;Visualization&#xff09; 二、 主成分分析&#xff08;PCA&#xff09; 主成分…

使用Apriori进行关联分析(一)

使用Apriori进行关联分析&#xff08;一&#xff09;大型超市有海量交易数据&#xff0c;我们可以通过聚类算法寻找购买相似物品的人群&#xff0c;从而为特定人群提供更具个性化的服务。但是对于超市来讲&#xff0c;更有价值的是如何找出商品的隐藏关联&#xff0c;从而打包促…

主成分分析法 (PCA) 用于数据可视化实验 -- Matlab版

第一步&#xff1a;下载数据集。 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits 第二步&#xff1a;改变数据格式。 注&#xff1a;此数据集的各特征值均为像素&#xff0c;即属于同一量纲&#xff0c;故无需归一化步骤。 原格式为&a…

机器学习12推荐系统

推荐系统(Recommender Systems) 推荐系统根据浏览用户过去买过什么书&#xff0c;或过去评价过什么电影来判断并推荐新产品给用户。 这些系统会为像亚马逊和网飞这样的公司带来很大一部分收入。 因此&#xff0c;对推荐系统性能的改善&#xff0c;将对这些企业的有实质性和…

使用Apriori进行关联分析(二)

使用Apriori进行关联分析&#xff08;二&#xff09;书接上文&#xff08;使用Apriori进行关联分析&#xff08;一&#xff09;&#xff09;&#xff0c;介绍如何挖掘关联规则。发现关联规则我们的目标是通过频繁项集挖掘到隐藏的关联规则。所谓关联规则&#xff0c;指通过某个…

数学笔记3——导数3(隐函数的导数)

数学笔记3——导数3&#xff08;隐函数的导数&#xff09;幂函数的扩展形式f(x) xn的导数&#xff1a;f’(x) nxn-1&#xff0c;n是整数&#xff0c;该公式对f(x) xm/n, m,n 是整数同样适用。推导过程&#xff1a;什么是隐函数引自知乎&#xff1a;“如果方程F(x,y)0能确定y…

机器学习13大规模数据集

大型数据集的学习&#xff08;Learning With Large Datasets&#xff09; 如果我们有一个低方差的模型&#xff0c; 增加数据集的规模可以帮助你获得更好的结果。 我们应该怎样应对一个有 100 万条记录的训练集&#xff1f; 以线性回归模型为例&#xff0c;每一次梯度下降…

Java07多线程

14 多线程 操作系统的多任务&#xff08;multitasking&#xff09;&#xff1a;在同一时刻运行多个程序的能力。 多线程在较低的层次上扩展了多任务的概念&#xff1a;一个程序同时执行多个任务。 通常&#xff0c;每一个任务称为一个线程&#xff08;tread&#xff09;&…

MySQL字段拼接Concat

有时候&#xff0c;从数据库中拿出的数据并不是我们想要的格式&#xff0c;比如&#xff0c;有以下的vendors表 如果&#xff0c;想以 name (location)的格式展现出来&#xff0c;那么就要用到MySQL的Concat了。 Concat()拼接串&#xff0c;即把多个串连接起来形成一个较长的串…

使用pycharm调用模块后字体变灰 是什么原因呢?

使用pycharm调用模块后字体变灰 是什么原因呢&#xff1f;点击小灯泡提示出现以下内容&#xff1a;This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-l…

操作系统01概述

第一章 概论 《Operating System Internals and Design Principles》 《Applied Operating System Concepts》 操作系统——裸机上的第一层软件&#xff0c;它是对硬件系统功能的首次扩充&#xff0c;填补人与机器之间的鸿沟。 1.1 操作系统与计算机同在 1.2 对操作系统的…

Linux re

正则表达式并不是一个工具程序&#xff0c;而是一个字符串处理的标准依据&#xff0c;如果想要以正则表达式的方式处理字符串&#xff0c;就得使用支持正则表达式的工具&#xff0c;例如grep、vi、sed、asw等。 注意&#xff1a;ls不支持正则表达式。 grep 正则表达式: 注意gr…

操作系统02进程管理Process_Description_and_Control

作业的基本概念&#xff1a;用户再一次计算过程中或一次事务处理过程中&#xff0c;要求计算机系统所做的工作的集合。 包含多个程序、多个数据、作业控制说明书 系统调用时操作系统提供给编程人员的唯一接口。 1、文件操作类&#xff1b; 2、进程控制类&#xff1b; 3、资…

蓝桥杯 方格填数(全排列+图形补齐)

方格填数 如下的10个格子 填入0~9的数字&#xff0c;同一数字不能重复填。要求&#xff1a;连续的两个数字不能相邻。&#xff08;左右、上下、对角都算相邻&#xff09; 一共有多少种可能的填数方案&#xff1f; 请填写表示方案数目的整数。注意&#xff1a;你提交的应该是一个…

操作系统03进程管理Process_Scheduling

2 Process Scheduling >Type of scheduling >Scheduling Criteria (准则) >Scheduling Algorithm >Real-Time Scheduling (嵌入式系统) 2.1 Learning Objectives By the end of this lecture you should be able to Explain what is Response Time 响应时间-…

skimage库需要依赖 numpy+mkl 和scipy

skimage库需要依赖 numpymkl 和scipy1、打开运行&#xff0c;输入cmd回车&#xff0c;输入python回车&#xff0c;查看python版本2、在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 中&#xff0c;根据自己python版本下载需要的包 &#xff08;因为我的是python 2.7.13 …

操作系统04进程同步与通信

4.1 进程间的相互作用 4.1.1 进程间的联系资源共享关系相互合作关系临界资源应互斥访问。临界区&#xff1a;不论是硬件临界资源&#xff0c;还是软件临界资源&#xff0c;多个进程必须互斥地对它们进行访问。把在每个进程中访问临界资源的那段代码称为临界资源区。显然&#x…

oracle迁移到greenplum的方案

oracle数据库是一种关系型数据库管理系统&#xff0c;在数据库领域一直处于领先的地位&#xff0c;适合于大型项目的开发&#xff1b;银行、电信、电商、金融等各领域都大量使用Oracle数据库。 greenplum是一款开源的分布式数据库存储解决方案&#xff0c;主要关注数据仓库和BI…

CNN框架的搭建及各个参数的调节

本文代码下载地址&#xff1a;我的github本文主要讲解将CNN应用于人脸识别的流程&#xff0c;程序基于PythonnumpytheanoPIL开发&#xff0c;采用类似LeNet5的CNN模型&#xff0c;应用于olivettifaces人脸数据库&#xff0c;实现人脸识别的功能&#xff0c;模型的误差降到了5%以…