读书笔记

机器学习(2)-监督学习和非监督学习

Jaydon · 12月18日 · 2019年 · 62次已读

一、监督学习(supervised learning)

吴恩达视频中首先给出一个例子来解释什么是监督学习,然后后面将给出更加正式的定义。

假设你想预测房价,某个学生从某地收集了数据集,其中一个数据集是这样的。横坐标是房子的面积(平方英尺为单位),纵坐标是房子的价格(单位千美元)。

假设你的朋友有个750平方米的房子,想要知道能够卖多少钱。学习算法怎么可以帮助你呢?一种方法是学习算法可以绘制一条直线,使这条直线尽可能的匹配到所有数据,从下图可以看出,可能能够买到15万刀。

直线可能并不是最好的方法,可能会有更好的,在房价预测的例子中,可能一个二元函数能够更好的匹配所有数据,即二次多项式更加符合数据集,如果你这样做,预测结果就应该是20万刀。后面会介绍怎么决定是选择线性函数还是二次函数来拟合数据。

监督学习意指给一个算法一个数据集,在这个数据集中正确的答案已经存在了(supervised learning refers to the fact that we gave the algorithm a data set in which the "right answers" were given.)。比如给定房价数据集,对于里面的每一个例子,算法都知道正确的房价,即这个房子实际卖出的价格,算法的结果就是计算出更多的正确的价格,比如你朋友想要卖出的那个房子的价格。

1.1 回归问题

回归问题是监督学习问题的一种,意指要输出一个连续的值,例如房价,虽然一般将房价记到美分单位,所以实际上还是一个离散值,但是通常将它看作为实际数字,是一个连续值的数。

回归问题是对于连续性数据,从已有的数据分析中,来预测结果。

1.2 分类问题

另一个监督学习的例子,根据医学记录来预测胸部肿瘤的恶性良性。现在有一个数据集,可以表示为下图所示,横轴表示肿瘤的大小,纵轴表示肿瘤的恶性(1)、良性(0)。

现在有5个良性肿瘤与5个恶性肿瘤,不幸的是有个朋友得了肿瘤,但是不知道肿瘤是恶性还是良性,机器学习的问题是,你能否算出一个概率,即肿瘤为恶性或者良性的概率?

专业的说,这是一个分类的问题,分类问题是要预测一个离散的输出,这里是0或1,恶性或者良性。事实证明,在分类问题中会有超过两个的值,输出的值可能会超过两个,举个例子。胸部肿瘤可能有三种类型,所以要预测的离散值是0,1,2,3。0代表良性,1代表1号癌症,2代表2号癌症,以此类推。

在分类问题中,还有另一种作图方式来描述数据集,需要用到不同的符号集合来描述数据。如果肿瘤大小被作为唯一的属性来预测肿瘤的恶性良性,可以将图画成这样,使用不同的符号来表示恶性与良性,不再统一画叉叉,使用圈圈代表良性肿瘤,仍然使用叉叉代表恶性肿瘤,我所做的就是将上面的数据映射下来,再用不同的符号表示。

在这个例子中,只使用了一个属性来预测肿瘤的恶性与良性,在其他机器学习问题里,有着不只一个的特征和属性,例如现在病人的年龄和肿瘤大小都知道了,这种情况下,数据集表示如下图所示,病人的年龄和肿瘤大小已知,不同的病人会不一样,良性肿瘤使用圆圈表示,恶性肿瘤使用叉叉表示,假设有一个朋友得了肿瘤,肿瘤的大小以及朋友的年龄已知(在图中对应的点如图所示),那么依据这个数据集,学习算法画出一条直线,分开恶性肿瘤和良性肿瘤,这样就能判断你的朋友是恶性肿瘤还是良性肿瘤了。在这个例子中,总共有两个特征,肿瘤的大小以及患者的年龄。在别的机器学习问题中,经常会用到更多的特征,通常会用到这些特征,比如块的厚度,即胸部肿瘤的厚度,肿瘤细胞大小和形状的一致性等,这表明机器学习算法(我们讲学习到的),能够处理很多的特征,无论是3个,5个,还是更多,这里我们列举出了5个特征,但对于其他的ML(Machine Learning)问题,真正要用到的特征不只5个,要用到许多的特征以及属性,所以,你的学习算法要用到许多的属性、特征来进行预测,所以你如何处理无限多的特征呢???甚至你又如何存储无限多的东西到电脑里,又要避免内存溢出呢???事实上,当我们介绍支持向量机(SVM)算法时,就知道存在一个简单的数学方法来让电脑处理无限多的特征。(然而我也不知道是啥,还没学到。。。。)

1.3 监督学习总结

监督学习可以被分为回归问题分类问题

监督学习的基本思想是,给你一堆数据,包含输入和输出,然后你从这堆数据里分析出一个函数,再然后你用这个函数去预测另一堆数据的输出。

比如上面的房子大小和房价的关系,你算出来一个函数,然后给你一个新的数据( 房子大小 )算出房子价值多少钱。这就属于回归问题。

像上面的肿瘤例子,给你一堆肿瘤数据,大小啊,壁厚啊,形状啊,通过这些特征(标签)来分出来恶性肿瘤和良性肿瘤;然后你找一个新的肿瘤,给机器来识别,机器再根据之前算出来的函数告诉你它是好的还是坏的。这属于分类问题

监督学习,对于数据集中的每个数据,都有相应的正确的答案,算法就是基于这些来进行预测,我们知道了输出应该是什么样子的。

二、非监督学习(unsupervised learning)

回想上一节,数据集的数据被标记为正样本和负样本,即良性肿瘤和恶性肿瘤,所以对于监督学习中的我们已经被告知了什么是正确的答案,及肿瘤是恶性还是良性的。

在非监督学习中,我们用到的数据会和监督学习里面的看起来有些不一样,在非监督学习中,没有属性或标签这一概念,也就是说所有的数据都是一样的,没有区别。在非监督学习中,我们被给与了一个数据集,但是没有人教我们怎么做,我们也不知道每个数据点表示什么,相反,他只告诉我们这里有一个数据集,你能够找到其中的某种结构吗???对于给定的数据集,非监督学习算法可能判定这个数据集有两个不同的聚类,你猜对了,非监督学习算法,会将数据集分成两个不同的聚类,如下图所示,这就是所谓的聚类算法,它被用在许多的地方。

举一个聚类的例子,google新闻的例子,谷歌新闻每天都在干些什么呢???他们每天会去收集网络上成千上万的新闻,然后将他们分组,组成一个个新闻专题,比如将所有油井事故相关的新闻放在一起。实际上聚类算法和无监督算法可以被用到许多其他的问题。这里在列举一个例子,关于基因的例子。

无监督学习还有其他许多的例子,如下图所示。

  1. 管理集群,找出哪些机器倾向于协同合作,将这些机器放在一起,可以大大提高集群工作的效率。
  2. 用于社交网络的分析,知道哪些朋友用email联系的多,你的facebook的朋友等,知道了这些之后,我们可以自动分析出哪些是十分要好的朋友组,哪些是互相认识的朋友组。
  3. 许多公司拥有大量的客户信息数据库,给你一个客户数据集,你能否自动找出不同的市场分割,将客户细分到不同的细分市场中,从而有助于在不同的细分市场中进行更加有效的营销,我们有这些客户数据,但是我们不知道有哪些细分市场,而且对于数据集的某个客户,我们预先也不知道他们属于哪个细分市场,我们必须让算法自己去数据中发现这一切。
  4. 无监督学习也被用于天文数据分析。

2.1 非监督学习总结

输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。通俗点将就是实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。

三、两者区别

1、有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。

2、有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。

3.、非监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。 这一点是比有监督学习方法的用途要广。譬如分析一堆数据的主分量,或分析数据集有什么特点都可以归于非监督学习方法的范畴。

2 条回应
    Chrome 74.0.3729.169 Windows 10 2019-12-18 · 23:35

    厉害了呀,请具体讲解一下logistic回归以及常用的决策树分类和叶斯分类呗~

      Jaydon 搜狗浏览器 2.X Windows 10 2019-12-19 · 9:20

      我还是个菜鸡啊,刚开始学习呢,大佬说的那些我都还没学到!