# k-Anonymity **Repository Path**: yi-junquan/k-anonymity ## Basic Information - **Project Name**: k-Anonymity - **Description**: k匿名方法的评测,Mondrian、TDG、OKA - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-23 - **Last Updated**: 2024-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # An Evaluation of K-Anonymity in Classical Machine Learning ## 项目简介 本研究系统地评估了三种流行的k-匿名算法对五种传统机器学习模型性能的影响。我们的分析表明,增加k-匿名性限制通常会降低模型性能。性能下降的程度取决于数据集的大小和具体使用的匿名化方法。本研究的结果为研究者在匿名化数据集上部署机器学习模型时平衡隐私保护和模型效用提供了宝贵的见解。 ![arc](draw/architecture.jpg) ## 目录结构 - `anon_alg`: 匿名化算法的实现, 一共实现了mondrian, oka, tdg三种k匿名算法 - `datasets`: 数据集存放位置, 我们主要在adults和mgm这两个在k匿名方法相关论文中常见的测试数据集用于评估我们实现的k匿名方法 - `draw`: 存放论文相关图片 - `ml`: 用于构建我们评估中使用到的机器学习模型 - `results`: 存放各种结果数据, 如评估结果, 匿名化后的数据集等 - `util`: 各种工具类 - `main.py`: 入口文件 - `adult_exp.ipynb`: adult数据集的各种实验 - `mgm_exp.ipynb`: mgm数据集的各种实验 - `draw_result.ipynb`: 画图 - `requirements.py`: 依赖声明 ## 运行说明 ### 环境准备 ```shell # 创建并激活虚拟环境 conda create --name k-anonymity python=3.8.19 conda activate k-anonymity # 安装依赖 pip install -r requirements.txt ``` ### 参数说明 ```shell python main.py -h usage: main.py [-h] [--dataset {mgm,adult}] [--anonymity_method {mondrian,oka,tdg}] [--model {lr,nb,knn,svm,gbt}] [--anonymity ANONYMITY] [--experiment {Y,N}] 使用不同的算法对数据进行匿名化,并分析匿名化对数据的影响 optional arguments: -h, --help show this help message and exit --dataset {mgm,adult} 训练使用的数据集, 默认值为mgm数据集 --anonymity_method {mondrian,oka,tdg} k匿名方法, 默认为mordrian --model {lr,nb,knn,svm,gbt} 机器学习模型, 默认值为LR --anonymity ANONYMITY k-匿名性值, 默认值为50 --experiment {Y,N} 如果开启实验模式, 将会测试多种k值 ``` ### 单次实验 可以直接在终端上运行如下命令进行单次实验: 1、 使用mondrian算法在adult数据集上进行20-匿名化,然后在逻辑回归模型上进行训练: ```shell python main.py --dataset adult --anonymity_method mondrian --model lr --anonymity 20 ``` 2、 使用oka算法在mgm数据集上进行15-匿名化,然后在梯度提升树模型上进行训练: ``` python main.py --dataset mgm --anonymity_method oka --model gbt --anonymity 15 ``` ### 多次实验 也可以执行`adult_exp.ipynb`和`mgm_exp.ipynb`来复现报告的结果。 ### 结果可视化 执行`draw_result.ipynb`可以得到匿名化结果图和机器学习结果图: ![F1_Score.png](results/figure/F1_Score.png) ![K_Anon_Eval.png](results/figure/K_Anon_Eval.png) ## 贡献说明 该选题由李匡源和易俊泉合作完成, 我们在代码实现和论文写作中的贡献如下: | Module | Content | Junquan Yi | Kuangyuan Li | | ------- | ----------- | ---------- | ------------ | | Report | Motivation | 60% | 40% | | | RelatedWork | 50% | 50% | | | Approach | 40% | 60% | | | Evaluation | 50% | 50% | | | Conclusion | 90% | 10% | | Code | Framework | 50% | 50% | | | Mondrian | 10% | 90% | | | TDG | 10% | 90% | | | OKA | 90% | 10% | | | Evaluation | 90% | 10% | | | Visulaztion | 90% | 10% | | Average | | **50%** | **50%** | 整体而言,各自作出50%的贡献 ### 代码实现: 代码部分的实现可以分为代码框架搭建, 匿名化算法实现, 以及最后的实验和画图 1. 代码框架: 由李匡源和易俊泉合作完成 2. 匿名化算法: oka匿名化算法由易俊泉同学完成, mondrian、tdg匿名化算法由李匡源同学完成 3. 实验和画图: 主要由易俊泉同学完成, 李匡源同学辅助 ### 论文写作: 论文写作中 1. Motivation: 主要由易俊泉同学完成, 李匡源同学检查并进行润色 2. RelatedWork: 共同完成 3. Approach: oka方法的介绍由易俊泉同学完成, mondrian、tdg方法由李匡源同学完成 4. Evaluation: 共同完成, 由李匡源同学写出大致内容, 易俊泉同学添加图片和表格,并进行检查、填充、润色和修改 5. Conclusion: 主要由易俊泉同学完成