机器学习:Friedman检验与Nemenyi后续检验,Python实现

简介: 机器学习:Friedman检验与Nemenyi后续检验,Python实现

前言


本人大数据专业初入大三刚刚接触机器学习这一课程,教材是最典型的西瓜书,第一次作业当然就是利用本专业语言多功能python语言结合书内容尝试自己构建P-R曲线以及延伸指标曲线。当然初入一些算法和机器学习的一些库还不是很熟练掌握,有待提升自己的编程结合能力。在此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。


提示:以下是本篇文章正文内容,下面案例可供参考


一、Friedman检验


在很多时候,我们会在一组数据集上对比多个算法的性能。当有多个算法参与比较时,常用基于算法排序的Friedman


检验。我们可以给出多个数据集如D1、D2、D3、D4.....Dn等对算法A1、A2.....An进行比较。使用评估方法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,3....;若算法的测试性能相同,则平分序值。


数据集 算法A 算法B 算法C
D1 1 2 3
D2 1 2.5 2.5
D3 1 2 3
D4 1 2 3
平均序值 1 2.125 2.875


得出此算法比较序值表后,使用Friedman检验来判断这些算法的性能是否相同。若相同则平均序值也应当相同。

假定我们在N个数据集上比较k个算法,令\gamma _{i}表示第i个算法的平均序值,\gamma _{i}的均值和方差分别为(k+1)/2和(k^{2}-1)/12N。


20201001201024321.png


在k和N都较大时,服从自由度为k-1的卡方分布。

def friedman(n, k, rank_matrix):
    # 计算每一列的排序和
    sumr = sum(list(map(lambda x: np.mean(x) ** 2, rank_matrix.T)))#降序矩阵
    result = 12 * n / (k * ( k + 1)) * (sumr - k * (k + 1) ** 2 / 4)#T的卡方分布
    result = (n - 1) * result /(n * (k - 1) - result)#TF变量
    return result

20201001201230398.png服从自由度为k-1和(k-1)(N-1)的F分布。


二、Nemenyi后续检验


若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,这时需要进行“后续检验”。


2020100120211418.png


def nemenyi(n, k, q):
    return q * (np.sqrt(k * (k + 1) / (6 * n)))

使用检验可以直观的用Friedman检验图表示:


20201001202732395.png


这是catEyesL大佬写的测试源代码:

https://github.com/aBadCat/machineLearning/tree/master/Friedman&Nem


总结


有时间测试不同算法的差异性吧。


目录
相关文章
|
2天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
11 1
|
2天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
12 1
|
8天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
19 3
|
13天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
23 1
|
19天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
24天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
18 1
|
25天前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
19 2
|
6月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
236 14
|
6月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
114 1
|
6月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
下一篇
无影云桌面