Introduction
之前有次出去开会的时候,一个清华的博士师兄说这本书他读了好几遍,里面的题也都自己做了。想想,这本书在我手里三年多,却一直被拿起又放下,没能好好地读一读。这次,想重新开始,从头到尾把这本书看一遍。好书若是就此被遗忘了,将是一件遗憾之事。
1.模式识别与机器学习
模式识别关注的是应用算法自动地去发现数据中隐藏的规律,然后进一步基于所发现的规律采取一些行动。以下图中经典的识别手写数字问题为例,
我们需要建立一个model(模型),简单地说就是一个数学上的映射函数
y
=
f
(
x
)
y=f(x)
y=f(x),它的输入
x
x
x是一张承载了手写数字的图片,输出
y
y
y是该图片所对应的数字。也许,你可能想这样非常麻烦,为什么不直接指定一些规则呢,比如0就是图片中有一个圈,1就是图片中有一条竖线,如此…其实这样未尝不可,只不过考虑到人的手写风格以及一些其他因素,这样做规则会指数级别(我这里只是为了强调规则库的巨大,用词并不严谨)增长,而且就算如此,也有规则覆盖不了的情况。所以更好的做法,还是借助机器学习来获得函数
f
(
x
)
f(x)
f(x)的参数,也就是隐藏在这些图片背后的规律。有了这些规律,我们可以进行的进一步行动就是,利用学得的这个model用于预测,也就是判断新的手写数字图片对应的数字类别。
2.一些概念
上面那个例子涉及到了机器学习里的一些基本概念:training set(训练集),test set(测试集),generalization(泛化能力),pre-process(预处理),feature extraction(特征抽取)等。
-
数据方面
*training set: 用于学习模型参数的数据样本集合 T = { ( x i , y i ) ∣ i = 1 , 2 , 3 , . . . , N } T = \{(x_i,y_i)| i={1,2,3,...,N}\} T={(xi,yi)∣i=1,2,3,...,N}。比如为了学得 f ( x ) f(x) f(x)的参数,我们需要首先提供一些带了数字类别标志的图片 T T T。
*test set: 就是用于评估所学得的model效果的数据集合了,也就是我们后续给这个识别模型的手写数字图片。 -
其他
*generalization: 模型 f ( x ) f(x) f(x)在测试集上的表现,也就是模型能正确识别那些未在训练集中出现过的新样本(test set)的能力。
*pre-process or feature extraction: 实际上在做机器学习时,通常我们喂给model的数据是经过处理转化的。如在手写数字识别中,原始的数据是一张图片,而 x x x则可能是一个向量,它的每一个纬度对应着原始图片的一个像素点的像素值。这个预处理过程也称特征抽取。也就是变换变量空间。
*dimensionality reduction (维度约减) : 变换后的变量空间维度少于原始变量的空间维度。需要注意的是,很多时候维度约减所伴随的信息丢失问题会影响最终算法的精度,也就是模型的表现。
3.机器学习方式
手写识别数字问题的建模学习属于监督学习范畴,并且属于其中的分类问题,其目的在于正确判定图片样本所属的数字类别(正确分类样本),简单地说其中的
y
y
y是离散变量 。若
y
y
y为连续变量,对应的问题便是回归问题了,比如预测房价问题就是一个回归问题。
除监督学习外,机器学习还包括无监督学习,半监督学习,强化学习。其中无监督学习中,training set是不含 y y y的,也就是只有一堆无标签的样本数据。无监督学习包括密度估计(估计给定空间中数据分布情况)、聚类(识别相似数据群体)等。这里暂时不对半监督和强化学习做更多的补充。