什么是无监督学习?说到这个问题我们可以回想下监督学习,监督学习的特点就是告知算法一些信息,
比如这是第一类人,那些是第二类人,还有第三类,等等。
那么无监督学习就是没有提前告知算法一些信息,是的,这是有一堆数据。我不知道数据里边有什么,
也不知道谁是什么类型。我甚至不知道人们有哪些不同类型,以及这些类型又是什么。但是你能自动地
找到数据中的结构吗?就是说你要自动地聚类哪些个体到哪些类里边,我们没办法提前知道哪些是哪些。
因为根本没有给算法正确答案来回应数据集中的数据,所以这就是无监督学习。
无监督学习或聚集有着大量的应用。首先就是,它可以用于组织大型计算机集群,比如在大数据中心,那里有大
型计算机集群,他们找到什么样的机器易于协同地工作,如果能让那些机器协同工作,就能让数据中
心的工作更高效。第二种应用就是社交网络的分析。如果已知你朋友的信息,比如经常发email的,或
者是Facebook好友等,利用无监督学习能否自动地给出朋友的分组?即每组里的人都彼此认识。还有
市场分割等,许多公司有大型的数据库,存储消费者信息,能否依据这些信息给他们划分不同的市
场?等等。那我们必须让算法从数据中发现这一切。最后,无监督学习也可用于天文数据分析。这些
聚类算法可以给出令人惊讶的结果,解释了星系是如何诞生的。这都是聚类的例子,然而聚类也只是
无监督学习中的一种。
另外还有一种,我们先来介绍鸡尾酒宴问题,想象一下,有个宴会房间里满都是人,全部都在聊天,
这么多人同时都在聊天的情况下,声音彼此重叠着,因为每个人都在说话,甚至同一时间,你几乎听
不到你面前的人的声音。我们放两个麦克风在房间中,因为这些麦克风在两个地方,离说话的人不同
的距离的每个麦克风记录下不同的声音,虽然是同样的两个说话人。听起来像是两份录音被叠加在一
起,产生了我们现在的这些录音。另外,这个算法还会区分两个音频资源,这两个可以合成或合并成
之前的录音。实际上,
鸡尾酒算法的第一个输出结果是:
1 ,2,3,4,5,6,7,8,9,10
第二个输出是这样:
1,2,3,4,5,6,7,8,9,10
看到这个无监督学习算法,感觉实现这个要特别复杂,事实上如果使用合适的语言就可以用一行代码
来完成。
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
Octave;