目录
一、欢迎
机器学习是当前信息技术领域中最令人兴奋的方向之一。在这门课程中,你不仅会学习机器学习的前沿知识,还将亲手实现相关算法,从而深入理解其内部机理。
事实上,机器学习已广泛渗透进我们的日常生活。例如,每次你使用 Google、Bing 进行搜索,或用 Facebook、Apple 的图像识别功能识别朋友,甚至邮箱中的垃圾邮件过滤器,背后都离不开机器学习算法的支持。这些算法让系统能够“学习”如何提供更好的服务。
机器学习之所以广受欢迎,是因为它不仅服务于人工智能领域,更已成为计算机的一种核心能力。我们以前可以手动编写程序来解决基础问题,比如寻找最短路径,但像网页搜索、图像识别、反垃圾邮件等复杂任务,则必须依靠机器自我学习来完成。
它在医疗、工程、计算生物学等多个行业中发挥着巨大作用。比如:
-
数据挖掘:分析网页点击流数据,优化用户体验。
-
医疗健康:通过分析电子病历,发现疾病模式。
-
基因研究:处理大规模基因序列,探索生命奥秘。
-
自动控制:如训练无人直升机自动飞行。
-
手写识别:用于邮件自动分拣。
-
自然语言处理与计算机视觉:提升语言和图像理解能力。
-
个性化推荐系统:如 Amazon、Netflix、iTunes 的推荐功能。
此外,机器学习也被用来帮助我们理解人类学习本身和大脑的工作机制。它不仅推动 AI 梦想的实现,也是 IT 行业最受欢迎的技能之一。许多科技公司都在积极寻找掌握机器学习的人才,远远超出目前的供给。
二、机器学习是什么
虽然“机器学习”没有一个统一的定义,但有两个经典的描述:
Arthur Samuel(20世纪50年代):
他将机器学习定义为“在没有明确设置的情况下,使计算机具有学习能力的研究领域”。
他创建了一个西洋棋程序,程序通过与自己对弈上万次,不断优化策略,最终下棋水平超过了他本人。Tom Mitchell(卡内基梅隆大学):
定义:“一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升”
例如:垃圾邮件过滤系统
任务 T:识别垃圾邮件
经验 E:观察是否把邮件标记为垃圾邮件
性能度量 P:系统正确分类邮件的准确率
机器学习算法主要包括监督学习、无监督学习,以及其他类型如强化学习和推荐系统。
三、监督学习
监督学习指的就是给学习算法一个数据集,其中包含了“正确答案”,通过训练模型来学习已有数据中的规律,然后运用学习算法算出更多的“正确答案”。下面通过几个例子来理解它的核心思想。
例子1:预测房价(回归问题)
这里有一份从俄勒冈州的波特兰市收集的房价数据,把这些数据画出来,如下图,横轴表示房子的面积(平方英尺),纵轴表示房价(千美元)。基于这组数据,如果有一套750平方英尺的房子,想知道这房子能卖多少钱?
可以应用学习算法,对数据进行拟合,比如用一条直线来拟合这些数据,由此看出房子可以卖大约15万美元;也可以用二次函数来拟合数据可能效果会更好,看出房子可以卖出接近20万美元。
这种任务就是回归问题,回归是指试图推测连续值的属性。 在这个例子中“正确答案”是房子的实际售价。
例子2:通过查看病历来判断乳腺肿瘤是否为恶性(分类问题)
假设有一组数据,横轴表示肿瘤的大小,纵轴是1或0,1代表恶性,0代表良性。有5个良性肿瘤样本,用蓝叉表示,有5个恶性肿瘤样本,用红叉表示。现在有个尺寸已知的乳腺肿瘤,能否估算出这个肿瘤是恶性还是良性的概率?
在机器学习的问题中,会有多个特征,比如除了肿瘤尺寸外,还知道患者年龄。如下图,横轴表示肿瘤的大小,纵轴表示患者年龄。数据集可能是蓝圈表示良性,红叉表示恶性。在给定的数据集上,学习算法可能用一条直线来分离,并以此来判断良性或恶性瘤。
在机器学习的算法中,往往会有更多特征,比如肿块密度、肿瘤细胞大小的一致性、肿瘤细胞形状的一致性等其它的特征。如何处理更多甚至无穷多的特征呢?后面会讲支持向量机算法,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。
这种任务属于分类问题,目标是推测出一个离散的输出(0或1)。分类问题中,有时会有两个以上的输出值,比如:0=良性,1=第一类乳腺癌,2=第二类乳腺癌,3=第三类乳腺癌。这些离散输出值对应不同的类别,因此属于多分类问题。
四、无监督学习
在无监督学习中,我们的数据集没有标签或“正确答案”。我们不知道每个样本属于哪一类,甚至不知道应该有多少类。我们唯一拥有的只是原始的数据,算法的任务是从这些数据中自动发现结构或规律。
一个典型的无监督学习任务是聚类(Clustering)。算法试图将数据划分为若干个簇,如下图:算法可以自动识别出两个明显不同的簇(群组),即使我们事先并不知道这些簇的存在。
聚类算法的实际应用,比如:
谷歌新闻聚类
一个非常贴近生活的应用是 Google News。它每天会收集大量新闻内容,并使用聚类算法自动将相关的新闻归到一起。你看到的每一组新闻,其实是无监督学习算法将它们聚到一起的结果。
基因表达分析
聚类算法也应用在基因数据分析中。例如,我们可以对不同个体的DNA微阵列数据进行分析,试图找出是否存在某些特定的基因表达模式。虽然我们并不知道哪些人属于哪一类,但通过聚类算法,我们可以将具有相似基因表达的个体归为一类。
无监督学习及其聚类算法被广泛应用于以下领域:
- 计算机集群管理
在大数据中心,通过聚类算法自动识别哪些计算机可以协同工作,以提高效率。
- 社交网络分析
分析你常联系的人,自动将社交网络中的朋友分组,每组中的人彼此熟识。
- 市场细分(Market Segmentation)
企业可以使用顾客数据,自动将用户划分为不同的市场细分群体,进而进行更有针对性的营销。
- 天文数据分析
聚类算法也被用于分析星系形成过程,提供了很多有趣且有用的理论支持。
另一种无监督学习任务是鸡尾酒宴问题。你可以想象在一个嘈杂的鸡尾酒宴会中,有两个人同时在说话。我们在房间里放置两个麦克风,分别录下两段混合音频。任务是从这两段录音中分离出各自的说话声。这个任务同样属于无监督学习。你不知道哪个声音是谁的,只能让算法自己去从音频中“解混合”,分离出原始的音频源。