机器学习 (Machine Learning)
定义:
是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数。并最终对数据进行预测和分析的一门学科。
-
二分类问题的基本解决思路:
(1)建立假设模型(可理解为函数)。即建立一条直线,表达式为y=f(x)=W1x + W0。
则通过确定模型参数W1与W0的取值,就可以确定函数的具体位置。
(2)训练模型。利用已明确分类结果的样本数据集(称为训练集)进行训练,即函数参数的求解过程。得到参数W1与W0的最终取值,则得到最终的训练模型。
(3)进行分类判别。利用训练好的模型对待分类的数据进行分类判别,得出其属于哪一类。 -
多类分类问题可分为二类分类问题进行解决。除了直线也可用曲线进行分类,效果更好。在高维空间中可用曲面进行分类,但过程类似。
深度学习(Deep Learning)
定义:
一种实现机器学习的技术,是机器学习的重要分支。
源于人工神经网络的研究,深度学习的模型结构是一种含多隐藏层的神经网络。
通过组合低层特征形成更加抽象的高层特征。
通过一个例子了解机器学习中,简单线性分类器与深度学习的区别:
简单分类器是通过加权计算的方式,w1,w2,w3,w4为各分量x的权重。
通过线性模型y=f(w1x1+w2x2+w3x3+w4x4),若括号里的结果大于等于阈值,则输出1,反之则输出0。
同样的问题如果用深度学习方法,通常是在线性模型中间加入中间层。其中参数U表示从输入层结点到中间层结点之间连线的权重。
公式与线性分类器相似,但是这样的特点是经过中间层,可有效的组合底层特征形成高层特征,减少了特征值数量。
深度学习中往往包含多个中间层(隐藏层),且网络结构更复杂一些。
机器学习VS深度学习
机器学习需要人工选取特征
深度学习会自动学习有用特征
数据集及其拆分
1、数据集:
经典的鸢尾花iris数据集,存储为二维表形式,每个样本具有花萼长度、花萼宽度、花瓣长度和花瓣宽度的4个特征,还有1个类别标签。
类别标签的标注
ground truth:可翻译为地面实况等。在机器学习领域一般用于表示真实值、标准答案等,表示通过直接观察收集到的真实结果。
gold standard:可翻译为金标准。医学上一般指诊断疾病公认的最可靠的方法。
- 在机器学习领域,更倾向于使用ground truth。如果用gold standard 这个词则表示其可以很好地代表ground truth。
有监督学习
在训练过程中,需要利用样本数据的标注结果,如类别标签等。
用已知某种或某些特性的样本作为训练集,以建立一个数学模型,再用已建立的模型来预测未知样本,此种方法被称为有监督学习,是最常用的一种机器学习方法。是从标签化训练数据集中推断出模型的机器学习任务。
为了获得有监督学习中样本的真实分类标签(classification label)或者真实目标值(target value),某些情况下,可以采用人工专家标注的方法获得。
有监督学习是从有正确答案的样本集合中学习,即每个样本的分类标签(classification label)或者目标值(target value)已知。
有监督学习中样本的ground truth指的是每个样本的真实分类标签(classification label)或者真实目标值(target value)。
问:有监督学习的定义最关键的是什么呢?
从标签化的训练数据集中推断出模型机器学习任务
前面都是废话,没有用,最关键的要看的就是:从标签化的训练数据集中推断出模型机器学习任务
问:什么是标签?
比如说有一张猫的图片,我们都知道它是只猫,但是计算机不知道它是只猫,怎么办呢?给这张图片打上个标签,然后计算机就知道它是只猫了,后面计算机根据这个标签对所有的猫进行学习就能通过这一只猫认识所有的猫了。
给数据打标签,其实就是告诉计算机,前面这么多特征(x1 ~ xn)到底描述的是什么。很自然的就是Y,Y可以称之为Label,也可以称之为Target(我们的目标值)
我们接到一个任务或者说模型,首先要定义一个目标,这个目标对应的是谁?我们的目标要对这个任务进行合理的建模和预测,也就是说我们的目标在进行预测的时候有一个对应的y的值的话,x1第一个特征,xn第n个特征,矩阵一般是有m行n列的这样一个矩阵,所以我们一般去写的时候,这个数据集中一般会有m条观测值以及n列的这样一个特征。
然后最终会有一个目标值的y,如果有y,我们就称之为有监督学习,我们就要使用有监督学习进行模型的构建,实际上我们在日常的业务当中能够多使用有监督学习就多使用有监督学习,比如说在有x1,x2,x3,⋯,xn以及y的情况下就老老实实用有监督学习了,就别用无监督学习。
- 有监督学习中数据通常分成训练集和测试集两部分:
训练集(training set):用来训练模型,既被用来学习得到系统的参数取值。(训练得到模型)
测试集(testing set):用于最终报告模型的评价结果,因此在训练阶段测试集中的样本应该是unseen的。
有时对训练集作进一步划分为训练集和验证集(validation set)。验证集与测试集类似,也是用于评估模型的性能。区别是验证集主要用于模型选择和调整超参数,因而一般不用于报告最终结果。
2、拆分训练集测试集
方法一——留出法(Hold-Out Method)
步骤:
- 将数据随机分为两组,一组为训练集,一组为测试集。
- 利用训练集训练分类器,然后利用测试集评估模型,记录最后的分类准确率为此分类器的性能指标。
评价:
优点:简单。缺点:测试集上的预测性能高低与数据集拆分情况有关,所以基于这种数据拆分基础上的性能评价结果不够稳定。
方法二——K折交叉认证
步骤:
- 数据集被分成K份(K通常取5或者10)
- 不重复地每次取其中一份做测试集,用其他K-1份做训练集训练,这样会得到K个评价模型。
- 将上述步骤2中的K次评价的性能均值作为最后评价结果
评价:
K折交叉验证的上述做法有助于提高评估结果的稳定性。
下图是5折交叉验证示意图:
分层抽样策略(Stratified k-fold)
在拆分时有时还需要考虑拆分以后不同类别的比例问题。
- 将数据集划分成K份,特点在于,划分的K份中,每一份内各个类别数据的比例和原始数据集中各个类别的比例相同。
用网格搜索来调超参数
超参数:
指在学习过程之前需要设置其值的一些变量,而不是通过训练得到的参数数据。如深度学习中的学习速率等就是超参数。
网格搜索:
- 假设模型中有2个超参数:A和B。A的可能取值为{a1, a2, a3},B的可能取值为连续的,如在区间[0-1]。由于B值为连续,通常进行离散化,如变为{0, 0.25, 0.5, 0.75, 1.0}。
- 如果使用网格搜索,就是尝试各种可能的{A, B}对值,找到能使的模型取得最高性能的{A, B}值对。
如下图,就一共有3*5=15对值。
网格搜索与K折交叉验证相结合,找到使模型取得最高性能的超参数的取值对
网格搜索与K折交叉验证结合调整超参数的具体步骤:
- 确定评价标准;
- 对于超参数取值的每种组合,在训练集上使用交叉验证的方法求得其K次评价的性能均值;
- 最后,比较哪种超参数取值组合的性能最好,从而得到最优超参数的取值组合。
进一步的,用最优超参数的取值组合训练模型,并在测试集上进行最终模型的性能评价,报告最终结果。