较为通俗易懂的参考:2 监督学习与无监督学习
表述比较清晰的参考:监督学习和无监督学习的区别
机器学习算法最主要两个分类就是监督学习、无监督学习。(此外强化学习和推荐系统也都是机器学习算法的一员)(强化学习也叫半监督学习)
监督学习可以被分为回归问题与分类问题。
监督学习的基本思想是,对于数据集中的每个数据,都有相应的正确的答案,算法就是基于这些来进行预测,我们知道了输出应该是什么样子的。
例如房价的问题和肿瘤的问题:
房价问题是回归问题,即通过回归来预测一个连续值输出。
肿瘤问题是分类问题,它的目标是预测离散值输出。
从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入输出,也可以说是特征和目标。训练集中的目标是由人标注的。监督学习最常见的是分类(注意和聚类区分)问题,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。也就具有了对未知数据分类的能力。监督学习的目标往往是让计算机去学习我们已经创建好的分类系统(模型)。
监督学习是训练神经网络和决策树的常见技术。这两种技术高度依赖事先确定的分类系统给出的信息,对于神经网络,分类系统利用信息判断网络的错误,然后不断调整网络参数。对于决策树,分类系统用它来判断哪些属性提供了最多的信息。
常见的有监督学习算法:回归分析和统计分类。最典型的算法是KNN和SVM。
输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。通俗点将就是实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。
非监督学习目标不是告诉计算机怎么做,而是让它(计算机)自己去学习怎样做事情。
非监督学习有两种思路。(这里只介绍了一种)第一种思路是在指导Agent时不为其指定明确分类,而是在成功时,采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是为了产生一个分类系统,而是做出最大回报的决定,这种思路很好的概括了现实世界,agent可以对正确的行为做出激励,而对错误行为做出惩罚。
这块应该说的是强化学习,如果严格分类 它不算无监督学习,算是半监督学习,与无监督学习等级相同,而非从属关系。
PCA和很多deep learning算法都属于无监督学习。
监督学习中的肿瘤分类例子中数据集的数据被标记为正样本和负样本,即良性肿瘤和恶性肿瘤,所以对于监督学习中的我们已经被告知了什么是正确的答案,即肿瘤是恶性还是良性的。
在无监督学习中,我们用到的数据会和监督学习里面的看起来有些不一样,在无监督学习中,没有属性或标签这一概念,也就是说所有的数据都是一样的,没有区别。
在非监督学习中,我们被给予了一个数据集,但是没有人教我们怎么做,我们也不知道每个数据点表示什么,相反,他只告诉我们这里有一个数据集,你能够找到其中的某种结构吗
对于给定的数据集,非监督学习算法可能判定这个数据集有几个不同的类别,但我们实现并不知道有几个类别,什么样的类别,哪个样本是哪个类别。这就是所谓的聚类算法。
举一个聚类的例子,google新闻的例子,谷歌新闻每天会去收集网络上成千上万的新闻,然后将他们分组,组成一个个新闻专题,比如将所有油井事故相关的新闻放在一起。
我们没有提前告知这个算法,这些是第一类,这些是第二类,我们只是告诉算法这里有一堆数据,我事先不知道有哪些类型,希望计算机能找到其中的类型然后根据得到的类型将个体分类。对于这些算法,我们没有给定一个正确的答案,所以这就是无监督学习。
无监督学习,它是一种学习机制,我们给算法大量的数据,希望算法自动找出数据中的蕴含的类型结构
聚类算法只是无监督学习的一种。
现在我们来介绍另一种无监督学习算法:
先来谈谈鸡尾酒会的问题。有一个宴会,有一屋子的人,大家都坐在一起,大家都在同时说话,许多的声音混合在一起,因为所有人都是在同时说话的,在这种情况下,你很难听清楚你面前的人说的话,因此,比如有这样一个场景,宴会上只有两个人,同时说话,我们准备好了麦克风,把它们放在房间里面,因为这两个话筒离这两个人的距离是不同的,每个麦克风都记录下了来自两个人的不同声音的组合,也许是A的声音在第一个麦克风里会响一点,也许B在第二个麦克风里会响一点,有一个机器学习算法可以将混合在一起的声音分离开来。
你可能会想,实现这个算法需要写很多的代码吧?实际上只需要一句代码就够了。
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x')
我们使用Octave的编程环境,可以使我们更加快速的学习机器学习这么技术,不需要写很多的代码,许多的算法已经被封装到库中了。例如svd。
其实这个例子我不太懂 如果这个不算是聚类但是是无监督学习的话 为什么 那它是什么类型的无监督
有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。
有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。
非监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。
这一点是比有监督学习方法的用途要广。譬如分析一堆数据的主分量,或分析数据集有什么特点都可以归于非监督学习方法的范畴。
用非监督学习方法分析数据集的主分量与用K-L变换计算数据集的主分量又有区别。后者从方法上讲不是学习方法。因此用K-L变换找主分量不属于无监督学习方法,即方法上不是。而通过学习逐渐找到规律性这体现了学习方法这一点。在人工神经元网络中寻找主分量的方法属于无监督学习方法。