一个标记好的特征以及标签的分类成为一个样本,一组样本构成的集合称为数据集( Data Set ).一般将数据集分为两部分:训练集和测试集.训练集( Training Set )中的样本是用来训练模型的,也叫训练样本( Training Sample ),而测试集( Test Set )中的样本是用来检验模型好坏的,也叫测试样本( Test Sample ).
给定训练集 ,我们希望让计算机从一个函数集合 ℱ = { f f f1 (), f f f2 (),⋯} 中自动寻找一个“最优”的函数 f f f*() 来近似每个样本的特征向量 x x x和标签 y y y之间的真实映射关系.如何寻找函数 f f f*() 是机器学习的关键,一般需要通过学习算法(Learning Algorithm)来完成.这个寻找过程通常称为学习( Learning )或训练( Training )过程.
机器学习方法可以粗略地分为三个基本要素:模型、学习准则、优化算法.
对于一个机器学习任务,首先要确定其输入空间 x x x 和输出空间 y y y . ( x , y ) ∈ X × Y (x,y)\in X×Y (x,y)∈X×Y,假定 x x x 和 y y y 之间的关系可以通过一个未知的真实映射函数 y = g ( x ) y = g(x) y=g(x) 或真实条件概率分布 p p pr ( y ∣ x ) (y|x) (y∣x)来描述.机器学习的目标是找到一个模型来近似真实映射函数 g ( x ) g(x) g(x)或真实条件概率分布 p p pr ( y ∣ x ) (y|x) (y∣x) .
假设一个函数集合 ℱ ,称为假设空间( Hypothesis Space ),然后通过观测其在训练集 上的特性,从中选择一个理想的假设( Hypothesis ) f f f* ∈ \in ∈ ℱ.
假设空间 ℱ 通常为一个参数化的函数族: F = { f ( x ; θ ) ∣ θ ) ∈ R D } ℱ=\lbrace f(x;\theta)|\theta)\in R^D \rbrace F={f(x;θ)∣θ)∈RD}其中 f ( x ; θ ) f(x;\theta) f(x;θ)是参数为 θ \theta θ的函数,也称为模型(Model),D为参数的数量.
常见的假设空间有线性和非线性两种,对应的 f f f也分别成为线性模型和非线性模型.而非线性的模型就等价于神经网络模型.
一个好的模型 f ( x ; θ ) f(x;\theta) f(x;θ) 应该在所有 ( x , y ) (x,y) (x,y) 的可能取值上都与真实映射函数 g ( x ) g(x) g(x) 一致.模型的好坏可以通过期望风险来衡量,而期望风险是用损失函数来定义,损失函数是用来量化两个变量 y , f ( x ; θ ) y,f(x;\theta) y,f(x;θ)之间的差异的函数.常用的损失函数有:0-1损失函数、平方损失函数、交叉熵损失函数和Hinge损失函数.
风险最小化准则( Empirical Risk Minimization , ERM ):一个好的模型 f ( x ; θ ) f(x;\theta) f(x;θ) 应该有一个比较小的期望错误,但由于不知道真实的数据分布和映射函数,实际上无法计算其期望风险,给定一个训练集 我们可以计算的是经验风险,即在训练集上的平均损失.因此,一个切实可行的学习准则是找到一组参数使得经验风险最小.
过拟合( Overfitting ):经验风险最小化原则很容易导致模型在训练集上错误率很低,但是在未知数据上错误率很高.
结构风险最小化( Structure Risk Minimization , SRM )准则:为了解决过拟合问题,一般在经验风险最小化的基础上再引入参数的正则化( Regularization )来限制模型能力,使其不要过度地最小化经验风险.
和过拟合相反的一个概念是欠拟合( Underfitting ),即模型不能很好地拟合训练数据,在训练集上的错误率比较高.欠拟合一般是由于模型能力不足造成的.
在确定了训练集 、假设空间 ℱ 以及学习准则后,如何找到最优的模型 y , f ( x ; θ ) y,f(x;\theta) y,f(x;θ)就成了一个最优化( Optimization )问题.
在机器学习中,优化又可以分为参数优化和超参数优化.模型 y , f ( x ; θ ) y,f(x;\theta) y,f(x;θ) 中的 称为模型的参数,可以通过优化算法进行学习.除了可学习的参数 之外,还有一类参数是用来定义模型结构或优化策略的,这类参数叫作超参数( Hyper-Parameter ).其中超参数优化是机器学习的一个经验性很强的技术.
在机器学习中,最简单、常用的优化算法就是梯度下降法,首先初始化参数0,然后按迭代公式来计算训练集 上风险函数的最小值.针对梯度下降的优化算法,除了加正则化项之外,还可以通过提前停止来防止过拟合.
梯度下降算法分为批量梯度下降算法、随机梯度下降算法和小批量梯度下降法.
小批量随机梯度下降法有收敛快、计算开销小的优点,因此逐渐成为大规模的机器学习中的主要优化算法
线性回归( Linear Regression )是机器学习和统计学中最基础和最广泛应用的模型,是一种对自变量和因变量之间关系进行建模的回归分析.自变量数量为 1 时称为简单回归,自变量数量大于 1 时称为多元回归.
从机器学习的角度来看,自变量就是样本的特征向量 x x x,因变量是标签 y y y.假设空间是一组参数化的线性函数 f ( x ; w , b ) = w ⊤ x + b f(x;w,b) = w^ \top x+b f(x;w,b)=w⊤x+b
其中权重向量 和偏置 b b b 都是可学习的参数,函数 f ( x ; w , b ) f(x;w,b) f(x;w,b)也称为线性模型.
有四种不同的参数估计方法:经验风险最小化、结构风险最小化、最大似然估计、最大后验估计.具体参数估计方法需研读本书.
为了避免过拟合,我们经常会在模型的拟合能力和复杂度之间进行权衡.拟合能力强的模型一般复杂度会比较高,容易导致过拟合.相反,如果限制模型的复杂度,降低其拟合能力,又可能会导致欠拟合.因此,如何在模型的拟合能力和复杂度之间取得一个较好的平衡,对一个机器学习算法来讲十分重要.偏差 - 方差分解( Bias-Variance Decomposition )为我们提供了一个很好的分析和指导工具.
偏差( Bias ),是指一个模型在不同训练集上的平均性能和最优模型的差异,可以用来衡量一个模型的拟合能力.第二项是方差( Variance ),是指一个模型在不同训练集上的差异,可以用来衡量一个模型是否容易过拟合.
下面给出了机器学习模型的四种偏差和方差组合情况:
一般来说,当一个模型在训练集上的错误率比较高时,说明模型的拟合能力不够,偏差比较高.这种情况可以通过增加数据特征、提高模型复杂度、减小正则化系数等操作来改进.当模型在训练集上的错误率比较低,但验证集上的错误率比较高时,说明模型过拟合,方差比较高.这种情况可以通过降低模型复杂度、加大正则化系数、引入先验等方法来缓解.此外,还有一种有效降低方差的方法为集成模型,即通过多个高方差模型的平均来降低方差.
一般来说,我们会按照训练样本提供的信息以及反馈方式的不同,将机器学习算法分为监督学习,无监督学习和强化学习.
监督学习( Supervised Learning ):如果机器学习的目标是建模样本的特征 x x x和标签 y y y之间的关系: f ( x ; θ ) f(x;\theta) f(x;θ)或 p ( y ∣ x ; θ ) p(y|x;\theta) p(y∣x;θ),并且训练集中每个样本都有标签.根据标签类型的不同,监督学习又可以分为回归问题、分类问题和结构化学习问题.
无监督学习 Unsupervised Learning , UL )是指从不包含目标标签的训练样本中自动学习到一些有价值的信息.
强化学习( Reinforcement Learning , RL )是一类通过交互来学习的机器学习算法.
在实际应用中,数据的类型多种多样,比如文本、音频、图像、视频等.不同类型的数据,其原始特征( Raw Feature )的空间也不相同.而很多机器学习算法要求输入的样本特征是数学上可计算的,因此在机器学习之前我们需要将这些不同类型的数据转换为向量表示.
为了提高机器学习算法的能力,我们需要抽取有效、稳定的特征.传统的特征提取是通过人工方式进行的,需要大量的人工和专家知识.一个成功的机器学习系统通常需要尝试大量的特征,称为特征工程( Feature Engineering ).
如何让机器自动地学习出有效的特征也成为机器学习中的一项重要研究内容,称为特征学习( Feature Learning ),也叫表示学习( Representation Learning ).
传统的特征学习一般是通过人为地设计一些准则,然后根据这些准则来选取有效的特征,具体又可以分为两种:特征选择和特征抽取.
特征选择( Feature Selection )是选取原始特征集合的一个有效子集,使得基于这个特征子集训练出来的模型准确率最高.一种直接的特征选择方法为子集搜索( Subset Search ).常用的自己搜索方法是采用贪心的策略:由空集合开始,每一轮添加该轮最优的特征,称为前向搜索( Forward Search );或者从原始特征集合开始,每次删除最无用的特征,称为反向搜索( Backward Search ).
子集搜索方法可以分为过滤式方法和包裹式方法:
特征抽取( Feature Extraction )是构造一个新的特征空间,并将原始特征投影在新的空间中得到新的表示.
特征抽取又可以分为监督和无监督的方法:
特征选择和特征抽取的优点是可以用较少的特征来表示原始特征中的大部分相关信息,去掉噪声信息,并进而提高计算效率和减小维度灾难( Curse of Dimensionality ).
如果我们将特征的表示学习和机器学习的预测学习有机地统一到一个模型中,建立一个端到端的学习算法,就可以有效地避免它们之间准则的不一致性.这种表示学习方法称为深度学习( Deep Learning , DL ).
为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集中的每一个样本进行预测,并根据预测结果计算评价分数. 对于分类问题,常见的评价标准有准确率、精确率、召回率和 F 值等.
最常用的评价指标为准确率( Accuracy ),和准确率相对应的就是错误率( Error Rate ).准确率是所有类别整体性能的平均,如果希望对每个类都进行性能估计,就需要计算精确率( Precision )和召回率( Recall ).
基于混淆矩阵的概念下,我们可以进一步定义查准率、查全率和 F 值.
为了计算分类算法在所有类别上的总体精确率、召回率和 F1值,经常使用两种平均方法,分别称为宏平均( Macro Average )和微平均( Mi-cro Average )
交叉验证( Cross-Validation )是一种比较好的衡量机器学习模型的统计分析方法,可以有效避免划分训练集和测试集时的随机性对评价结果造成的影响.