#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得;

#注:此笔记是我自己认为本节课里比较重要、难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点;

#标记为<补充>的是我自己加的内容而非课堂内容,参考文献列于文末。博主能力有限,若有错误,恳请指正;

#---------------------------------------------------------------------------------#

<补充>机器学习按照数据标记分可分为四类:监督式学习,无监督学习,半监督学习和增强学习;

supervised learning(监督式): Application in which the training data comprises examples of the input vectors, along with their correspongding target vectors are known.

关键词: "right answer" given(有标签), classification, regression;

unsupervised learning(无监督): The training data consists of a set of input vectors X without any corresponding target values.

关键词: 无标签,clusering, density estimation, visualization;

Semi-supervised learning(半监督): is a class of machine learning techniques that make use of both labeled and unlabeled data for training - typically a small amount of labeled data with a large amount of unlabeled data.

关键词: 部分有标签;

reinforcement learning(增强学习): a teacher only says to classifier whether it is right when suggesting a category for a pattern. The teacher does not tell what the correct category is.就是说一个评价仅仅给出某种判断是对还是错,而没有给出错在哪里。

#---------------------------------------------------------------------------------# 

K-means algorithm(不要同KNN混淆!)

K-means用来将没有标签的数据进行聚类(分组);

K-means算法概述(以K=2为例子来描述):

1,随机挑选两个数据作为类的中心(cluster centroids),见下图红叉和蓝叉;

2,Cluster assignment step:将每个数据按是和红叉近还是和蓝叉进来进行归类;

3,Move centroid step:计算当前红色点们(红类)和蓝色点们(蓝类)真正的中心,将红叉和蓝叉移到各自类的真正中心,见下图;

4,重复2,3步骤直到收敛,也即红叉和蓝叉落到当前红类和蓝类真正的中心;

#---------------------------------------------------------------------------------#

如何选择类的数目K?

Elbow method:

作cost function和K的图,找到"elbow",见下图左;

当然,结果可能是"elbow"不显著,见上图右;

#---------------------------------------------------------------------------------#

<补充>K-means 算法和EM算法的联系

K-means的步骤2和3,与EM算法的E-step和M-setp非常相似,若学到EM算法,可将两者比较着看;

#---------------------------------------------------------------------------------#

<补充>K-means和KNN的关系

K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类KNN的具体介绍,推荐阅读陈皓所写博客;

KNN和K-Means的区别

KNN(K Nearest Neighbor)

K-Means

1.KNN是分类算法

2.监督学习

3.喂给它的数据集是带label的数据,已经是完全正确的数据

1.K-Means是聚类算法

2.非监督学习

3.喂给它的数据集是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序

没有明显的前期训练过程,属于memory-based learning 有明显的前期训练过程
K的含义:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c K的含义:K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识
   
相似点:都包含这样的过程,给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nears Neighbor)算法,一般用KD树来实现NN。

#---------------------------------------------------------------------------------#

Dimensionality Reduction(降维)

降维的目的:

1,Data compression(压缩数据):

  • Speeds up algorithms
  • Reduces space used by data for them

2,Visualization(可视化):

  将维数降到2维或3维,方便画图;

3,Ng老师没讲其他作用,不过肯定有,这里先留着,有待作补充;

注意:进行降维的时候不要忘记feature scaling和nomalization.

#---------------------------------------------------------------------------------#

PCA:Principle Component Analysis(主成分分析)

PCA是降维的最常用方法;

PCA算法描述:

1,在进行PCA之前要对数据做预处理,包括Mean normalization,Feature scaling ;

2,PCA finds the lower dimensional sub-space which minimizes the sum of the square,也就是说要找到一个维数更低的空间(直线,平面,...),这个空间使所有数据到这个空间的距离之和最小;

例子:2D->1D,

#---------------------------------------------------------------------------------#

Choosing the number of Principle Components

k = number of principle components;

PCA的目的是数据到目标空间(可以是直线,平面,...)的距离之和最小;

我们选择满足下式时的最小值作为K的值;

#---------------------------------------------------------------------------------#

PCA可用来帮助:

1,压缩数据;

2,可视化;

注意:PCA不能用来防止过拟合!过拟合还是得通过加正则化项来防止;

PCA会丢失一些数据,可能会对结果造成很大影响。实际应用中,得先不用PCA,当确认PCA会有帮助时再用到PCA;

#---------------------------------------------------------------------------------#

参考文献:

《统计学习方法》,李航著;

K Nearest Neighbor 算法, 陈皓著;

couresra课程: standford machine learning, by Andrew Ng;

couresra课程: 台湾大学機器學習基石,by 林軒田;

coursera机器学习-聚类,降维,主成分分析的更多相关文章

  1. Coursera机器学习+deeplearning.ai+斯坦福CS231n

    日志 20170410 Coursera机器学习 2017.11.28 update deeplearning 台大的机器学习课程:台湾大学林轩田和李宏毅机器学习课程 Coursera机器学习 Wee ...

  2. 机器学习之路:python 特征降维 主成分分析 PCA

    主成分分析: 降低特征维度的方法. 不会抛弃某一列特征, 而是利用线性代数的计算,将某一维度特征投影到其他维度上去, 尽量小的损失被投影的维度特征 api使用: estimator = PCA(n_c ...

  3. 斯坦福大学Andrew Ng - 机器学习笔记(6) -- 聚类 & 降维

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

  4. Coursera 机器学习笔记(六)

    主要为第八周内容:聚类(Clustering).降维 聚类是非监督学习中的重要的一类算法.相比之前监督学习中的有标签数据,非监督学习中的是无标签数据.非监督学习的任务是对这些无标签数据根据特征找到内在 ...

  5. 机器学习-聚类Clustering

    简介 前面介绍的线性回归,SVM等模型都是基于数据有标签的监督学习方法,本文介绍的聚类方法是属于无标签的无监督学习方法.其他常见的无监督学习还有密度估计,异常检测等. 聚类就是对大量未知标注的数据集, ...

  6. Spark机器学习7·降维模型(scala&python)

    PCA(主成分分析法,Principal Components Analysis) SVD(奇异值分解法,Singular Value Decomposition) http://vis-www.cs ...

  7. 机器学习笔记簿 降维篇 PCA 01

    降维是机器学习中十分重要的部分,降维就是通过一个特定的映射(可以是线性的或非线性的)将高维数据转换为低维数据,从而达到一些特定的效果,所以降维算法最重要的就是找到这一个映射.主成分分析(Princip ...

  8. coursera机器学习-支持向量机SVM

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  9. coursera机器学习笔记-建议,系统设计

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

随机推荐

  1. 如何在MFC对话框应用程序中使用ColorPicker控件

    在日常的应用程序开发中,当涉及到曲线绘制时,为了将多条不同类型的曲线区分开,常常需要将它们指定不同的颜色.今天在这里简单的记录一下,如何实现及使用ColorPicker控件.程序用到4个文件依次为:C ...

  2. python 函数小实例

    1.判断一个数字是否为素数: import math # -----------------判断一个数是否是素数------------------ def sushu(a): i=1 for i i ...

  3. 系统配置文件的加载设置-以xml文件为例

    前言:开发中经常会遇到加载一些配置文件信息,这些信息变化的概率很小,不需要实时的更新.这样的信息放在数据库里自然是不合适的,所以最好的办法是写在配置文件中,在程序第一次运行的时候加载到内存,以后用到的 ...

  4. 高效 Java Web 开发框架 JessMA v3.3.1 正式发布

    JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...

  5. easyui datagrid 分页略解

    easyui datagrid 本身自带了分页功能. 但是这个需要你自己控制. 在后台可以得到两个datagrid的参数,rows 和page.其中rows是每页要显示的个数,page是第几页.单纯的 ...

  6. Django 模版语言详解

    一.简介 模版是纯文本文件.它可以产生任何基于文本的的格式(HTML,XML,CSV等等). 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签. 例: {% extends "b ...

  7. IOS 非常流畅的滑动tableView

    为什么要写这篇文章呢?之前写过一篇,因为手机打字不是很方便,还有之前同事用6splus 定下午茶时候,我滑动列表时候竟然误以为是安卓系统的手机.   tableview 流畅度可以用fps来测试,到6 ...

  8. ArcGIS server开发之API for js 本地部署

    ArcGIS Server for javascript 本地部署 第一次使用arcgis server for js开发,在经验方面还有很多的不足,所以将自己在开发过程中遇到的问题写出来与大家共享. ...

  9. 【初探移动前端开发05】jQuery Mobile (整合版)

    前言 为了方便大家看的方便,我这里将这几天的东西整合一下发出. 里面的例子请使用手机浏览器查看. 什么是jQuery Mobile? jquery mobile是jquery在移动设备上的版本,他是基 ...

  10. 通过ABAP的标准功能,寻找源代码中的字符串

    程序名称: *ABAP_SOURCE_SCAN 查找 作用:通过这个标准程序,可以在系统的源代码中进行字符串的查找!