自己的一点思考:数无形时少直觉,乱用指标乱评估(未完待续)

今天来谈谈一个话题:模型性能如何评估?

对于这个问题,相信不少数据挖掘的朋友会说这还用思考吗?一顿啪哩啪啦:分类用precision、recall、F1、KS等等,回归用MSE等等,聚类用总体误差平方和、轮廓系数silhouette等等。。。

但是,真的是这样吗?从项目的角度来说,不同项目有不同目标、不同侧重点,世界上存在通用、不成不变的一种准则吗,想通了这一点,自然就会知道,其实在真实的项目中,不考虑业务,直接使用指标是有问题的,或者说是存在缺陷的。

举例如下:

(1)对于分类问题,不管是precision还是其他KS也好,其实都不能准确、全面评估模型性能,一个更好的方法应该是:

计算整体的precision、recall、各个阀值下的KS;

计算各个类别的precision、recall、各个阀值下的KS;

因为数据集存在倾斜(不同类样本不均匀),如果只看整体指标,则多数类会掩盖少数类效果,尤其是少数类为目标样本的时候,这时会存在很大误导性,应该要各个类别指标一起观察。

(2)对于聚类问题,如果是使用MSE(均方误差和)存在问题:理论上,样本越多,误差越大,样本越小,误差越小,误差对模型性能的影响,单纯看误差之和存在误导。一个合理做法是:将分类好的样本投影到低维空间,看在低维空间,簇和簇之间是否有明显边界,再结合各个簇的分布,簇内样本之间距离,簇间样本之间距离综合评估。

 

补充下轮廓系数:

如SKlearn上所说,轮廓系数含义为:

在聚类完成之后,对于某个样本而言i,计算样本i和所在簇中其他样本的平均距离A,再计算样本i和其他各个簇中样本的平均值并选择一个最小平均值作为B,这样(B-A)/max{A,B}即为样本i轮廓系数,整个数据集的轮廓系数为所有样本轮廓系数的平均值。

步骤如下:

假定一个样本i,当前样本属于簇C_i,一共有K个簇;

step1:计算样本i到C_i中其他样本的距离,求均值得到A_i。

step2:计算样本i到C_1中各个样本的距离,得到均值B1,计算样本i到C_2中各个样本的距离,得到均值B2,以此类推,得到K-1个B_j(j != i,剔除当前簇C_i),从中选择一个最小的B作为B_i。

step3:样本i的轮廓系数S_i = (B_i - A_i) / max{B_i, A_i}。

step4:全部样本S_i求均值得到整体的轮廓系数S。

 

整个思想是:希望簇和簇之间尽快远离,簇内尽可能紧密,这样B_i就会很大,A_i就会很小,这样计算得到的单个S_i就会尽可能接近1(等价于B_i/B_i),整体S就会接近1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值