首先我们要知道,机器学习是一种算法,那么这是一种怎么样的算法呢。
资料上对机器学习的定义是这样的,算法A(algorithm)利用模型E(edge),解决特定的实际问题得到结P(performance),并利用结果P改进模型E,进而更好的解决特定实际问题。
机器学习的基础是大量的数据,这些数据通过算法构建出模型并对模型进行评估,评估的性能如果达到要求就拿这个模型来测试其他的数据,如果达不到要求就要根据这一次的结果调整算法来重新建立模型,再次进行评估,如此循环往复,最终获得满意的经验来处理其他的数据。 通俗讲就是,用自身测试的结果去改善自身。
数据集(data set):所有数据的集合。
样本(sample):数据集中的某一个数据。
属性(attribute):反映实践在某方面表现得或性质的事项,属性的取值称为属性值(attribute value)。属性张成的空间称为属性空间(attribute space),也称样本空间(sample space)或输入空间。
特征(feature):定义同属性。
特征向量(feature vector):在样本空间中,每个样本的每个特征都有一个特定的取值,这些取值转化为坐标就对应着样本空间中的一个点,也就是每个样本都对应着样本空间中的一个点,我们将这个点的坐标向量成为特征向量。
学习(learning),训练(training):从数据中学得模型的算法,有时我们也将模型成为学习器。
我们通过训练数据集是否拥有标志信息,将学习任务分为:监督学习(supervised learning),无监督学习(unsupervised learning)两类,通俗的讲,也就是说我们有没有一些人为的“输入”,这些输入包括我们要求的目标和特征,如果有,训练模型时,就可以按照我们要求的目标和特征来进行监督,这也就是所谓的监督学习。而对于无监督学习,没有给定一个人为的数据分类,需要根据样本间的相似性对样本集进行分类试图使类内差距最小化,类间差距最大化。在我们的实际应用中,不少情况下无法预先知道样本的标签,也就没有训练样本对应的类别,这时候就需要使用无监督学习来进行模型的建立。
拿西瓜书中的西瓜为例。当我们知道什么样的瓜是好瓜,比如说颜色为乌黑,敲击发出浊响的瓜为好瓜,那么此时我们就可以采用监督学习。如果我们不知道什么样子的瓜为好瓜,需要通过学习的过程来获得一类可能为好瓜的瓜的特征,那么我们就需要采用无监督学习。
监督学习主要分为分类(classification)和回归(regression)两类。
区别两种类别最简单的说法就是:分类是获得的结果是离散的,把数据明确分为几类,比如说我们把瓜分为好瓜和坏瓜;回归是的结果是连续的,相当于得出的结果是一个估值,是属于一个连续的实数集的比如说我们把西瓜的好吃程度给一个评分,0.9 0.7这样。
其中一个小补充,分类按照分出的类数可分为二分类和多分类问题,这很好理解,就不做赘述。
无监督学习中最具代表性的就是聚类(clustering),我们将数据集分为若干个组,这些组通常叫做簇(cluster)。这些自动形成的簇可能存在一些潜在的内部联系,但这些联系是我们事先不知道的。个人认为无监督学习在未来实际应用中会有更广阔的应用,因为他可以更深入的挖掘数据,并发掘其内在联系。
我们通常会设置测试集和测试样本,来对模型的优劣程度进行测试(testing)。
在这里还有一个概念,就是模型的泛化(generalization)能力,也就是指一个模型适用于整个样本空间的能力,强泛化模型甚至可以适用于整个样本空间,一般来讲,我们从样本空间获取的信息量越大,在同一算法下得到的模型泛化能力就越强。
假设空间(hypothesis space)的定义很简单,就是我们在这个问题中可能会遇到的全部情况,下面就是一个例子,图中的*表示任意情况,或者说是未确定,我们一般时候进行学习时,就会对这个假设空间进行不同方式的搜索,最终得到想要的结果。
对于这样一个西瓜数据集,我们给出如下假设空间:
在这里我们还要说几个逻辑上的概念,大家以前学习数学时候应该已经覆盖到了,再次明确一下,以方便后面的学习:归纳(induction):由特殊到一般。演绎(deduction):由一般到特殊。我们所谓的学习就是一个归纳过程,而测试则是一个演绎的过程。
其中,归纳有广义和狭义之分,广义上的归纳是指从样本中学习,而狭义上的归纳则是要从样本中获得一个概念,这个概念也就是我们所说的,我们需要的特征或者是我们学习的一个标签或者目标。我们通常把这样的归纳叫做概念学习,其中最基本的就是布尔概念学习,即对是或不是,进行一个0/1的划分,比如西瓜的成熟与不成熟。
在假设空间的基础上,我们提出一个版本空间(version space)的概念,也就是所有可能的特征值猜测所组成的这样一个空间。比如在上面这个数据集中,我们可以看到,好瓜都是蜷缩浊响,但好瓜的颜色不尽相同我们就不妨给出这样一个猜测。但是我们每一个确定下来的猜测又只是猜测,他也有可能是错的,所以我们依次把自己的每一项确定下来的操作改成不确定,就又构成了一猜测,这样的过程,就是我们上面提到的泛化,将训练集的规律推广到整个数据集。最终要满足的条件是:假设空间里面所有的假设,应该和该数据集满足条件的所有可能一一对应,也就是说每一个假设对于数据集的每个数据都要成立,而数据集每一种可能的假设都不应该被遗漏。
归纳偏好(inductive bias),是指机器学习算法在学习过程中对某种类型假设的偏好,这也是我们设计机器学习算法的一个关键,大多数时候直接决定了算法能否取得好的性能。下面我们就通过一个例子来明确,在上述的版本空间里,例如(色泽=青绿,根蒂=蜷缩,敲声=沉闷)的新瓜,如果采用(色泽=?,根蒂=蜷缩,敲声=?)这个假设进行判断,这新瓜就是好瓜;但是采用(色泽=?,根蒂=?,敲声=浊响)这个假设判断,这新瓜就是坏瓜。那么,我们应该采用哪一个模型呢?对于一个具体的学习算法而言,它必须要选择一个模型,这也就是学习算法本身的"偏好"。任何一个有效的机器学习算法必有其归纳偏好,否则它将被假设空间中看似在训练集上"等效"的假设所迷惑,无法产生确定的学习结果。
在归纳偏好的理论中,需要介绍一个很重要的定理,即是没有免费午餐定理(No Free Lunch,简称NFL)该定理的结论是,在所有目标函数求平均,预先经验求平均的前提下,由于对所有可能函数的相互补偿,最优化算法的性能是等价的。按照定理,没有任何其他算法能够比搜索空间的线性列举或者纯随机搜索算法更优,这看起来直接否定了机器学习存在的意义和价值,也不符合我们的常识。但是我们要注意的一点是,NFL成立的前提是对一切问题平均对待,而我们每一个数据集的实际情况并不是这样,每个数据集既然是有规律的,那就一定存在着特定的分布,就不存在绝对的平均。也就是说在特定的条件下,机器学习算法一定是优于随机搜索算法的,但是同时,也没有绝对普适的学习算法,在某些问题上表现出色的算法,也许在另一些问题上就不尽如人意,学习算法自身归纳的偏好与问题是否匹配,往往会对其表现起到决定性的作用。
补充:没有免费午餐定理的数学解释:所谓的“平均”表示的是各个假设的先验概率,当先验概率相同时则为“平均”,但现实中基本没有各个假设先验概率相同的情况,故我们说免费午餐定理是一种极端的假设,现实中并不会达到其所描述的平均,这也就是为什么我们的机器学习算法依然实用有效
这一块包括发展历程,应用前景等等,西瓜书讲的很详细,我即使多写也是全盘照搬,就不多赘述。当然不代表这一块的知识不重要,他很重要,我们只有了解了其发展历史和应用前景,才能更好深入学习,并且把我们的所学转化为生产力。
1.周志华《机器学习》(西瓜书)
2.b站视频 机器学习西瓜书白话解读: https://www.bilibili.com/video/BV17J411C7zZ?p=2
3.有监督学习和无监督学习的区别:https://blog.csdn.net/u010947534/article/details/82025794
4.百度百科:没有免费午餐原理