机器学习术语
机器学习基本概念
机器学习就是通过大量的现有数据,对模型进行训练,训练后的模型在遇到新的数据时,就可以对结果进行预测,通过预测的结果就可以知道模型的准确性,然后我们再不断调整模型参数提高模型准确率,当模型足够准确时,就可以用来根据数据预测结果。这就是机器学习这门学问的基本研究方法。
在正式学习机器学习前,首先需要了解机器学习中的常见术语,下面我们以表格中的数据作为机器学习分析的数据,对机器学习涉及的术语进行介绍。
下面的表格中的数据有学生的学习时间(单位:小时)、考试成绩(100分满分)、考试是否通过(0:未通过,1:通过)这三类数据,我们认为学习时间是考试成绩和通过考试的决定因素,因此我们对学习时间和考试成绩的关系,以及学习时间和考试是否通过的关系进行研究。我们通过学习时间和考试成绩的数据,对机器学习模型进行训练,然后得到学习时间和考试成绩的关系,这就是机器学习的过程,接下来我们也会使用这组数据对机器学习模型进行训练,在这之前,我们先了解一些机器学习的基本术语和概念。
下面的表格中是我们人为产生的这样一组学习时间与考试成绩的数据,以这组数据为例我们介绍机器学习的一些基本术语和方法。
下面以上述表格的数据为例,介绍机器学习中常用的一些术语:
数据集(data set):上述表格中记录数据的集合k就是数据集。
样本(sampel):数据集中的一行,反映了一个对象的表现和性质,称为一个样本。
样例(example):拥有了标签信息的样本称为样例。
特征(feature):上述表格中的学习时间决定了考试成绩和考试是否通过,这种自变量我们称为特征。
标签(label):上述表格中的考试成绩和考试是否通过是因变量,其由学习时间决定的,称为标签。
特征值(feature value):表中学习时间2小时、3小时就是特征值。
特征空间(feture space):由特征组成的空间称为特征空间,例如这里因为只有一个自变量,即一个特征,那么特征组成的空间为一维的特征空间。
特征向量(feture vector):把一个样本的特征称为特征向量,这里比如第一个样本的特征向量为(0.5),为一维的向量。
样本维数(dimensionality):样本特征空间的维数。
标签空间(label space):所有样本的标签组成的空间。
学习(learning)或训练(training):从数据中学得模型的过程,称为学习或训练。
训练数据(training data):训练过程中使用的数据。
训练样本(training sample):训练数据中的每个样本称为训练样本。
训练集(training set):训练样本组成的集合。
分类(classification):例如上述表格中数据的考试是否通过就是一个分类问题。我们对模型进行训练,然后根据学习时间对考试是否通过进行预测。
回归(regression):上述表格中考试成绩就是回归问题,因为预测的值是连续的分数。
测试(testing):训练得到模型后,使用模型进行预测的过程称为测试。
测试样本(testing example):被用来测试的样本称为测试样本。
聚类(clustering):比如将上面的学习时间数据按照学习时间,不管标签数据只关系特征数据,进行分类,就成为聚类。
簇(cluster):上述聚类得到的每一个组称为簇。
监督学习(supervised learing):训练集拥有标签信息,根据特征和标签进行训练,称为监督学习。
无监督学习(unsupervised learning):没有标签数据,根据特征进行聚类称为无监督学习。
泛化(generalization)能力:学得的模型适用于新样本的能力。
线性回归模型(Linear Regression)
- 线性回归模型概念
线性回归模型虽然模型简单,但是蕴含着机器学习的一些基本思想,许多更复杂的非线性模型可在线性模型的基础上通过引入高维映射而得到的。因此以线性回归作为机器学习的入门再合适不过了,线性回归是指通过训练,学得一个线性模型,这个模型能够通过输入的特征尽可能准确地预测输出标签。该线性模型用公式可以表示为:
公式中,向量 ,
为d维的特征数据,即该数据集有d个特征,我们可以通过这d个特征学习得到一个上述公式所示的线性模型,学习的目的即获得
和
的值。然后输入新的特征数据,我们根据该模型就可以预测标签值。
如何学习获得 和
的值呢?这里我们就要考虑衡量回归模型准确性的指标——均方误差,均方误差是回归任务中最常用的性能度量,均方误差可由下式表示:
式中, 表示由第i组特征数据根据模型得到的预测标签值,
表示第i组的实际标签值。模型训练的目的就是,获得的一组值,在这组值下,模型对于训练集的特征数据预测的标签值与实际标签值的均方误差最小。
线性回归模型,主要用于线性相关的特征和标签,比如前文表格中的学习时间和考试成绩就可以认为存在线性关系,使用线性回归模型就可以根据学习时间预测考试成绩。
- 线性回归实践
上面纯文字+公式的描述可能不是很好理解,下面我们就以前文表格中的数据为例进行线性回归模型训练,我们表格中的特征数据只有1维,因此我们训练模型可以表示为:
式中的 可以认为是表格中的一个学习时间值,根据训练得到的线性回归模型我们可以得到预测的考试成绩
。那么我们训练的目的就是获得
和
的值,并且在这组
和
的值下,使得均方误差最小。
首先我们将表格中的数据存入DataFrame类型数据中,便于后续的计算。
在训练线性回归模型之前,我们先确定学习时间和考试成绩之间是否为线性的相关关系,为比较强的线性关系才能使用线性回归模型进行预测,线性关系可以通过查看学习时间和考试成绩的相关系数来判断。
可以看到学习时间和考试分数的相关系数为0.899,可以认为这两组数据为强相关的,可以使用线性模型进行考试分数的预测。我们也可以把这两组数据绘制出来如下图所示,可以看出有很强的线性关系。
接下来从数据集中随机抽取80%的数据作为训练集,进行模型的训练,剩下的20%的数据作为测试集,用于验证模型的准确性。(注意:这里训练数据和测试数据的抽取方法叫做留出法,还有交叉验证法和自助法,其实对于这里数据量比较小的数据集,适合使用自助法。考虑到方便性,我使用了留出法。以上提到的几种训练集和测试集的产生方法,可以在周志华的《机器学习》种2.2节查看具体介绍)
接下来导入sklearn机器学习包中的线性回归模型,如果import导入失败,可能是因为你没有安装,安装方法可以查看这篇文章的介绍:
大眼哥:python数据分析之利器介绍zhuanlan.zhihu.com
导入包之后进行模型的训练:
训练的目的就是得到本小节开头的线性回归模型中的a和b的值,从训练得到的模型中提取出a和b的值。
根据a和b的值,我们可以绘制出,训练得到的线性拟合曲线和训练数据。
可以看到拟合曲线大致符合训练数据的走向,训练得到的拟合线满足训练数据和预测数据的均方误差最小,即训练数据到预测数据的欧式距离之和最小,满足均方误差最小条件的拟合曲线称为最佳拟合线。
接下来我们通过测试集,对模型进行的准确性进行评估。我们一般使用决定系数 评估线性模型的准确性,决定系数的值在0~1之间,其值越大表示模型的准确性越高,决定系数的计算公式如下图所示(图片来源:决定系数(拟合优度)的相关概念_轩辕小子_新浪博客)
利用测试集计算得到的决定系数如下,我们可以看到通过测试集计算得到的决定系数的值接近0.9,说明模型的准确性非常高。
模型的准确性真的很高吗?会不会因为我们取得的测试集数据刚好离拟合曲线比较近,所以我们得到的决定系数的值接近1,根据图片中决定系数公式我们也可以发现,如果实际值和拟合值如果比较接近,那么决定系数的值也会接近于1。
那么我们来验证一下这个想法,首先我们绘制出这一次训练和评估模型所用的训练集、测试集和拟合曲线。如下图,可以看出拟合曲线确实非常接近测试集,所以测试集并没有真正反映模型的准确性。
如果刚好测试集离拟合曲线比较远呢?这时是不是决定系数的值就非常小呢,我们来试验一下。如下,测试集离拟合曲线距离较远,所以决定系数的值偏小,没有准确反映模型的准确性
那么如何避免决定系数不准确这种情况呢?1. 我们可以采用多次随机取出训练集和测试集,分别进行训练,计算多次训练得到模型的决定系数的平均值,来评估模型准确性。2. 采用前文提到的其他取出测试集和训练集的方法。