机器学习模型评估与调优总结

一、评估指标

1、分类评估指标

  • 混淆矩阵
真实类别\预测类别 正例 负例
正例 TP FN
负例 FP TN
  • 准确率:分类正确的样本占总样本的比例,当样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。
  • 精确率(查准率、Precision)与召回率(查全率、Recall):精确率表示的是分类正确的正样本个数占分类器判断为正样本总数的比例,召回率表示的是分类正确的正样本个数占真实正样本总数的比例。

P = T P T P + F P , R = T P T P + F N P=\frac{TP}{TP+FP}, R=\frac{TP}{TP+FN} P=TP+FPTP,R=TP+FNTP

  • F1值:精确率和召回率的调和均值。
    F 1 = 2 ∗ P ∗ R P + R F1=\frac{2*P*R}{P+R} F1=P+R2PR
    F B = ( 1 + B 2 ) ∗ P ∗ R ( B 2 ∗ P ) + R F_B=\frac{\left(1+B^2\right)*P*R}{\left(B^2*P\right)+R} FB=(B2P)+R(1+B2)PR

2、回归评估指标

  • 均方误差(MSE):
    M S E = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 MSE=\frac{1}{m}\sum_{i=1}^{m}\left(f(x_i)-y_i\right)^2 MSE=m1i=1m(f(xi)yi)2
  • 平方根误差(RMSE):如果存在个别偏离程度非常大的离群点时,即使离群点非常少,也会让RMSE变得很差。解决方法: 1. 数据预处理去掉噪声,2. 将噪声加到模型中,模型需要更强的能力,3. 更换评估指标,例如MAPE将每个点的误差进行了归一化,降低了个别离群点对评估指标带来的影响。
    R M S E = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 RMSE=\sqrt{\frac{1}{m}\sum_{i=1}^{m}\left(f(x_i)-y_i\right)^2} RMSE=m1i=1m(f(xi)yi)2
  • 平均绝对误差(MAE):
    M A E = 1 m ∑ i = 1 m ∣ f ( x i ) − y i ∣ MAE=\frac{1}{m}\sum_{i=1}^{m}|f(x_i)-y_i| MAE=m1i=1mf(xi)yi
  • 平均绝对百分比误差(MAPE):
    M A P = ∑ i = 1 n ∣ f ( x i ) − y i f ( x i ) ∣ ∗ 100 n MAP=\sum_{i=1}^{n}|\frac{f(x_i)-y_i}{f(x_i)}|*\frac{100}{n} MAP=i=1nf(xi)f(xi)yin100

二、P-R曲线和ROC曲线

  • P-R曲线:横轴为召回率,纵轴为精确率。

  • ROC曲线:横轴为假阳性率(FPR),纵轴为真阳性率(TPR)。相比P-R曲线,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线一般会发生剧烈的变化,所以在实际场景中,正负样本往往分布不均衡而ROC比较稳定更能判断模型的好坏。
    F P R = F P T N + F N , T P R = T P T P + F P FPR=\frac{FP}{TN+FN},TPR=\frac{TP}{TP+FP} FPR=TN+FNFP,TPR=TP+FPTP
    例子: 假设10位学生,老师觉得有3位学生期末考试不会及格(N=3),另外7位期末考试通过考试(P=7),学校组织期末考试后,这3名学生中有2位通过考试,另外7名学生中有6位学生通过考试。这里老师相当于是我们的分类器,而期末考试则是真实结果,那么对于该分类器TPR=TP/P=6/7,FPR=FP/N=1/3

  • 如何绘制ROC曲线:

  1. 不断的移动分类器的截断点来生成曲线上的一组关键点,在二值分类中,设定一个阈值,概率大于阈值判断正例,反之判定负例,不断调整阈值。
  2. 根据样本标签统计出正样本和负样本的数量P和N,纵轴每一个刻度设置为为1/P,横轴每一个刻度设置为1/N,每遇到一个正样本沿着纵轴方向移动一个单位,遇到一个一个负样本则沿着横轴方向移动一个单位,直到遍历完所有样本,最后停在(1,1)这个点,ROC绘制完成。
  • 如何计算AUC:AUC就是ROC曲线下的面积,即对横轴积分。AUC值越大吗,说明分类器可能把真正的样本排在前面,分类性能越好。

三、评估方法

  • 留出法(hold-out):将数据集划分互斥的两部分,训练集S,测试集T,一般来说S占70%,T占30%。为保证数据分布的一致性,通常采用分层采样的方式。
  • k-折交叉验证:将数据集划分成K个大小相等子集,依次遍历这k个子集每次把当前子集当做验证集,其他所有子集作为训练集,最后把K次评估指标的平均值作为最终的评估指标。实际工程中,k一般取10。
  • 留一法:遍历数据集所有样本,每次讲当前样本当成验证集,其他样本组成的集合当做训练集,有多少个样本,模型就跑了多少遍,因此当样本数量十分大的时候,时间开销特别大。留一法是留p法的特例,就是每一次留下p个样本作为验证集。
  • 自助法:基于自助采样(bootstrap)的检验方法,对于样本总数为n的数据集,进行n次有放回的随机采样,得到大小为n的训练集。一个样本从未被采样的概率为 1 − 1 n 1-\frac{1}{n} 1n1,n次均为被抽中的概率为 ( 1 − 1 n ) n (1-\frac{1}{n})^n (1n1)n,当样本数量很大时,即n趋于无穷大,有
    lim ⁡ n → + ∞ ( 1 − 1 n ) n = lim ⁡ n → + ∞ 1 ( 1 + 1 n − 1 ) n = 1 e ≈ 0.368 \lim_{n\rightarrow+\infty}(1-\frac{1}{n})^n=\lim_{n\rightarrow+\infty}\frac{1}{(1+\frac{1}{n-1})^n}=\frac{1}{e}\approx0.368 n+lim(1n1)n=n+lim(1+n11)n1=e10.368

四、过拟合和欠拟合

1. 过拟合:

模型在训练集上表现很好,在测试集上和新数据上的表现很差。

解决方法

  • 获取更多的数据:例如在图像分类处理上,可以对数据进行平移、旋转、缩放等方式。
  • 降低模型复杂度:例如在神经网络中,减少网络层数,减少神经元的个数。
  • 正则化方式:Lasso(L1正则化)和Ridge(L2正则化),增加正则化系数。
  • 集成学习方式:用多个模型集成在一起,来降低单一模型的过拟合的风险,如Bagging。

2. 欠拟合:

模型在训练和预测时表现都不好。

解决方法

  • 添加新特征:挖掘“上下文特征”、“ID类特征”、“组合特征”。
  • 增加模型复杂度:线性模型中增加高次项,神经网络中增加神经元的个数或者神经网络的层数等。
  • 减小正则化系数:
  • 减少数据:一般不采用这种方式

五、超参数调优

超参数: 学习器模型中一般有两种参数,一种参数是可以从学习中得到,还有一种无法靠数据里面得到,只能靠人的经验来设定,这类参数就叫做超参数。

  • 网格搜索:它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。这个时候就是需要动脑筋了。数据量比较大的时候可以使用一个快速调优的方法——坐标下降。它其实是一种贪心算法:拿当前对模型影响最大的参数调优,直到最优化;再拿下一个影响最大的参数调优,如此下去,直到所有的参数调整完毕。这个方法的缺点就是可能会调到局部最优而不是全局最优,但是省时间省力,巨大的优势面前,还是试一试吧,后续可以再拿bagging再优化。
  • 随机搜索:不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点,它的理论依据是当样本集足够大事,通过随机采样能很大概率的找到全局最优值,随机搜索一般比网格搜索更快一些。
  • 贝叶斯优化方法:https://deepmind.com/documents/135/population_based_training.pdf

六、距离

距离的特性:

  1. d(x,x)=0 ,到自己的距离为0
  2. d(x,y)>=0 ,距离非负
  3. d(x,y)=d(y,x) ,对称性
  4. d(x,z)+d(z,y)>=d(x,y),满足三角不等式即两边之和大于第三边

1、闵可夫斯基距离:代表一组距离的定义。

特点: 闵可夫斯基距离比较直观,与数据的分布无关,但往往数据各个分量的分布可能不一样。具有一定的局限性,会放大幅值大的维度,所以往往需要进行归一化处理。前提假设是,数据之间是不相关的。

定义: A = ( x 1 , . . . , x n ) A=(x_1,...,x_n) A=(x1,...,xn) B = ( y 1 , . . . , y n ) B=(y_1,...,y_n) B=(y1,...,yn),则 D A B = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p D_{AB}=({\sum_{i=1}^{n}|x_i-y_i|^p)^\frac{1}{p}} DAB=(i=1nxiyip)p1

  • 当p<1时,闵可夫斯基距离不满足三角不等式。
  • 当p=1时,就是曼哈顿距离。
  • 当p=2时,就是欧氏距离。
  • 当p趋于无穷大时,就是切比雪夫距离。

2、曼哈顿距离:在欧几里得空间的固定直角坐标系上两点所形成的线段对各轴产生的投影的距离综合。

定义: A = ( x 1 , y 1 ) A=(x_1,y_1) A=(x1,y1) B = ( x 2 , y 2 ) B=(x_2,y_2) B=(x2,y2),则 D A B = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ D_{AB}=|x_1-x_2|+|y_1-y_2| DAB=x1x2+y1y2

3、欧式距离:在欧几里得空间中,两点之间的距离。

定义: A = ( x 1 , . . . , x n ) A=(x_1,...,x_n) A=(x1,...,xn) B = ( y 1 , . . . , y n ) B=(y_1,...,y_n) B=(y1,...,yn),则 D A B = ∑ i = 1 n ( x i − y i ) 2 D_{AB}=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^2} DAB=i=1n(xiyi)2

4、切比雪夫距离:当闵可夫斯基距离中的p趋于无穷大时,就是切比雪夫距离,切比雪夫距离趋于一个正方形。

定义: A = ( x 1 , . . . , x n ) A=(x_1,...,x_n) A=(x1,...,xn) B = ( y 1 , . . . , y n ) B=(y_1,...,y_n) B=(y1,...,yn),则
D A B = lim ⁡ p → + ∞ ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p = max ⁡ i = 1 n ∣ x i − y i ∣ = ∣ ∣ X − Y ∣ ∣ + ∞ D_{AB}=\lim_{p\rightarrow+\infty}({\sum_{i=1}^{n}|x_i-y_i|^p)^\frac{1}{p}}=\max_{i=1}^{n}|x_i-y_i|=||X-Y||_{+\infty} DAB=p+lim(i=1nxiyip)p1=i=1maxnxiyi=XY+

5、马氏距离:

利用Cholesky Transformation来消除不同维度之间的相关性和尺度,将协方差矩阵进行LU分解转化为下三角矩阵和上三角矩阵的乘积: ∑ = L L T \sum=LL^T =LLT。消除不同维度之间的相关性和尺度,只需要对样本进行去均值之后左乘 L − 1 L^{-1} L1 Z = L − 1 ( X − u ) Z=L^{-1}(X-u) Z=L1(Xu),那么马氏距离的平方:
Z T Z = ( L − 1 ( X − u ) ) T ( L − 1 ( X − u ) ) = ( X − u ) T ∑ − 1 ( X − u ) Z^TZ=(L^{-1}(X-u))^T(L^{-1}(X-u))=(X-u)^T\sum^{-1}(X-u) ZTZ=(L1(Xu))T(L1(Xu))=(Xu)T1(Xu)
若协方差矩阵是单位矩阵,即各个样本向量之间独立同分布,那么巴氏距离就变成了欧式距离,若协方差矩阵是对角矩阵,那么巴氏距离就变成了标准化欧氏距离。

6、余弦距离:余弦相似度只与向量的方向有关,与大小无关。

定义: A = ( x 1 , . . . , x n ) A=(x_1,...,x_n) A=(x1,...,xn) B = ( y 1 , . . . , y n ) B=(y_1,...,y_n) B=(y1,...,yn),则夹角余弦公式:
cos ⁡ A B = ∑ i = 1 n x i y i ∑ i = 1 n x i 2 ∑ i = 1 n y i 2 \cos_{AB}=\frac{\sum_{i=1}^{n}{x_iy_i}}{\sqrt{\sum_{i=1}^{n}x_i^2}\sqrt{\sum_{i=1}^{n}y_i^2}} cosAB=i=1nxi2 i=1nyi2 i=1nxiyi

7、皮尔逊相似度(person correlation):避免幅度影响,也可以避免向量平移的影响。

定义: A = ( x 1 , . . . , x n ) A=(x_1,...,x_n) A=(x1,...,xn) B = ( y 1 , . . . , y n ) B=(y_1,...,y_n) B=(y1,...,yn),则皮尔逊相似度:
C o r r A B = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 Corr_{AB}=\frac{\sum_{i=1}^{n}{(x_i-\bar{x})(y_i-\bar{y})}}{\sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2}\sqrt{\sum_{i=1}^{n}(y_i-\bar{y})^2}} CorrAB=i=1n(xixˉ)2 i=1n(yiyˉ)2 i=1n(xixˉ)(yiyˉ)

8、杰卡德相似系数(Jaccard similarity coefficient):一般用于集合之间的计算,也可用于向量,将维度的值取为0或者1。

杰卡德相似系数:
J ( A , B ) = ∣ A ⋂ B ∣ ∣ A ⋃ B ∣ J(A,B)=\frac{|A\bigcap{B}|}{|A\bigcup{B}|} J(A,B)=ABAB
杰卡德距离:
J δ ( A , B ) = 1 − J ( A , B ) J_\delta(A,B)=1-J(A,B) Jδ(A,B)=1J(A,B)
可将杰卡德相似系数用在衡量样本的相似度上。 样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。

p :样本A与B都是1的维度的个数
q:样本A是1,样本B是0的维度的个数
r:样本A是0,样本B是1的维度的个数
s:样本A与B都是0的维度的个数

那么样本A与B的杰卡德相似系数可以表示为:
J = q + r p + q + r J=\frac{q+r}{p+q+r} J=p+q+rq+r
这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。
而样本A与B的杰卡德距离表示为:
J = p p + q + r J=\frac{p}{p+q+r} J=p+q+rp


本文来自 qq_26091271 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_26091271/article/details/52528625?utm_source=copy

9、相关系数(Correlaiton coefficient)和相关距离(Correlation distance)

  • 相关系数:是衡量随机变量X与Y相关程度的一种方法

定义:
ρ X Y = c o v ( X , Y ) d ( X ) d ( Y ) \rho_{XY}=\frac{cov(X,Y)}{\sqrt{d(X)}\sqrt{d(Y)}} ρXY=d(X) d(Y) cov(X,Y)

  • 相关距离:
    D X Y = 1 − ρ X Y D_{XY}=1-\rho_{XY} DXY=1ρXY

你可能感兴趣的:(机器学习)