- 细说机器学习:从理论到实践
- 凌峰编著
- 3875字
- 2024-12-27 23:13:41
2.1 概念与术语
机器学习是一门专业性很强的学科,是人类科学智慧的高度凝练。它大量地应用了矩阵论、统计学、计算机学科的知识,因此总会有一些晦涩难懂的术语,这些术语就像“拦路虎”一样阻碍着人们的学习进程,甚至会打击人们学习的积极性。所以,认识并理解这些术语是首先要完成的任务。本节还将介绍机器学习中常用的基本概念,从而为后续的学习打下坚实的基础。
2.1.1 统计学的基本概念
1.模型
模型是机器学习中的核心概念。机器学习的核心过程就是训练模型,然后通过模型得到预期的输出结果,并采用这个模型去执行实际的任务。
整个机器学习的过程都将围绕模型展开,通过训练出的优质模型,可以尽量精准地实现预测输出结果,这就是机器学习的目标。
2.数据集
数据集就是字面的数据集合的意思,它表示一个承载数据的集合,如果缺少了数据集,那么模型就没有存在的意义了。
数据集通常可划分为“训练集”“验证集”和“测试集”,它们分别在机器学习的“训练阶段”“验证阶段”和“预测输出阶段”起着重要的作用。
3.样本和特征
样本指的是数据集中的数据,一条数据被称为“一个样本”,通常情况下,样本会包含多个维度的值用来描述数据。
比如现在有一组描述学生的数据“11 5 男”,如果单看数据会非常茫然,但是用“特征”描述后就会变得容易理解,这3个数据分别表示“年龄 年级 性别”。
4.向量
任何一门算法都会涉及许多数学上的术语或者公式,本书也会涉及很多数学公式以及专业的术语,在这里先对常用的基本术语做简单讲解。
向量是机器学习的关键术语,向量在线性代数中有着严格的定义,向量也称欧几里得向量、几何向量、矢量,指具有大小和方向的量,可以形象地把它理解为带箭头的线段,箭头所指代表向量的方向,线段长度代表向量的大小。与向量对应的量叫作数量(物理学中称标量),数量只有大小,没有方向。
在机器学习中,模型算法的运算均基于线性代数运算法则,比如行列式、矩阵运算、线性方程等。其实对于这些运算法则学习起来并不难,它们都有着一定的运算规则,只需套用即可。在机器学习中,向量的计算可采用标准模块NumPy来实现。
5.矩阵
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自方程组的系数及常数所构成的方阵。这一概念在19世纪由英国数学家凯利(Cayley)首先提出。
矩阵是高等数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵在电路学、力学、光学和量子物理中都有应用;在计算机科学中,三维动画制作也需要用到矩阵。
矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。
在天体物理、量子力学、机器学习等领域,也会出现无穷维的矩阵,这是矩阵的一种推广。
2.1.2 拟合、过拟合和欠拟合
拟合是机器学习中的重要概念,更通俗地说,机器学习的研究目的就是让学习得到的模型能更好地拟合数据,最后可以将模型泛化到未知数据上。下面分3种情况来解释“拟合”这个词:拟合、过拟合和欠拟合。
1.拟合
可以这么理解,拟合就是把平面上一系列的点用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据选择的函数和参数的不同有很多不同的拟合方法。
常用的拟合方法有最小二乘曲线拟合法等,在MATLAB中也可以用polyfit来拟合多项式。拟合、插值以及逼近是数值分析的三大基础工具,通俗意义上它们的区别在于:拟合是已知点列,从整体上靠近它们;插值是已知点列并且完全经过点列;逼近是已知曲线或者点列,通过逼近使得构造的函数无限靠近它们。
如果待定函数是线性的,就叫线性拟合或者线性回归(主要在统计中),否则称作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下称作样条拟合。
在实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系、疾病疗效与疗程长短的关系、毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(Curve Fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两个变量间的关系。
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵采用最小二乘法来表达。
很多因素会对曲线拟合产生影响,导致拟合效果有好有坏,这里仅从某些角度出发探讨有可能改善拟合质量的情况。
(1)模型的选择:这是最主要的一个因素,试着用各种不同的模型对数据进行拟合比较。
(2)数据预处理:在拟合前对数据进行预处理也很有用,这包括对响应数据进行变换以及剔除极大值、极小值,以及有明显错误的点。
(3)合理的拟合应该具有处理出现奇异而使得预测趋于无穷大情况的能力。
(4)知道越多的系数的估计信息,拟合越容易收敛。
(5)将数据分解为几个子集,对不同的子集采用不同的曲线拟合。
(6)复杂的问题最好通过进化的方式解决,即一个问题的少量独立变量先解决,低阶问题的解通常通过近似映射作为高阶问题解的起始点。
2.过拟合
过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。
一个假设在训练数据上能够获得比其他假设更好的拟合,在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。出现这种现象的主要原因是训练数据中存在噪声或者训练数据太少。
产生过拟合的原因有很多,主要原因如下:
(1)建模样本选取有误,如样本数量太少、选样方法错误、样本标签错误等,导致选取的样本数据不足以代表预定的分类规则。
(2)样本噪声干扰过大,使得机器将部分噪声认为是特征,从而扰乱了预设的分类规则。
(3)假设的模型无法合理存在,或者说是假设成立的条件,实际并不成立。
(4)参数太多,模型复杂度过高。
(5)对于决策树模型,如果对于其生长没有合理地限制,其自由生长有可能使节点只包含单纯的事件数据或非事件数据,使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集。
(6)对于神经网络模型:对样本数据可能存在分类决策面不唯一,随着学习的进行,BP算法使权值可能收敛过于复杂的决策面;权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。
针对这些问题,目前主要有以下解决方法:
(1)在神经网络模型中,可使用权值衰减的方法,即每次迭代过程中以某个小因子降低每个权值。
(2)选取合适的停止训练标准,使对机器的训练在合适的程度。
(3)保留验证数据集,对训练成果进行验证。
(4)获取额外数据进行交叉验证。
(5)正则化,即在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
3.欠拟合
机器学习中有一个重要的话题是模型的泛化能力,泛化能力强的模型才是好模型,对于训练好的模型,若在训练集表现差,则在测试集表现同样会很差,这可能是欠拟合导致的。欠拟合是指模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
机器学习的基本问题是利用模型对数据进行拟合,学习的目的并非是对有限训练集进行正确预测,而是对未曾在训练集合出现的样本能够正确预测。模型对训练集数据的误差称为经验误差,对测试集数据的误差称为泛化误差。
模型对训练集以外样本的预测能力称为模型的泛化能力,追求这种泛化能力始终是机器学习的目标。过拟合和欠拟合是导致模型泛化能力不高的两种常见原因,都是模型学习能力与数据复杂度之间失配的结果。
“欠拟合”常常在模型学习能力较弱,而数据复杂度较高的情况下出现,此时模型由于学习能力不足,无法学习到数据集中的“一般规律”,因而导致泛化能力弱。
与之相反,“过拟合”常常在模型学习能力过强的情况下出现,此时的模型学习能力太强,以至于将训练集单个样本自身的特点都能捕捉到,并认为其是“一般规律”,同样这种情况也会导致模型泛化能力下降。
过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。
在神经网络训练的过程中,欠拟合主要表现为输出结果的高偏差,而过拟合主要表现为输出结果的高方差。
过拟合和欠拟合是所有机器学习算法都要考虑的问题,其中欠拟合的情况比较容易克服,常见的解决方法有:
(1)增加新特征,可以考虑加入特征组合、高次特征来增大假设空间。
(2)添加多项式特征,这个在机器学习算法里面用得很普遍,例如线性模型通过添加二次项或者三次项使模型泛化能力更强。
(3)减少正则化参数,正则化的目的是防止过拟合,但是模型出现了欠拟合,则需要减少正则化参数。
(4)使用非线性模型,比如核支持向量机、决策树、深度学习等模型。
(5)调整模型的容量,通常模型的容量是指其拟合各种函数的能力。
(6)容量低的模型可能很难拟合训练集,可以使用集成学习方法,如对多个弱学习器使用Bagging方法进行组合。
泛化能力是指机器学习算法对新鲜样本的适应能力,学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出。
通常期望经训练样本训练的网络具有较强的泛化能力,也就是对新输入给出合理响应的能力。应当指出并非训练的次数越多,越能得到正确的输入输出映射关系。网络的性能主要是用它的泛化能力来衡量的。