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 学习笔记的更多相关文章

  1. Coursera 机器学习 第5章 Neural Networks: Learning 学习笔记

    5.1节 Cost Function神经网络的代价函数. 上图回顾神经网络中的一些概念: L  神经网络的总层数. sl  第l层的单元数量(不包括偏差单元). 2类分类问题:二元分类和多元分类. 上 ...

  2. Coursera 机器学习 第7章 Support Vector Machines 学习笔记

    7 Support Vector Machines7.1 Large Margin Classification7.1.1 Optimization Objective支持向量机(SVM)代价函数在数 ...

  3. [Machine Learning]学习笔记-Logistic Regression

    [Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...

  4. Machine Learning 学习笔记

    点击标题可转到相关博客. 博客专栏:机器学习 PDF 文档下载地址:Machine Learning 学习笔记 机器学习 scikit-learn 图谱 人脸表情识别常用的几个数据库 机器学习 F1- ...

  5. 【机器学习】决策树(Decision Tree) 学习笔记

    [机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...

  6. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h

    DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...

  7. PredNet --- Deep Predictive coding networks for video prediction and unsupervised learning --- 论文笔记

    PredNet --- Deep Predictive coding networks for video prediction and unsupervised learning   ICLR 20 ...

  8. Machine Learning 学习笔记1 - 基本概念以及各分类

    What is machine learning? 并没有广泛认可的定义来准确定义机器学习.以下定义均为译文,若以后有时间,将补充原英文...... 定义1.来自Arthur Samuel(上世纪50 ...

  9. 吴恩达Machine Learning学习笔记(一)

    机器学习的定义 A computer program is said to learn from experience E with respect to some class of tasks T ...

随机推荐

  1. Snapshot--使用脚本创建快照

    USE master; SET NOCOUNT ON; GO ); --数据库名 );--快照名 );--保存路径 SET @dbname='DB1'; SET @snapname='DB1_SNAP ...

  2. WeStrom自定义设置修改快捷键

    按照下图操作,不BB: 终极懒人设置:!!!

  3. Mysql初识数据库《五》初识sql语句

    初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写 mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要 ...

  4. Atcoder Grand Contest 031C(构造,思维,异或,DFS)

    #include<bits/stdc++.h>using namespace std;int n,a,b,sum;void dfs(int x,int y,int ban){    if( ...

  5. Jmeter_Beanshell_使用Java处理JSON块

    版权声明:本文为博主原创文章,转载请注明出处. [环境] ①Jmeter版本:3.2,JDK:1.8 ②前置条件:将json.jar包置于..\apache-jmeter-3.2\lib\下,并将该j ...

  6. 洛谷P4013 数字梯形问题(费用流)

    传送门 两个感受:码量感人……大佬nb…… 规则一:$m$条路径都不相交,那么每一个点只能经过一次,那么考虑拆点,把每一个点拆成$A_{i,j}$和$B_{i,j}$,然后两点之间连一条容量$1$,费 ...

  7. Java面向对象之异常(异常处理方式)

    一.基础概念 (1)异常:Java程序在运行时期发生的不正常情况. Java就按照面向对象的思想对不正常情况进行描述和对象的封装. (2)异常问题分类: (Throwable:定义对于问题共性的功能. ...

  8. [Swift实际操作]九、完整实例-(4)在项目中使用CocoaPod管理类库和插件

    本文将为你演示,如何使用CocoaPod第三方类库管理工具,在项目中安装未来需要使用的类库.首先创建一份文本文件.可以使用一个脚本创建文件,你可以采用自己的方式是创建一份文本文件,接着在文件名称上点击 ...

  9. Python如何在子类里扩展父类的property?

    <python cookbook>8.8节讨论子类扩展property时,一开始都晕了,思考了半天才勉强弄懂一点,赶快记下来.废话不多说,先上代码: class Person: def _ ...

  10. SQL Server为啥使用了这么多内存?

    原文地址:http://support.microsoft.com/gp/anxin_techtip6/zh-cn SQL Server为啥使用了这么多内存? SQL Server的用户,常常会发现S ...