跟着b站的视频学习:吴恩达机器学习 - Coursera Machine Learning
以及ppt和作业:up主整理的资料
1. 广泛应用的领域
- 数据挖掘:网站点击数量、医疗记录、生物学、工程学等
- 无法手动编的程序:飞机的自动驾驶、手写识别、自然语言处理、计算机视觉等
- 私人定制程序:Amazon、Netflix product recommadations的个性化推荐
- 理解人类的学习过程和大脑
2. 什么是机器学习?
Arthur Samuel(1959) 对机器学习的定义:在没有明确设置的情况下,使计算机具有学习能力的研究领域;(跳棋程序)
Tom Mitchell(1998)对学习问题定义:计算机程序从经验E中学习解决某一任务T进行某一性能度量P,通过P测定在T上的表现因经验E而提高。(用跳棋游戏的例子来说就是:经验E就是程序与自己下几万次跳棋,任务T就是玩跳棋,性能度量P就是与新对手玩跳棋时赢得概率)
3.大致分类
机器学习的最主要的两类:
- 监督学习
- 无监督学习
其他分类:强化学习和推荐系统
3.1 监督学习
我们给算法一个数据集,其中包含了正确答案。换句话说,例子1:我们给它一个房价数据集,在这个数据集中的每个样本中,我们都给出正确的价格(即这个房子实际卖价)。算法的目的就是给出更多的正确答案。比如:为你朋友想要卖掉的这所新房子给出估价。
用更专业的术语来定义:监督学习也被称作回归问题,这里的回归问题是指我们想要预测连续的数值输出,也就是价格。技术上而言,价格能够被圆整到分,因此价格实际上是一个离散值。但通常我们认为房价是一个实数、标量或是连续值。回归这个术语是指:我们设法预测连续值的属性。
例子2:根据医疗记录把良性乳腺癌和恶行乳腺癌分为0和1,画一张以肿瘤大小为横坐标、良性和恶性也就是0和1为纵坐标的图。根据已有的数据,来预测某个肿瘤大小患良性或者恶性的概率。
用更专业的术语来说,这就是一个分类问题,分类是指我们设法预测一个离散值(也就是预测离散值输出)输出0或者1,良性或恶性。实际上在分类问题中,有时你也有两个以上的可能的输出值。在实际例子中就是,可能有三种类型的乳腺癌,因此你可能要预测离散值0 1 2或3.
总结来说,在监督学习中,对数据集中的每个样本,我们想要算法预测并得出的“正确答案”。
3.2 无监督学习
在无监督学习中,我们所用的数据和之前不同,数据是没有任何标签。我们得到一个数据集,我们不知道要拿它来做什么,也不知道每个数据点究竟是什么。我们只知道这里有一个数据集,你能在其中找到某种结构吗?对于给定的数据集,无监督学习算法可能判定该数据集包含几个不同的簇,可以把这些数据分成几个不同的簇,这就是聚类算法。实际上它被用在许多地方,其中一个应用聚类算法的例子就是谷歌新闻。通俗来说,无监督学习就是没有把数据集的正确答案给算法。
无监督学习或聚类算法在其他领域也有大量的应用,它被用来组织大型的计算机集群、社交网络分析、市场细分、天文数据分析等等
聚类算法只是无监督学习中的一种,下面将介绍另外一种。
例3 鸡尾酒会问题:假设有一小群人在参加鸡尾酒会,两个人同时在讲话,两个麦克风一前一后的分别放置在两个人的前面。有研究人员记录了麦克风的声音并观察不同距离的两个人声混合的情况,把记录的声音交给一种无监督学习算法的方式叫做“鸡尾酒会算法”,让它帮你找出数据的结构。交给这个算法后,它就会去听这些录音,然后说这听起来像两个音频录音或者说被混合在一起才做出了这样的效果。此外,鸡尾酒会算法还会分离出这两个被叠加到一起或者说混合到一起的音频源。事实上,鸡尾酒会算法的第一个输出:它从一个录音中分离出了英文声音,第二个输出:它从录音中分离出了另一个声音。(听起来分离声音很难,要许多复杂的代码,但是视频里老师告诉我们,一行就够了!magic!!!这一行代码是:[W,sv] = svd((repmat(sum(x.*x,1), size(x, 1), 1).*x)*x') 在Octave中使用)Octave能让人更加快速的实现算法!因为在Octave更快的实现算法,可以先在Octave里面实现,再迁移到c++或者Java中,效率更高。在那一行代码中,svd()函数:奇异值分解的缩写。