Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
8 Unsupervised Learning
8.1 Clustering
8.1.1 Unsupervised Learning: Introduction
集群(聚类)的概念。
什么是无监督学习:对于无标记无关联标记的数据,要求算法分析出数据的结构。
什么是聚类:将未加标签的数据分成有紧密关系的子集或者簇。

做道题:
ABC
8.1.2 K-Means Algorithm
讨论什么是K均值以及K均值的使用。K均值算法是一种迭代的聚类方法。
用图来展示K均值更加直观:
1.因为本例要将数据分为2类,所以要随进选择2个聚类中心(cluster centroid)。绿色的点表示的是未标记的样本。

2.迭代执行簇分配(centroid assignment)和移动聚类中心(Move the cluster centroids):
while 聚类中心不再移动
簇分配,检查没有标记的点,将点的颜色染成距离它最近的那个聚类中心的颜色。(例子中是将图中的绿点根据距离红叉或者篮叉更近分配到两个不同的聚类中心)。
移动聚类中心,计算点的各维度的均值,将中心移动到与自己同一颜色的点群的均值位置。(将红叉或者篮叉移动到和它一样颜色的那堆点的均值处)。
end
具体过程从左向右,从上向下:


K均值算法描述:
输入:K个类别;训练集。

运行:簇分配+移动聚类中心。
如果遇到没有分配点的聚类中心,直接移除或者再随机找一个聚类中心,通常移除更加常见。算法见下图:
1.随机初始化K个聚类中心u1,u2,...,uK。
2.while 聚类中心不再变化
簇分配:对于训练集的每个样本x(i),置c(i)=距离x(i)最近的聚类中心编号k。这里就是求mink||x(i)-uk||2的k。
移动聚类中心:对于每个聚类中心k,置uk=(所有c(i)=k的样本点的均值)。
end

做道题:

答案:
K均值的应对没有很好分开的簇:
市场细分的例子:将T恤分为小中大号。


下一节中讨论如何让K均值表现得更好一些
8.1.3 Optimization Objective
1.K均值的代价函数。保证K均值的正常运行。
2.如何利用K均值的代价函数来帮助K均值来找到更好的簇,避免局部最优解。
一些定义:c(i)、uk和uc(i)

K均值的代价函数也叫失真代价函数(distortion cost function)。

K均值算法的原理是最小化代价函数J的过程:簇分配就是在聚类中心不变时,求使代价函数J最小的c(1)...c(m);移动聚类中心就是在c(1)...c(m)不变的情况下,求使代价函数最小的uk。

做道题:

D
回归问题中有可能因为学习率设置过大产生随着迭代次数增加,cost function反倒增大的情况。但聚类是不会产生这样的问题的,因为每一次聚类都保证了使J下降,且无学习率做参数。
下节课帮助K均值找到更好的簇以及同时避免局部最优解。
8.1.4 Random Initialization
如何初始化K均值聚类中心,这会引导我们如何避开局部最优来构建K均值。
随机初始化:
1.K<m。
2.随机选择K个训练样本。
3.使聚类中心等于这些被选的K个样本。
KMeans的运行结果取决于KMeans的初始化。

避免局部最优的方法,提高K均值找到有可能的聚类的几率的方法是多次随机初始化。具体而言就是
1.随机初始化K均值。
2.执行K均值。
3.得到一系列的c,u值。
4.计算代价函数。
将以上4步多次执行,选取代价函数最小的一次作为最终结果。

如果聚类的k选取的比较小,多次随机初始化通常就会有个较好的局部最优解;但是如果k很大,那么多次随机初始化的效果就不太明显。
做道题:

C
8.1.5 Choosing the Number of Clusters
如何选择聚类分类数目K。没有自动选择的好方法:看可视化的图;看聚类分类的输出结果;手动决定(最常用)。
选择聚类的数目是困难的是因为数据中有多少个类通常是模棱两可的。比如下图:相同的数据样本情况


无监督学习中样本没有标签,所以结果没有清晰的答案。
其中的可能有用的一个方法:肘部法则(Elbow Method)。具体就是取不同的类别值K,分别计算不同K下的代价函数J,画图:

左图中出现一个突变点,这个点对应的K值就是可能的较好的分类数目K。在这个K前后,代价函数值有突变。K=3前代价函数值下降速度较快;K=3后代价函数值下降速度慢。像这样K=3的点,就是肘点(elbow)。但实际上也有可能出现像右边的图的情况,这时的肘点就没有左图那么明显。
出现上图右侧的情况时,更好地选择分类数目K的方法其实是看运行K均值的目的是什么。

比如T恤的例子:可以分为{S,M,L},也可以分为{XS,S,M,L,XL},具体看需求和目的。
做道题:

C
练习:

BD

C

CD

B

CD

AB
Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记的更多相关文章
- Coursera 机器学习 第5章 Neural Networks: Learning 学习笔记
5.1节 Cost Function神经网络的代价函数. 上图回顾神经网络中的一些概念: L 神经网络的总层数. sl 第l层的单元数量(不包括偏差单元). 2类分类问题:二元分类和多元分类. 上 ...
- Coursera 机器学习 第7章 Support Vector Machines 学习笔记
7 Support Vector Machines7.1 Large Margin Classification7.1.1 Optimization Objective支持向量机(SVM)代价函数在数 ...
- [Machine Learning]学习笔记-Logistic Regression
[Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...
- Machine Learning 学习笔记
点击标题可转到相关博客. 博客专栏:机器学习 PDF 文档下载地址:Machine Learning 学习笔记 机器学习 scikit-learn 图谱 人脸表情识别常用的几个数据库 机器学习 F1- ...
- 【机器学习】决策树(Decision Tree) 学习笔记
[机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...
- 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h
DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...
- PredNet --- Deep Predictive coding networks for video prediction and unsupervised learning --- 论文笔记
PredNet --- Deep Predictive coding networks for video prediction and unsupervised learning ICLR 20 ...
- Machine Learning 学习笔记1 - 基本概念以及各分类
What is machine learning? 并没有广泛认可的定义来准确定义机器学习.以下定义均为译文,若以后有时间,将补充原英文...... 定义1.来自Arthur Samuel(上世纪50 ...
- 吴恩达Machine Learning学习笔记(一)
机器学习的定义 A computer program is said to learn from experience E with respect to some class of tasks T ...
随机推荐
- TSQL--SET ANSI_NULLS OFF
当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或< ...
- mvc - view传值到js
http://www.cnblogs.com/akwwl/p/5238975.html
- Autofac的Autofac.Core.Activators.Reflection.DefaultConstructorFinder错误解决方案。
在使用Autofac的时候,不给力,看着例子来的,人家没问题,我就报了Autofac.Core.Activators.Reflection.DefaultConstructorFinder错误. 百般 ...
- Duration Assertion(持续时间)
Duration Assertion用来测试每一个响应的时间是否小于给定的值,任何超过给定毫秒数的响应都会标记为失败. Duration in milliseconds:响应的持续时间是否在给定的值范 ...
- rtabmap and rtabmap_ros make error(rtabmap编译错误)
Build from source following README.nd in rtabmap_ros rtabmap make error Error 1 make[2]: *** No rule ...
- spring 学习(三):aop 学习
spring 学习(三):aop 学习 aop 概念 1 aop:面向切面(方面)编程,扩展功能不修改源代码实现 2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 3 aop底层使用动态代 ...
- 洛谷P3711 仓鼠的数学题(伯努利数+多项式求逆)
题面 传送门 题解 如果您不知道伯努利数是什么可以去看看这篇文章 首先我们把自然数幂和化成伯努利数的形式 \[\sum_{i=1}^{n-1}i^k={1\over k+1}\sum_{i=0}^k{ ...
- postgreSQL PL/SQL编程学习笔记(三)——游标(Cursors)
Cursors Rather than executing a whole query at once, it is possible to set up a cursor that encapsul ...
- string[] 转换为 int[]
string[] ke=...... int[] output = Array.ConvertAll<string, int>(ke,delegate (string s) { retur ...
- 深入解析Close()和Dispose()的区别
很多人都认为Close()方法内部会调用Dispose()方法,所以并没有本质的区别!实际上这个看法不是很准确,对有 些类来说,的确Close()和Dispose()没有本质区别,但是对有些类来说并非 ...