01什么是机器学习?
Machine Learning(机器学习)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。机器学习是当今非常普遍,你可能会使用这一天几十倍而不自知。
- 回溯到50年代Samuel的定义:在进行特定编程的情况下,给予计算机学习能力的领域。他编写了一个跳棋程序,让程序与自己下了上万盘棋,进而程序渐渐明白什么是好的布局,什么是坏的布局,最终跳棋程序成为了下棋高手。
- 来自卡内基梅隆大学Tom Mitchell定义的机器学习是:一个好的学习问题定义如下,他说,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。
- 监督学习和无监督学习:监督学习是指,我们将教计算机如何去完成任务,而在无监督学习中,我们打算让它自己进行学习。
讲授学习算法就好像给你一套工具,相比于提供工具,可能更重要的,是教你如何使用这些工具。我喜欢把这比喻成学习当木匠。想象一下,某人教你如何成为一名木匠,说这是锤子,这是螺丝刀,锯子,祝你好运,再见。这种教法不好,不是吗?你拥有这些工具,但更重要的是,你要学会如何恰当地使用这些工具。会用与不会用的人之间,存在着鸿沟。尤其是知道如何使用这些机器学习算法的,与那些不知道如何使用的人。
02.监督学习
- 引例:研究收集到的一些房价数据:把这些数据画出来,横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是千美元。基于这组数据,假如朋友有一套750平方英尺房子,他想知道这房子能卖多少钱。
- 首先,我们可以通过这组数据拟合出一条直线来预测房价;根据这条直线,我们可以预测出房价为150000美元
- 其次,拟合不只可以用直线来拟合,用二次拟合效果可能会更好
可以看出,监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案”组成。
这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。
回归这个词的意思是,我们在试着推测出这一系列连续值属性。
假设你想通过查看病历来推测乳腺癌是良性还是恶性,下图中,横轴表示肿瘤的大小,纵轴上,记1和0表分别示是或者不是恶性肿瘤。之前见过的肿瘤,如果是恶性则记为1,不是恶性,或者说良性记为0。
根据机器学习估算出某个已知大小的肿瘤是恶性的或是良性的概率。这是一个分类问题。分类指的是:我们试着推测出离散的输出值,事实上在分类问题中输出可能不止两个值。如下图中列举了五个特征值。
- 处理无限个特征值的方法,可使用支持向量机算法
用无限多种特征可以使你的算法利用大量的特征或线索来预测,怎么处理无限多个特征呢?怎么存储这些特征呢?你电脑的内存肯定不够用。之后课程中会讲到支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。
小结:
I.监督学习的基本思想是:我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。
II.回归问题:即通过回归来推出一个连续的输出
小测试:
假设你经营着一家公司,你想开发学习算法来处理这两个问题:
- 你有一大批同样的货物,想象一下,你有上千件一模一样的货物等待出售,这时你想预测接下来的三个月能卖多少件?
- 你有许多客户,这时你想写一个软件来检验每一个用户的账户。对于每一个账户,你要判断它们是否曾经被盗过?
第一个问题是回归问题
第二个问题是分类问题
03 无监督学习
对于监督学习的每条数据,我们是知道训练集对应的正确答案,是良性或恶性了。不同于监督学习的数据的是,无监督学习中没有任何的标签或者是有相同的标签或者就是没标签。
针对数据集,无监督学习就能判断出数据有两个不同的聚集簇。无监督学习算法可能会把这些数据分成两个不同的簇。所以叫做聚类算法。
- 聚类算法的应用:
1.谷歌新闻每天收集成千上万的网络新闻,将这些新闻分组组成有关联的新闻。所以谷歌新闻做的就是搜索非常多的新闻事件,自动地把它们聚类到一起。
无监督学习或聚集有着大量的应用。它用于组织大型计算机集群;无监督学习也可用于天文数据分析;聚类只是无监督学习中的一种。
2.细分市场,检索顾客数据集自动地发现市场分类,自动把顾客划分到不同的细分市场。
3.鸡尾酒宴:宴会房间里满是人,同一时间每个人都在说话,假设放两个麦克风在房间中,这两个麦克风放在两个地方,因离说话人的距离不同每个麦克风记录下的声音不同,即使同样的两个说话人。听起来像是两份录音被叠加到一起,通过算法可以区分出两个音频资源,这两个可以分隔开两个录音或合并成之前的录音。
听起来似乎很复杂,但是该算法却可以通过一行代码来实现:
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’); - 要把工具灵活地用起来
当你使用正确的编程环境,许多学习算法是相当短的程序。所以,这也是为什么在本课中,我们打算使用Octave编程环境。Octave,是免费的开源软件,使用一个像Octave或Matlab的工具,许多学习算法变得只有几行代码就可实现。
小结:
无监督学习是学习策略,交给算法大量的数据,并让算法为我们从数据中找出某种结构。谷歌新闻分类的例子是无监督学习的应用,细分市场也是无监督学习的例子,判断肿瘤良性与否是监督学习的分类问题,预测房价问题也是监督学习。