【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类
Lecture 13 聚类 Clustering
13.1 无监督学习简介 Unsupervised Learning Introduction
现在开始学习第一个无监督学习算法:聚类。我们的数据没有附带任何标签,拿到的数据就是这样的:

例子:

(注:这里有考题,问哪些可以使用聚类算法)
13.2 K-means算法 K-Means Algorithm
K-Means 是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。
迭代过程为:
1)选择K个随机的点,称为聚类中心(cluster centroids);
2)对于数据集中的每个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。
3)计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。
4)重复步骤 2-3 直至中心点不再变化。

下面是一个聚类示例:
初始化随机的中心点,计算距离后分类,然后移动中心点



迭代很多次之后,得到最终聚类结果:

在没有非常明显组群的情况下,也可以使用K-means。例如下图中,使用K-means 确定要生产的 T-恤衫的三种尺寸:

13.3 优化目标 Optimization Objective
K-means最小化问题,是要最小化所有数据点与其所关联的聚类中心点之间的距离之和,因此 K-means的代价函数(又称畸变函数 Distortion function)为:

目标是使其最小

由于算法第一个循环用于减小 c(i) 引起的代价,而第二个循环则是用于减小 μi 引起的代价。会在每一次迭代都减小代价,不然便说明存在错误。

13.4 随机初始化 Random Initialization
随机初始化的聚类中心点的方法:
a) 选择K < m,即聚类中心点的个数要小于所有训练集实例的数量
b) 随机选择K个训练实例,然后令K个聚类中心分别与这K个训练实例相等


K-means的一个问题在于,如果初始化不好,有可能会停留在一个局部最小值处。通常需要运行多次 K-means算法,每一次都重新随机初始化,最后比较多次运行 K-means的结果,选择代价函数最小的结果。这种方法在K较小的时候(2-10)可行,如果K较大可能不会有明显地改善。


13.5 选择聚类数 Choosing the Number of Clusters
没有最好的选择聚类数的方法,通常是需要根据不同的问题人工选择。需要思考运用 K-means算法的动机,然后选择能最好服务于该目的的聚类数。
这里存在一个“肘部法则”:改变聚类数K,运行聚类算法,然后计算成本函数(畸变函数)J。 有可能会得到一条类似于肘部的曲线:

上图在 3 的时候达到一个肘点。在此之后,畸变值就下降的非常慢,那么我们就选K = 3。
但是大部分情况下图像会像右图一样没有肘点。就需要人工选择。 例如,根据客户需求选择 T-恤的尺寸数:

附,参考黄海广笔记:



【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类的更多相关文章
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测
Lecture 15 Anomaly Detection 异常检测 15.1 异常检测问题的动机 Problem Motivation 异常检测(Anomaly detection)问题是机器学习算法 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统
Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 14—Dimensionality Reduction 降维
Lecture 14 Dimensionality Reduction 降维 14.1 降维的动机一:数据压缩 Data Compression 现在讨论第二种无监督学习问题:降维. 降维的一个作用是 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机
Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计
Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议
Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念
目录 1.1 欢迎1.2 机器学习是什么 1.2.1 机器学习定义 1.2.2 机器学习算法 - Supervised learning 监督学习 - Unsupervised learning 无 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别
Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习
Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...
随机推荐
- win7如何安装maven、安装protoc
问题导读1.protoc安装需要安装哪些软件?2.如何验证maven是否安装成功?3.如何验证protoc是否安装成功 ? 一.安装mvaven包 1.首先我们下载maven包 apache-mave ...
- vs2013 快捷键
//////////////// 编辑: ctrl+-(shift+ctrl+-):移动光标到上次位置或相反,比如定位一个函数,转到函数定义后想回到函数使用处,则用ctrl+-,若又想回到函数 ...
- RBAC (基于角色的访问控制)
基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而 ...
- UVA12716 GCD XOR 数论数学构造
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010682557/article/details/36204645 题目给你一个N,让你求 两个数 ...
- 莫名其妙的js基础学习!
JavaScript基本组成部分: 1,ECMAScript:js的语法标准,基本的变量,运算符,函数,if语句,for语句等 2,DOM:操作网页上的元素API,比如盒子的移动,变色,轮播图等. 3 ...
- RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿
CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...
- 3、MR开发入门
1.预先准备2个文件file1.txt和file2.txt.文件内容为网页上摘下,不具有代表性,只为举例. file1.txt内容为: With this setup, whenever you ch ...
- 关于PIC和FPGA
PIC:Peripheral Interface Controller. FPGA:Field Programmable Gate Array. 关于二者: 区别: FPGA是逻辑门器件,可以配置成为 ...
- Python库-BeautifulSoup
sp = BeautifulSoup.bs4.BeautifulSoup(html.text,"html.parser") 方法 1.sp.title 返回网页标题 2.sp.te ...
- 一个for循环写出9*9乘法表
public class ClassTest03 { public static void main(String[] args) { for(int i=1,j=1;j<=9;j++){ if ...