1、聚类算法
对比监督学习:
监督学习中,在给定的数据集中的每一个样本都已经清楚地给出了正确答案。如下图:
而无监督学习给定的数据不一样,他们没有具体的标签,即没有正不正确。只被告知有这样的数据集,我们需要按自动得到的类型找到其中的某种结构,将其划分成簇。
对于上面给定的数据集,无监督学习算法可以将该数据集划分成两个簇。也被称之聚类算法。
应用实例
- 谷歌新闻:它搜集网上的新闻,并将它们聚成不同主题的多个块以呈现。
- DNA微阵列数据:给定一组不同个体,对于每个个体,测定它们是否拥有某个特定的基因,也就是要测定特定基因的表达程度。那么我们需要运行一个聚类算法,将不同的个体归入不同的类。
- 组织大型的计算机群:like将某一些趋于协同工作的计算机放在一起,可以使得工作更高效。
- 社交网络分析:通过给定的数据集(频繁的社交联系人、社交圈等)自动识别出同属一个圈子的朋友,即分析出社交圈中哪些人是熟识的等。
- 市场细分中的应用:许多公司有用庞大的用户数据集,可以通过这些数据集,将用户自动划分到不同的细分市场中去,再针对这些不同的细分市场具体销售不同的商品。
- 天文数据分析:应用于星系形成理论。
聚类算法只是无监督学习中的一种,还有一种,鸡尾酒会算法。
2、鸡尾酒会算法
假设在一个鸡尾酒会中,只有两个人和两个麦克风,这两个麦克风离两人的距离不同,则他们录制出的两人的叠音效果也不同。将从两个麦克风中得到的两个音频交给该算法,则该算法可以将音频中的两个音源分离输出。
这里吴恩达教授推荐使用Octave软件作为实现算法的开发环境。因为它将很多机器学习需要用到的功能函数都集成在了环境中,用户直接使用该函数,实现算法的速度很快。若使用C++、JAVA、Python等,则要额外编写很多代码来实现这些功能算法。
即推荐先学会使用Octave建立原型,再使用其他的编程语言,更有效率。