#对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. 第 16 章 CSS 盒模型[上]

    学习要点: 1.元素尺寸 2.元素内边距 3.元素外边距 4.处理溢出 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素尺寸 C ...

  2. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  3. 免费素材:包含 250+ 组件的 DO UI Kit

    DO UI kit 现在可以免费用于 Photoshop 和 Sketch 了.它有超过130个屏幕,10个完整的主题以及250+的组件混合以创造惊人的应用.他们都是再混合和视网膜.最重要的是他们看起 ...

  4. FormsAuthentication身份认证源代码

    使用FormsAuthentication类可以实现身份认证功能,这里提供一个asp.net项目的源代码,项目名称KWS.项目实现了登录.退出和判断身份的功能. 关于项目 点击这里下载源代码 http ...

  5. CSS的简介

    CSS(Cascading Style Sheets):层叠样式表 层叠:一层一层的 样式表:有很多的属性和属性值 css将网页内容和显示样式进行分离,提高了显示功能 CSS通常被称为CSS样式表或层 ...

  6. 提高CSS文件可维护性的五种方法

    当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节.然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成.所以,结构优良的代码能很大程度上优化它的可 ...

  7. AngularJS 学习之路(1)

    AngularJS 是一个 JS 框架,适用于以数据操作为主的 SPA (Single Page Application)应用. 不再是 "先查找元素在操作元素",所有操作都以 & ...

  8. CORS(跨域资源共享)

    前言:上一篇文章在写如何使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享).虽然前些天也看了一下CORS相关的文章,但是 ...

  9. HTML5攻防向量

    From:HTML 5 Morden Day Attack And Defense Vectors Autor:Rafay Baloch 摘要 根据Powermapper出版的统计,他们分析的Web页 ...

  10. SQLMAP使用笔记

    -u #注入点-f #指纹判别数据库类型-b #获取数据库版本信息-p #指定可测试的参数(?page=1&id=2 -p “page,id”)-D “” #指定数据库名-T “” #指定表名 ...