新的学习周期开启喽!在接下来的几天,我将开始学习吴恩达的机器学习课程,并将课程的主要内容整理成笔记,以便以后能够快速的检索到相关内容。
1.1 欢迎(Welcome)
本课程中,将学习先进的机器学习算法。但仅知道算法和数学含义是不够的,更应该去了解这些算法如何解决我们所关注的各种现实场景中的问题。因此,本课程中也会带领大家共同去实现一些算法,以便我们能够更好的理解算法在真实场景中的应用。
那么,为什么现在机器学习如此流行呢?首先,机器学习是从AI即人工智能(Artificial Intelligence)领域发展出来的一个领域。我们想建造智能机器,然后发现我们可以编程让机器去做一些基本的事情,比如如何找到从A到B的最短路径?但大多数情况下,我们不知道如何编写AI程序来做更有趣、更复杂的事情,比如网页搜索、相片标记、反垃圾邮件等。人们意识到,要想让机器做这些事情,唯一的方法就是机器自己去学习如何去做。因此,机器学习是计算机的一项新技能。目前,机器学习已经应用到工业和基础科学的许多领域中。
下面我们来看一下,目前机器学习的一些主要应用领域及案例:
-
数据挖掘:机器学习如此盛行的原因之一就是网络和自动化技术的发展。这就意味着,我们拥有了前所未有的大量的数据集。比如:
- 网络点击数据(又称为点击流数据):现在有很多硅谷的公司在收集网络点击数据(又称为点击流数据),并试图用机器学习算法来挖掘数据,以便能够更好地理解用户、更好地服务客户。目前,硅谷大部分的机器学习算法应用于这类场景。
- 医疗记录:随着自动化的出现,有了电子医疗记录,如果能将这些医疗记录转化为医疗知识就能更好地了解疾病。
- 计算生物学:同样得益于自动化技术,生物学家们收集了大量的关于基因序列、DNA序列等的数据。机器学习算法可以让我们更好的理解人类基因,以及身为人类意味着什么。
- 工程学:在所有工程领域,人们正在尝试运用学习算法来更好地理解越来越庞大的数据集。
-
无法手动编写的程序,下面来举几个无法通过手动编程实现的例子:
- 直升机自动驾驶。
- 手写识别:比如机器学习算法可以学习手写在信封上的地址,并可以自动规划出信件投递路线。
- 自然语言处理(Natural Language Processing,NLP)
- 计算机视觉(Computer Vision)
-
私人定制程序,比如电影、商品推荐,推荐算法可以根据不同人的喜好进行推荐,而无需为每个用户编写其对应的推荐程序。
-
理解人类学习过程和大脑
1.2 什么是机器学习?(What is machine learning)
本节课的主要内容包括:
- 什么是机器学习?
- 机器学习的主要算法类型包括哪些?
- 一些机器学习术语
- 开始了解不同的算法及其应用场景
1.2.1 机器学习定义
机器学习目前并没有一个公认的正式定义,下面我们来看两个比较典型的定义:
- Arthur Samuel(1959)认为,机器学习就是在没有明确设置的情况下,使计算机具有学习能力的研究领域。这个定义并不是很正式,并且相对比较老。
Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.
- Tom Mitchell(1998)提出,一个适当的学习问题定义为:计算机程序从经验E中学习去解决某一任务T,同时用性能度量P来记录解决过程中的性能。通过P测定,在T上的表现因经验E而提高。
Well-posed Learning Problem: A computer program is said to learn from experience E with respect to sme task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
为了更好地理解Tom Mitchell的定义,下面以反垃圾邮件为例来进行说明:
- 任务T为判断一封邮件是否标记为垃圾邮件;
- 经验E为已经标记为垃圾邮件或标记为不是垃圾邮件的历史信息;
- 性能P即为正确分类出垃圾邮件或非垃圾邮件的数量占邮件总数的比例。
1.2.2 机器学习算法分类
机器学习算法有很多种类型,目前比较常用的包含两类:
- 监督学习(Supervised Learning):简单讲就是我们来教计算机做某件事;
- 无监督学习(Unsupervised Learning):计算机需要自己去学习。
其他一些类型的机器学习问题包括强化学习(Reinforcement Learning)、推荐系统(Recommender systems)等。
学习算法就像是一组工具,与之同等重要甚至跟重要的是,如何使用这些工具。
1.3 监督学习(Supervised Learning)
监督学习:给算法输入一个数据集,并且已知正确的输出结果。算法的目的就是尽可能多的给出正确的输出结果。
监督学习问题可以细分为以下两类:
-
回归问题(Regression Problem):在这类问题中,我们想要预测的是连续的数值输出。也就是说,我们尝试用一个连续函数来拟合与输入参数对应的输出。如:房价的预测。
-
分类问题(Classification Problem):该类问题主要是预测一个离散值输出,离散值有可能是两个甚至多个。也就是说,我们尝试将输入参数映射到一个离散的分类中。如:是否的癌症的预测。
计算机如何处理无穷多的特征呢?以支持向量机算法(Support Vector Machine)为例,它就有一个灵巧的数学技巧允许计算机处理无穷多的特征。
1.4 无监督学习(Unsupervised Learning)
无监督学习:在无监督学习问题中,使用的数据集中不会有任何标签标记,我们无法预先知道数据集中数据的具体含义,也不知道要输出什么,通过学习,找到数据集中某种内在的联系,形成数据结构,或对数据进行分组。
无监督学习与监督学习不同,不会基于预测结果进行反馈校正算法。
无监督学习问题可以细分为以下两类:
-
聚类算法(Clustering Algorithm):根据给定数据集中变量的内部关联,能够将数据分成不同的组。
-
非聚类问题:如鸡尾酒会算法。
Octave(与Matlab类似):免费开源软件,可以通过几行代码实现看起来很复杂的算法。在硅谷,很多机器学习算法都是先用Octave建立软件原型,只有验证算法能够很好的工作后,才会将算法移至到其他语言的编译环境中。因为这个软件内置了很多函数,实现这些算法的速度非常快。
SVD(Singular Value Decomposition)函数即奇异值分解的缩写。这个函数已经作为线性代数的常用函数内置到了Octave软件中。
网友评论