理解和研究算法偏差的工具包
EthicML的Python项目详细描述
埃塞俄比亚文
EthICML的存在是为了解决我们在现成的公平性比较包中发现的问题。
这些其他的软件包是有用的,但是考虑到我们主要做研究, 我们做的很多工作都放不进漂亮的盒子里。 例如,在训练分类器之前,我们可能希望对数据使用“公平”的预处理方法。 我们可能仍在试验,只希望执行框架的一部分, 或者我们可以做超参数优化。 当其他框架可以修改来完成这些任务时, 最后,你会发现黑客们的方法不适合将来构建。 因为这个, 我们在沙地上画了一条线,和我们使用过的其他一些框架,并建立了自己的框架。
为什么不使用xxx?
还有越来越多的其他选择, ibm的fair-360、aequitas、ethicalml/xai、fairity comparison等。 他们都很擅长自己的工作,只是不适合我们。 但是我们会受到他们的影响。
设计原则
三重态
考虑到我们考虑的是公平性,工具箱的基础是三元组{x,s,y}
- X-功能
- S-敏感标签
- Y-类标签
所有方法都必须假定s和y是多类的。
我们使用命名元组来包含三元组
triplet=DataTuple(x=dataframe,s=dataframe,y=dataframe)
数据帧可能效率有点低, 但考虑到在我们所做的条件下拼接的数量,这感觉是值得的。
方法分离
我们有目的地将前、中、后算法分离。这是因为它们有不同的返回类型。
pre_algorithm.run(train:DataTuple,test:DataTuple)# -> Tuple[pandas.DataFrame, pandas.DataFrame]in_algorithm.run(train:DataTuple,test:DataTuple)# -> pandas.DataFramepost_algorithm.run(preds:DataFrame,test:DataTuple)# -> pandas.DataFrame
其中preds是列名为“preds”的单列数据帧。
一般经验法则
- 可变数据结构不好。
- 至少,函数应该被输入。
- 可读性>;效率
- 不要只是关掉警告就避开它们。
未来计划
希望ethicml能够成为一种超级简单的方法来看待不同数据集中的偏见 比较不同的模型。