1.无监督学习概述

 图1.无监督学习

有监督学习中,数据是有标签的,而无监督学习中的训练集是没有标签的,比如聚类算法。

2.k-means算法

k-means算法应用是十分广泛的聚类方法,它包括两个过程,首先是选取聚类中心,然后遍历每一个点,决定其属于哪个类;第二步是移动聚类中心点,根据刚才的聚类情况将聚类中心点移动,下面三个图很好地说明了这个过程:

图2.初始化,并且计算距离。

图3.计算距离后

图4.根据最小化均方误差移动聚类中心点

根据新的聚类中心点,再次重复这个过程,

图5.迭代之后最终结果

迭代之后最终结果,就算再运行k-means聚类算法,聚类中心点也不会改变了,

图6.k-means算法输入

输入包括k,之后会讲解如何选择k,训练集,x(i)是n维的,不是n+1维,通常舍去x_0=1项。

图7.k-means算法过程

K是指一共分为几簇,k是指每个聚类中心。

首先随机初始化k各聚类中心点,循环以下过程:

1.将m个样本点遍历,分到k个聚类中心中;

2.根据各个簇中的点到聚类中心点的距离并取均值。

对于聚类结果中,没有点的簇,通常是直接删去,那么K就变成了K-1簇。

3.优化目标

图8.k-means优化目标

就是最小化代价函数,也叫失真代价函数。优化目标就是使点到聚类中心的平均距离最小。

4.随机初始化

这节会讲如何避开局部最优。

图9.局部最优化情况

如图就是局部最优化情况,两个类被分成了一个簇,一个簇被分开成了两份,这是不好的,是因为聚类中心店的初始化的问题。解决办法就是初始化多次,并且运行多次k-means聚类算法,得到结果,保证得到一个足够好的结果。

图10.运行局部最优化算法

随机初始化,重复k-means算法100次,通常是在50-1000之间,运行结束后,选取一个失真函数最小的聚类结果。

随机初始化的情况,适用于K在2-10之间,多次随机初始化会比较好的得到正确的聚类结果,但是当不在此区间内,聚类结果并不会有很大的改善,K很大时一次聚类结果即可。

5.选择簇的数量

目前来说,还都是通过可视化的方法手动选择的。

图11.如何选择聚类K的值

选择K个聚类的值,并以损失函数为纵轴来判断,肘形函数,但是有时会像有部,是平滑的,也不好确定最终分为几类,所以这个肘形曲线并不能成为好的判断方法。

但是最终的应用结果会告诉你应该分为几类。

Andrew Ng-ML-第十四章-无监督学习的更多相关文章

  1. perl 第十四章 Perl5的包和模块

    第十四章 Perl5的包和模块 by flamephoenix 一.require函数  1.require函数和子程序库  2.用require指定Perl版本二.包  1.包的定义  2.在包间切 ...

  2. R in action读书笔记(19)第十四章 主成分和因子分析

    第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因 ...

  3. 20190827 On Java8 第十四章 流式编程

    第十四章 流式编程 流的一个核心好处是,它使得程序更加短小并且更易理解.当 Lambda 表达式和方法引用(method references)和流一起使用的时候会让人感觉自成一体.流使得 Java ...

  4. 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记

    第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面 ...

  5. Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八

    有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...

  6. C和指针 (pointers on C)——第十四章:预处理器

    第十四章 预处理器 我跳过了先进的指针主题的章节. 太多的技巧,太学科不适合今天的我.但我真的读,读懂.假设谁读了私下能够交流一下.有的小技巧还是非常有意思. 预处理器这一章的内容.大家肯定都用过.什 ...

  7. CSS3秘笈复习:十三章&十四章&十五章&十六章&十七章

    第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮 ...

  8. JavaScript高级程序设计:第十四章

    第十四章 一.表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在javascript中,表单对应的则是HTMLFormElement类型.HTMLFormElement继 ...

  9. C#语言和SQL Server第十三 十四章笔记

    十三章  使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章:                                                       ...

随机推荐

  1. DELPHIER,正转向PYTHON了

    用了10多年的DELPHI ,现在准备学PYTHON了, 理由是: 1)现在是云计算时代了,需要学习一门适应该时代的语言,研究了很久,PYTHON是最佳选择,排除了PHP,PERL,RUBY等,至于G ...

  2. 解决Ubuntu刚装好的时候su命令密码错误的问题

    Ubuntu刚安装后,在terminal中运行su命令会要求输入密码,然而无论输什么都会错,直接回车也是错,这因为root没有默认密码,需要手动设定.以安装ubuntu时输入的用户名登陆,该用户在ad ...

  3. 改变vux样式

    场景:修改 x-header 颜色 解决: 在创建文件路径如下 src/assets/less/theme.less ; 在build/webpack.base.conf.js下添加 这两行即可

  4. LeetCode 21 Merge Two Sorted Lists (有序两个链表整合)

    题目链接 https://leetcode.com/problems/merge-two-sorted-lists/?tab=Description   Problem: 已知两个有序链表(链表中的数 ...

  5. 3-1 vue-resource基础介绍

    1.静态引用 <script src="https://cdn.bootcss.com/vue-resource/1.3.4/vue-resource.js">< ...

  6. 去掉VS2010代码中文注释的红色下划线

    VS2010代码中文注释出现红色下划线,代码看上去很不美观,发现是由于安装Visual Assist X插件造成的. 解决办法:打开VAX的Options对话框,取消Advanced --> U ...

  7. SSH 服务器不用密码

    1 A: user assh-keygen -t rsa 2 Created a directory on B, if ~/.ssh exists, which is fine.a@A:~> s ...

  8. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  9. ubuntu16.04下安装kdevelop和汉化

    1.Kdevelop安装 最简单的命令行安装,打开终端,执行 sudo apt-get install kdevelop 2.Kdevelop汉化 不需要自己下载汉化包,Kdevelop安装后,在终端 ...

  10. 2018牛客网暑期ACM多校训练营(第五场) F - take - [数学期望][树状数组]

    题目链接:https://www.nowcoder.com/acm/contest/143/F 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...