下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验4机器学习伦理与公平性评估一、实验目的及要求理解机器学习应用中可能存在的数据偏见、虚假特征等伦理风险及其形成机制。掌握通过分组评估识别模型公平性问题的方法,能够计算并比较不同群体间的准确率、精确率、召回率差异。掌握移除敏感属性、重采样等简单的去偏处理思路,并理解其适用场景与局限。能够从“数据非中立,开发者即责任主体”的角度审视机器学习项目,强化“科技向善”的价值导向。培养对模型输出进行批判性验证的习惯,不将模型结果视为唯一真理。二、实验学时2学时(建议时间分配:讲解15分钟,任务实践75分钟,总结报告10分钟)三、实验前准备软件环境:Python3.8及以上,建议使用JupyterNotebook或VSCode。依赖库:NumPy、Pandas、scikit-learn。安装命令如下:pipinstallnumpypandasscikit-learn知识储备:已学习教材第4.5节(机器学习的潜在风险),理解历史偏见、采样偏见、标签偏见与虚假特征的概念。四、实验任务任务1案例分析与数据集构建(15分钟)回顾教材中“简历筛选AI系统”与“超市盗窃识别系统”两个案例,分析数据偏见与虚假特征的来源。随后构建一个模拟的简历筛选数据集,包含:性别、笔试成绩、面试评分、实习时长、是否录用。在历史偏见模拟中,设定女性录用率系统性低于男性。任务2训练“有偏”模型并分组评估(20分钟)将性别作为特征之一,训练逻辑回归模型;分别计算总体准确率与按性别划分的准确率、精确率、召回率,观察差异。任务3去偏处理实验(20分钟)移除性别特征后重新训练模型,再次进行分组评估,比较总体指标与分组指标的变化。任务4虚假特征识别(10分钟)向数据集中加入一个与录用结果无因果关系的“伪特征”(如应聘者编号的末位数字),训练模型并观察该特征是否被赋予非零权重,讨论其危害。任务5讨论与报告(10分钟)结合实验结果,回答:①数据偏见如何被模型继承并放大?②移除敏感属性能否完全消除偏见?③在风险敏感场景中应如何设置人工复核机制?参考代码以下为完整可运行代码:#实验五:机器学习伦理与公平性评估
importnumpyasnp
importpandasaspd
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.preprocessingimportStandardScaler
fromsklearn.linear_modelimportLogisticRegression
fromsklearn.metricsimportaccuracy_score,precision_score,recall_score
np.random.seed(42)
n=400
#1.构造含历史偏见的数据集
#笔试成绩、面试评分、实习时长是真实能力信号
exam=np.random.normal(75,8,n)
interview=np.random.normal(75,8,n)
internship=np.random.uniform(0,24,n)
gender=np.random.choice(["男","女"],n)
#真实录用概率只取决于能力信号
ability_score=0.5*exam+0.5*interview+0.8*internship
true_prob=1/(1+np.exp(-(ability_score-80)/12))
true_hired=(np.random.random(n)<true_prob).astype(int)
#引入历史偏见:同等能力下女性录用率降低约25%
hired=true_hired.copy()
hired[(gender=="女")&(true_hired==1)]=(
np.random.random(sum((gender=="女")&(true_hired==1)))>0.25
).astype(int)
df=pd.DataFrame({
"性别":gender,
"笔试成绩":exam,
"面试评分":interview,
"实习时长":internship,
"编号末位":np.random.randint(0,10,n),#虚假特征
"是否录用":hired
})
print("数据集概况:")
print(df.head())
print("\n按性别统计录用率:")
print(df.groupby("性别")["是否录用"].mean())
#2.定义评估函数
defevaluate(model,X,y,group):
y_pred=model.predict(X)
print(f"总体准确率:{accuracy_score(y,y_pred):.4f}")
forgingroup.unique():
mask=group==g
ify[mask].sum()>0:
print(f"{g}群体准确率={accuracy_score(y[mask],y_pred[mask]):.4f},"
f"精确率={precision_score(y[mask],y_pred[mask],zero_division=0):.4f},"
f"召回率={recall_score(y[mask],y_pred[mask],zero_division=0):.4f}")
else:
print(f"{g}群体准确率={accuracy_score(y[mask],y_pred[mask]):.4f}")
#3.训练含性别特征的“有偏”模型
X_biased=pd.get_dummies(df.drop("是否录用",axis=1),columns=["性别"],drop_first=True)
y=df["是否录用"]
X_train,X_test,y_train,y_test=train_test_split(
X_biased,y,test_size=0.2,random_state=42
)
num_cols=["笔试成绩","面试评分","实习时长","编号末位"]
scaler=StandardScaler()
X_train[num_cols]=scaler.fit_transform(X_train[num_cols])
X_test[num_cols]=scaler.transform(X_test[num_cols])
model_biased=LogisticRegression(random_state=42,solver='liblinear')
model_biased.fit(X_train,y_train)
print("\n===模型A:含性别特征===")
evaluate(model_biased,X_test,y_test,df.loc[X_test.index,"性别"])
print("特征权重:")
forname,coefinzip(X_biased.columns,model_biased.coef_[0]):
print(f"{name}:{coef:.4f}")
#4.移除性别特征后重新训练
X_fair=X_biased.drop(columns=["性别_男"])
X_train_f,X_test_f,y_train_f,y_test_f=train_test_split(
X_fair,y,test_size=0.2,random_state=42
)
X_train_f[num_cols]=scaler.fit_transform(X_train_f[num_cols])
X_test_f[num_cols]=scaler.transform(X_test_f[num_cols])
model_fair=LogisticRegression(random_state=42,solver='liblinear')
model_fair.fit(X_train_f,y_train_f)
print("\n===模型B:移除性别特征===")
evaluate(model_fair,X_test_f,y_test_f,df.loc[X_test_f.index,"性别"])
print("特征权重:")
forname,coefinzip(X_fair.columns,model_fair.coef_[0]):
print(f"{name}:{coef:.4f}")
#5.讨论问题(写入实验报告)
print("\n思考题:")
print("1.为什么模型A中性别特征的权重不为零?")
print("2.移除性别特征后,男女群体的准确率差异是否缩小?为什么仍可能存在差异?")
print("3.虚假特征“编号末位”的权重说明了什么?")
预期结果(参考)运行代码后,你应看到类似以下的结果:按性别统计录用率:
性别
女0.4577
男0.5930
===模型A:含性别特征===
总体准确率:0.7000
女群体准确率=0.6410,精确率=0.6250,召回率=0.5556
男群体准确率=0.7561,精确率=0.7692,召回率=0.8333
特征权重:
笔试成绩:0.3055
面试评分:0.3627
实习时长:0.4713
编号末位:-0.0215
性别_男:0.4734
===模型B:移除性别特征===
总体准确率:0.6125
女群体准确率=0.5128,精确率=0.4762,召回率=0.5556
男群体准确率=0.7073,精确率=0.7500,召回率=0.7500结果解读:模型A中“性别_男”系数为正且较大,说明模型学习到“男性更容易被录用”的历史偏见;移除性别特征后,总体准确率变化不大,但男女群体的召回率差异仍然存在,因为笔试、面试、实习等特征可能与性别存在相关性(代理特征)。结果记录表请将你的实验结果填入下表:评估项模型A(含性别)模型B(去性别)差异分析总体准确率女性群体准确率男性群体准确率女性群体召回率男性群体召回率性别特征权重//虚假特征权重五、实验重点、难点重点:数据偏见(历史偏见、采样偏见、标签偏见)的模拟与识别;分组公平性评估;去偏策略的实现与效果对比。难点:理解“移除敏感属性并不能保证完全公平”的原因(代理特征的存在);区分相关性与因果性;平衡模型准确性与公平性。六、操作要点构造模拟数据时应明确区分“真实能力信号”与“偏见来源”,便于观察模型如何继承偏见。分组评估时务必使用测试集,避免在训练集上评估导致过拟合的乐观偏差。去偏实验中建议同时记录总体指标与分组指标,避免以牺牲某一群体的利益换取整体性能提升。鼓励学生在实验报告中加入自己的伦理判断,而非仅罗列代码输出。七、注意事项本实验数据集为模拟数据,仅用于教学目的;真实项目中处理个人敏感数据必须遵守相关法律法规与伦
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川绵阳市投资控股(集团)有限公司市场化选聘产投公司经理层拟录用人选笔试历年参考题库附带答案详解
- 2026四川成都新津文旅集团招聘1人笔试历年参考题库附带答案详解
- 旅游平台服务订单信息验证函(5篇)范文
- 2026年初中化学基础知识试卷
- 品牌推广员创意绩效考核表
- 房地产项目融资渠道与风险控制策略分析
- 长期合作伙伴供应商邀请函4篇范文
- 家居用品瑕疵致歉信范例(3篇)范文
- 通信网络市场营销策划绩效评定表
- 厨师长餐饮口碑绩效考核表
- 2026年专利代理师资格考试相关法律知识试题与答案
- 临时用电施工专项施工方案
- 2026广东深圳市急救中心招聘120调度员2人笔试参考题库及答案详解
- (2026)行政执法人员考试题库附答案
- 启动高水平应用型本科高校双优建设实施方案
- 2025-2026中国商飞公司秋季校园招聘笔试历年典型考点题库附带答案详解
- 2026年全国新高考2卷数学试卷(含答案及解析)
- 2026中国智慧城市大脑系统建设进度与区域落地案例分析报告
- 2026中国碳捕集技术发展现状及未来应用前景分析报告
- 气象新员工业务入职培训手册
- 2026年乌鲁木齐一中分班测试题及答案
评论
0/150
提交评论