基于隐私保护的机器学习算法介绍

  • 环境:我们以v1.6.1b0版本为例,通过secretnote进行介绍。

一、预处理和隐私求交

1. 数据结构:DataFrame 和 FedNdarray

(左:HDtaFrame、中:VDataFrame、右:MixDataFrame)

  • 构建联邦表

    联邦表是一个跨多方的虚拟概念。

    联邦表中各方的数据存储在本地,不允许出域。

    1. 除了拥有数据的一方之外,没有人可以访问数据存储。

    2. 联邦表的任何操作都会由Driver调度给每个Worker,执行指令会逐层传递,直到特定拥有数据的Worker的Python Runtime。

    3. 框架确保只有 Worker.device 和 Object.device相同的时候才能够操作数据。

    4. 联合表旨在从中心角度管理和操作多方数据

    5. 接口方面和 pandas.DataFrame 对齐,以降低多方数据操作的成本。

  • DataFrame

    与pandas的DataFrame类似,作为联邦表格数据的封装。DataFrame由多个参与方的数据块构成,支持数据水平、垂直切分和混合切分,分别对应3组API:HDataFrame、VDataFrame、MixDataFrame。

    • VDataFrame底层如下:

  • FedNdarray

    与numpy的ndarray类型,作为联邦ndarray的封装,同样由多个参与方的数据块构成,支持水平切分和垂直切分,对应统一的API:FedNdarray

2. 如何进行预处理

DataFrame和FedNdarray提供了一些读写api可供直接使用。

  • 可以直接使用DataFrame API处理数据

    在SecretFlow中提供了类似于pandas.read_csv的接口来将各方数据的CSV读取成为一个联邦数据集。

    • 对于水平场景有secretflow.horizontal.read_csv

    • 对于垂直场景有 secretflow.vertical.read_csv

      首先准备好两方的数据csv文件,垂直场景两方数据并不强制要求对齐,因为这里提供了PSI的能力。

      • Alice: datapath (alice机器能访问到的本地路径)

      • Bob: datapath (bob机器能访问到的本地路径)

      垂直场景是各方的schema不同,但是每一方都拥有每一个column的全部数据。不再需要比较器和聚合器。但是各方数据不一定是对齐的,我们需要在读取时候通过PSI来进行数据对齐。

      • path_dict:数据路径

      • spu: 用于求交使用的spu设备

      • keys: 用于求交的keys(支持多列求交)

      • drop_keys: 求交后需要删去的ID列名

      from secretflow.data.vertical import read_csv
       ​
       v_alice_path = "/root/vertical_cancer_party1.csv"
       v_bob_path = "/root/vertical_cancer
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值