过拟合是无法彻底避免的
测试集:测试学习机对新样本的判别能力,以测试误差作为泛化误差的近似,测试集与训练集应该互斥。
将数据集 D D D 划分为两个互斥的集合,一个作为训练集 S S S,一个作为测试集 T T T。
将数据集 D D D 划分为 k k k 个大小相似互斥的子集,每个子集 D i D_i Di 都尽可能保持数据分布的一致性(分层采样得到),然后每次用 k − 1 k-1 k−1 个子集的并集作为训练集,余下的那个作为测试集,于是就得到了 k k k 组训练/测试集,从而进行 k k k 次训练测试,最终返回 k k k 结果的均值。该方法也被称为 " k k k 折交叉验证 “(k-fold cross valication)。为了提高测试的稳定和准确度,与留出法一样,交叉验证法要重复 p p p 次,因此称为 " p p p 次 k k k 折交叉验证”。
如果将 D D D 中的 m m m 个样本分为 m m m 份即 m m m 折交叉验证,那么就得到了留一法(Leave-Out-Out或LOO)。留一法不受随机样本划分的影响,且留一法评估比较准确,但是留一法的开销巨大,特别是当 D D D 很大时,且留一法的结果未必比其他方法更加准确。
给定包含 m m m 个样本的数据集 D D D,每次从 D D D 中挑选一个样本,将其拷贝到 D ′ D' D′,然后将该样本放入原本的数据集 D D D 中,重复 m m m 次之后我们就得到包含 m m m 个数据的训练样本 D ′ D' D′(存在重复的数据), D D D \ D ′ D' D′ 作为测试集。
优点:减少训练样本规模不同造成的影响,还能比较高效的进行试验估计。自助法在数据集较小、难以有效区分训练/测试集时很有用。但是自助法改变了数据原有的分布,引入估计偏差
初始数据量足够时,留出法和交叉验证法更常用
现实中调参是对每个参数选定一个范围和变化步长。
注意在学习算法和参数均已选定之后需要用 m m m 个数据重新训练模型,这才是最终模型。
通常将实际测试时遇到的数据称为测试数据,为了加以区分,我们将模型评估选择中的测试集 T T T 称为验证集。
什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求
(PS:下面公式均不对概率密度的描述进行总结)
常用度量方式:均方误差 E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^2 E(f;D)=m1i=1∑m(f(xi)−yi)2
错误率: E ( f ; D ) = 1 m ∑ i = 1 m # ( f ( x i ) ≠ y i ) E(f;D) = \frac{1}{m}\sum_{i=1}^{m}\#(f(x_i) \neq y_i) E(f;D)=m1i=1∑m#(f(xi)̸=yi)
精度: a c c ( f ; D ) = 1 m ∑ i = 1 m # ( f ( x i ) = y i ) acc(f;D) = \frac{1}{m}\sum_{i=1}^{m}\#(f(x_i) = y_i) acc(f;D)=m1i=1∑m#(f(xi)=yi)
混淆矩阵:
查准率(Precision):
P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP
查全率(Recall): R = T P T P + F P R =\frac{TP}{TP+FP} R=TP+FPTP
查全率与查准率相互矛盾,不能兼得。
以查准率为横坐标,查全率为纵坐标绘制的曲线为 “P-R曲线”
根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出假正例率和真正例率,以这两个值为坐标绘制曲线即为ROC(Receiver Operating Characteristic)
真 正 例 率 ( T r u e    P o s i t i v e    R a t e ) : T P R = T P T P + F N 真正例率(True\;Positive\;Rate):TPR = \frac{TP}{TP+FN} 真正例率(TruePositiveRate):TPR=TP+FNTP
假 正 例 率 ( F a l s e    P o s t i v e    R a t e ) : F P R = F P T N + F P 假正例率(False\;Postive\;Rate):FPR=\frac{FP}{TN+FP} 假正例率(FalsePostiveRate):FPR=TN+FPFP
点 ( 0 , 1 ) (0,1) (0,1) 为所有正例排在所有反例之前的理想模型。
ROC曲线的绘制:
给定 m + m^+ m+ 个正例和 m − m^- m− 个反例,根据学习器的预测结果对样例进行排序,然后把分类阈值设为最大,即把所有样例都设为反例,此时真正例与假正例率均为0,在坐标 ( 0 , 0 ) (0,0) (0,0) 处标记一个点,然后,将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点坐标为 ( x , y ) (x,y) (x,y),若当前为真正例,则对应标记点的坐标为 ( x , y + 1 m + ) (x,y+\frac{1}{m^+}) (x,y+m+1);若当前为假正例,则对应标记点坐标为 ( x + 1 m − , y ) (x+\frac{1}{m^-},y) (x+m−1,y) ,然后用线段相连即可。
ROC曲线下的面积为AUC(Area Under ROC Curve)。
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_{i}) \cdot(y_i+y_{i+1}) AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
解释:设当前点为 ( x i , y i ) (x_i,y_i) (xi,yi),若 ( x i + 1 , y i + 1 ) (x_{i+1}, y_{i+1}) (xi+1,yi+1)为真正例,那么横坐标不变,纵坐标加常数,则该项为0;若 ( x i + 1 , y i + 1 ) (x_{i+1}, y_{i+1}) (xi+1,yi+1)为假正例,那么横坐标加常数,纵坐标不变,则 1 2 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) \frac{1}{2}(x_{i+1}-x_{i}) \cdot(y_i+y_{i+1}) 21(xi+1−xi)⋅(yi+yi+1) 为当前矩形的面积。
损失函数定义为:
l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( # ( f ( x + ) < f ( x − ) ) + 1 2 # ( f ( x + ) = f ( x − ) ) ) l_{rank} = \frac{1}{m^+m^-}\sum_{x^+ \in D^+}\sum_{x^- \in D^-}(\#(f(x^+) < f(x^-))+\frac{1}{2}\#(f(x^+)=f(x^-))) lrank=m+m−1x+∈D+∑x−∈D−∑(#(f(x+)<f(x−))+21#(f(x+)=f(x−)))
且
A U C = 1 − l r a n k AUC = 1-l_{rank} AUC=1−lrank
解释: m + m − m^+m^- m+m−为正例反例的所有组合数,那么对 f ( x + ) < f ( x − ) f(x^+) < f(x^-) f(x+)<f(x−) 的个数求和可以表示排在正例前面的反例所占的比例,当 f ( x + ) = f ( x − ) f(x^+)=f(x^-) f(x+)=f(x−) 时,该反例可能在正例前面,也可能在正例后面,两种情况概率相等,基于统计的知识, 满足 f ( x + ) = f ( x − ) f(x^+)=f(x^-) f(x+)=f(x−) 的反例出现在正例前面的个数为 1 2 # ( f ( x + ) = f ( x − ) ) \frac{1}{2}\#(f(x^+)=f(x^-)) 21#(f(x+)=f(x−)),因此对于每一个 x x x 来说, l r a n k l_{rank} lrank 是排在其之前反例的个数。
代价敏感错误率即对错误情况加权值。
代价敏感曲线的绘制则是根据ROC曲线,将ROC曲线上每一个 ( F P R , T P R ) (FPR,TPR) (FPR,TPR),在代价平面上绘制一条从 ( 0 , F P R ) → ( 1 , T P R ) (0,FPR) \to (1,TPR) (0,FPR)→(1,TPR) 的线段,所有线段下的总面积为该条件下的期望总体代价。
比较检验涉及到置信度等统计学的专业知识,现在还不太懂,留个坑,等以后弄懂了再填~