评估回归分析的措施 按队列组堆叠分层表 应用单个 比较 评估一个或多个模型的功能
-
适用于机器学习的公平性测量和分析教程 使用模板和工具的示例
-
测量 : 衡量分类和回归模型的卫生保健特定公平性指标。
比较 : 比较一个或多个模型的受保护属性和其他特征,以了解结果中的潜在偏差。
可视化 : 通过有用的报告和可定制的亮点,可视化跨多个模型的偏差。
-
作为模型分析骨架的快速入门笔记本
python-m pip安装fairmlhealth
python-m pip安装git+ https://github.com/KenSciResearch/fairMLHealth
pip安装<path_to_fairMLHealth_dir>
从 公平卫生 进口 报告 , 测量
进口 熊猫 作为 钯
从 sklearn公司 . 型号选择 进口 列车_测试_拆分
从 sklearn公司 . 天真的孩子 进口 伯努利NB
从 sklearn公司 . 树 进口 决策树分类程序
#首先,我们将为感兴趣的属性创建一个带有特定列的半随机数据帧
天然气 = 净现值 . 随机的,随机的 . 随机状态 ( 506 ) N个 = 240
X(X) = 钯 . 数据帧 ({ “列1” : 天然气 . 兰丁 ( 1 , 4 , N个 ), “列2” : 天然气 . 兰丁 ( 1 , 75 , N个 ), “列3” : 天然气 . 兰丁 ( 0 , 2 , N个 ), “性别” : [ 0 , 1 ] * 整数 ( N个 / 2 ), “种族” : [ 1 , 1 , 0 , 0 ] * 整数 ( N个 / 4 ), “其他” : [ 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 ] * 整数 ( N个 / 8 ) })
#终止随机目标变量
年 = 钯 . 系列 ( X(X) [ “列3” ]. 值 + 天然气 . 兰丁 ( 0 , 2 , N个 ), 名称 = '示例_目标' ). 削减 ( 上面的 = 1 ) #第三,我们将分割数据并使用它训练两个通用模型
拆分 = 列车_测试_拆分 ( X(X) , 年 , 分层 = 年 , 测试_大小 = 0.5 , 随机状态 = 60 ) X_火车 , X测试(_T) , y_列车 , y_测试 = 拆分
型号1 = 伯努利NB (). 适合 ( X_火车 , y_列车 ) 型号2 = 决策树分类程序 (). 适合 ( X_火车 , y_列车 ) #生成报告
公平性_度量 = 报告 . 比较 ( X测试(_T) , y_测试 , X测试(_T) [ “性别” , 型号1 )
#多个模型的示例
报告 . 比较 ( 测试_数据 = X测试(_T) , 目标 = y_测试 , 受保护属性 = X测试(_T) [ “性别” ], 模型 = { '任意名称1' : 型号1 , “型号2” : 型号2 })
#具有不同受保护属性的示例。
#请注意,传递同一模型时使用了两个不同的键,以澄清列名。
报告 . 比较 ( X测试(_T) , y_测试 , [ X测试(_T) [ “性别” ], X测试(_T) [ “种族” ]], { “性别” : 型号1 , “种族” : 型号1 })
从 sklearn公司 . 线性模型 进口 线性回归
#创建随机目标变量。 在这种情况下,我们将添加一些与现有变量的相关性
年 = 钯 . 系列 (( X(X) [ “列3” ] + X(X) [ “性别” ]). 值 + 天然气 . 制服 ( 0 , 6 , N个 ), 名称 = '示例_连续_目标' ) #分割数据并使用它训练回归模型
拆分 = 列车_测试_拆分 ( X(X) , 年 , 测试_大小 = 0.5 , 随机状态 = 42 ) X_火车 , X测试(_T) , y_列车 , y_测试 = 拆分
回归模型 = 线性回归 (). 适合 ( X_火车 , y_列车 ) #生成报告。
#注意,对于回归模型,必须声明预测类型(pred_type)。
报告 . 比较 ( X测试(_T) , y_测试 , X测试(_T) [ “性别” ], 回归模型 , pred_type(前类型) = “回归” )
#显示同一个报告,不带标志,也没有模型性能
报告 . 比较 ( X测试(_T) , y_测试 , X测试(_T) [ “性别” ], 回归模型 , pred_type(前类型) = “回归” , 标志或(_O) = False(错误) , 跳过_性能 = 真的 ))
#以下两个函数调用将生成如下所示的相同输出表
#参数选项1:传递完整的数据集,使用*features*参数进行子集设置
测量 . 数据 ( X测试(_T) , y_测试 , 特征 = [ “性别” ]) #参数选项2:传递感兴趣的数据子集,而不使用*features*参数
测量 . 数据 ( X测试(_T) [[ “性别” ]], y_测试 )
#显示多个目标的类似报告,删除摘要行
测量 . 数据 ( X(X) = X测试(_T) , #用于定义行
Y(Y) = X测试(_T) , #用于定义列
特征 = [ “性别” , “列1” ], #X的可选子集
目标 = [ “列2” , “列3” ], #Y的可选子集
添加概述(_O) = False(错误) #关闭“所有功能,所有值”行 )
#包含概率的二进制分类性能表
测量 . 性能 ( X测试(_T) [[ “性别” ]], y_真 = y_测试 , y_pred(预测) = 型号1 . 预测 ( X测试(_T) ), y_问题 = 型号1 . 预测机器人 ( X测试(_T) )[:, 1 ])
#回归示例
测量 . 性能 ( X测试(_T) [[ “性别” ]], y_真 = y_测试 , y_pred(预测) = 回归模型 . 预测 ( X测试(_T) ), pred_type(前类型) = “回归” )
#二进制分类示例
#请注意,此功能的flag_or默认设置为False
测量 . 偏差 ( X测试(_T) [[ “性别” , “列1” ]], y_测试 , 型号1 . 预测 ( X测试(_T) ))
#自定义“公平”范围可以作为元组的字典传递,元组的键是不区分大小写的度量值名称
我的范围(_R) = { “MAE差异” :( - 0.1 , 0.1 ), '平均预测差异' :( - 2 , 2 )} #请注意,此功能的flag_or默认设置为False
测量 . 偏差 ( X测试(_T) [[ “性别” , “列1” ]], y_测试 , 回归模型 . 预测 ( X测试(_T) ), pred_type(前类型) = “回归” , 标志或(_O) = 真的 , 自定义范围(_R) = 我的范围(_R) )
#带有自定义范围的回归模型的示例摘要输出
测量 . 总结 ( X测试(_T) [[ “性别” , “列1” ]], y_测试 , 回归模型 . 预测 ( X测试(_T) ), prtc属性 = X测试(_T) [ “性别” ], pred_type(前类型) = “回归” , 标志或(_O) = 真的 , 自定义范围(_R) = { '平均预测差异' :( - 0.5 , 2 )})
#应用于偏差函数的队列示例
队列标签 = X测试(_T) [ “性别” ] 测量 . 偏差 ( X测试(_T) [ “列3” ], y_测试 , 型号1 . 预测 ( X测试(_T) ), 标志或(_O) = 真的 , 队列标签 = 队列标签 )
#应用于汇总函数的队列示例
#请注意,性能度量和标记已关闭
测量 . 总结 ( X测试(_T) [[ “列2” ]], y_测试 , 型号1 . 预测 ( X测试(_T) ), prtc属性 = X测试(_T) [ “性别” ], pred_type(前类型) = “分类” , 标志或(_O) = False(错误) , 跳过_性能 = 真的 , 队列标签 = X测试(_T) [[ “种族” , “列3” ]] )
@杂项{fairMLHealth, title={fairMLHealth:healthcare机器学习中公平性评估的工具和教程。}, 作者={Allen,C.和Ahmad,M.A.和Eckert,C.以及Hu,J.和Kumar,V.和Teredesai,A.}, 年份={2020年}, publisher={GitHub}, 日志={GitHub存储库}, howpublished={\url{ https://github.com/KenSciResearch/fairMLHealth }} }
@集合{FMLH_KDD2020, title={医疗保健机器学习中的公平性}, 作者={Ahmad,M.A.和Eckert,C.,Kumar,V.和Patel,A.和Allen,C.和Teredesai,A.}, 年=2020年, 月={八月}, booktitle={第26届ACM SIGKDD知识发现与数据挖掘国际会议论文集}, 页数={3529-3530} }
BEE 520标准: 从数据中预测学习 2022年冬季华盛顿大学波特尔分校电气工程系 CSS 581: 机器学习 2021年秋季华盛顿大学计算机科学系 TCSS 593: 数据科学研究研讨会 2021年春季华盛顿大学塔科马分校计算机科学系 BEE 520标准: 从数据中预测学习 2021年春,华盛顿大学波特尔分校电气工程系 CSS 581: 机器学习 2020年秋季华盛顿大学计算机科学系
穆罕默德·奥朗泽布·艾哈迈德 克里斯汀·艾伦 卡莉·埃克特 胡菊花 维卡斯·库马尔 阿皮特·帕特尔 安库尔·特雷德赛