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 ...
随机推荐
- Server Sql 多表查询、子查询和分页
一.多表查询:根据特定的连接条件从不同的表中获取所需的数据 多表查询语法: SELECT table1.column, table2.column FROM table1, table2 WHERE ...
- 人力资源管理 winform C#
主旨思想:数据库(增,删,改,查) 资源管理器目的:实现基本人员信息 存储,调用,查看头像,修改内容. 注意事项: 1.建立两个表格 (人员表(cold,name,bumen,phone,t ...
- IIS将http强转为https(重定向和重写)
最近接到一个需求,客户希望无论是http还是https请求都可以访问,并且http能转换成https.研究了一圈发现iis的重定向和重写都可以实现http强转https,记录一下. 用到的东东: In ...
- Response Assertion(响应断言)
响应断言可以让你添加匹配字符串来匹配请求和响应的各个字符串. 匹配字符串可以是1.Contains和Matches正则表达式:2.Equals和SubString文本类型,大小写敏感. Apply t ...
- vue模拟后台数据,请求本地数据的配置(旧版本dev-server.js,新版本webpack.dev.conf.js)
最近学习一个vue-cli的项目,需要与后台进行数据交互,这里使用本地json数据来模仿后台数据交互流程.然而发现build文件夹下没有dev-server.js文件了,因为新版本的vue-webpa ...
- SpeechVoiceSpeakFlags枚举类型的详细解释
http://blog.csdn.net/zhou_xw6511/article/details/8313528
- 搭建svn管理平台
安装svn服务器:yum -y install subversion 创建svn的目录:mkdir -p /data/svn 初始化svn目录:svnadmin create /data/svn co ...
- 30 个 Java 集合面试问题及答案
30 个 Java 集合面试问题及答案 Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 1.Java集合框架是什么 ...
- shim和polyfill,前端术语
最近项目临近发布,JS的bug大都修改完毕,终于进入了我在这家公司实习+入职为数不多的摸鱼时刻.(想想真是有点感人啊) 因为项目要兼容IE8,所以我们的代码里常常要用到 shim 以支持ES5 的相关 ...
- flask总结01
一:Flask的基本介绍和小案例 01:flask的基本介绍 Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开 ...