2020camp第二章非参数回归课程(上)

    技术2023-05-24  96

    非参数回归课程(上)

    validation

    最佳的数据分类情况是把数据集分为三部分,分别为:训练集(train set),验证集(validation set)和测试集(test set)。

    验证集和测试集有什么区别呢?

    两者的主要区别是:验证集用于进一步确定模型中的超参数(例如正则项系数、ANN中隐含层的节点个数等)而测试集只是用于评估模型的精确度(即泛化能力)!

    【解释:应该在验证集上调整参数,而不是验证集。泛化能力指证明测试集在新样本上的表现】

    举个例子:假设建立一个BP神经网络,对于隐含层的节点数目,我们并没有很好的方法去确定。此时,一般将节点数设定为某一具体的值,通过训练集训练出相应的参数后,再由交叉验证集去检测该模型的误差;然后再改变节点数,重复上述过程,直到交叉验证误差最小。此时的节点数可以认为是最优节点数,即该节点数(这个参数)是通过交叉验证集得到的。而测试集是在确定了所有参数之后,根据测试误差来评判这个学习模型的;也可以说是用来评估模型的泛化能力。所以,验证集主要主要是用于模型的调参。这种技术的一个要点是在得到最终模型前不能以任何方式分析或使用测试集。一个常见错误是在效果评估后重新调整模型然后再次训练评估。

    validation type and principle

    hold-out validation

    complete cross-validation

    cross validation

    k-fold cross-validation

    txk-fold cross validation

    leave one out (实验中使用的验证方式)

    数据集的大小为𝓁,那么用𝓁 -1条数据进行训练,用剩下的一条数据作为验证。这个操作重复𝓁遍,即每一条数据都要被用做验证一次。最后对验证误差求平均。

    留一法适用于小数据集,因为对于小数据集来说,数据本来就少,再被划分出去一部分,可用于训练的数据就更少了。

    (留坑)

    Similarity-based classfication and regression

    X为对象集:𝑋𝓁 = {𝑥1,…,𝑥𝑛},Y为输出集,训练集T:𝑇𝓁 = (𝑥1,𝑦1 ,…,(𝑥𝓁,𝑦𝓁)}

    基于相似性的判别重点在于利用对象集的主属性对对象进行判别,并将判别结果输出到Y。

    比如进行一个是否为狗的测试:输入狗和人,分别从外貌、叫声等方面判断是否是狗,输入狗的由于各项属性都符合狗的属性值,所以判断可能是狗;输入为人的相反。

    狗的测试例子中,主属性为外貌、叫声等;判断是“各项属性是否都符合狗的属性值”用的是相似性的概念;用到了逻辑判别器(是、否)来分类。

    这个过程的主要思想就是:给定一个对象,应该根据此对象和已知对象的相似性给此对象找一个类。这个可以通过基于案例的类比推理或者懒惰学习来实现。

    One nearst neighbor

    这个概念包括要讲到的kNN都是对“相似性”定义的公式化。“相似性”的度量采用对象之间的距离𝜌( 𝑥,𝑦)来完成。关于距离的计算有很多种不同的度量方法

    1NN (One nearst neighbor)即使用距离最近的一个邻居进行分类判断。(想象楚河汉界两边分别分布着两种不同颜色的棋子,而有一个不知颜色的棋子落在了楚河汉界的未知区域,要判断这个棋子的颜色,1NN的思想在于去找离它最近的棋子,然后根据那个棋子的颜色判断未知棋子的颜色)

    𝑢(未知棋子);𝑥(𝑢,1)(离它最近棋子):𝑥 (𝑢,1) = argmin𝑥∈𝑋𝓁𝜌( 𝑢,𝑥)

    分类过程:𝑎 (𝑢,𝑇𝓁 )= 𝑦(𝑥( 𝑢,1)) .指离它最近棋子的颜色(𝑦(𝑥( 𝑢,1))),就是此未知棋子判别出的颜色(𝑎 (𝑢,𝑇𝓁 ))。

    但是由于1NN只找一个邻居,太过敏感、太过低效等原因,一般不用。

    【重点】【实验相关】kNN和超参微调

    kNN:通过计算新对象与训练对象特征值之间的距离,然后选取K(K>=1)个距离最近的邻居进行分类判断。(也就是说,计算的是新对象𝑢和𝓁个训练对象间的距离,计算完排序,最后选取k个来进行计算{分为𝓁小于k和𝓁大于k两种情况,当𝓁小于k时𝓁个训练对象全部选用})

    kNN思路非常简单直观:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

    选择一个距离度量方法𝜌.

    将训练对象由近到远排序好𝜌( 𝑢,𝑥( 𝑢,1 ))≤𝜌( 𝑢,𝑥( 𝑢,2 ))≤ ⋯ ≤𝜌( 𝑢,𝑥( 𝑢, 𝓁 )) .

    kNN算法:

    ******kNN的不足:1)当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数,即输入新数据都判断为大容量样本了。 2)计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。

    超参微调:模型参数指的是模型内部的配置变量,可以用数据估计得到,比如线性或逻辑回归中的系数,人工神经网络中的权重等。模型参数指的是模型外部的配置变量,不可以用数据估计得到,比如kNN中的k,训练神经网络时使用的学习速率,总之,模型参数是从数据中自动估计的,而模型超参数是手动设置的,并用于估计模型参数的过程。

    注意不能在测试集上选择超参数,因为这种情况,超参数只作用于测试集而不是整体。需要将训练集分成训练、测试、验证子集。训练子集学习参数,验证子集用来微调超参,测试子集测试最后的效果。

    ****这里有个基于LOO(留一法)的k参数的优化,大意为当定义一个k值候选集时,使用留一交叉验证法去找到最好的k值(超参)。

    Processed: 0.012, SQL: 9