一、预处理和隐私求交
预处理:DataFrame和FedNdarraydd
DataFrame:联邦表格数据的封装,DataFrame由多个参与方的数据块构成,支持数据水平(每一方的各自的特征一致,但是都有各自的样本)、垂直切分(每一方有各自的特征,但是样本是一致的)和混合切分(数据既有水平切分又有垂直切分),分别对应三种API:HDataFrame、VDataFrame、MixDataFrame。
FedNdarray:联邦ndarray的封装,同样由多个参与方的数据块构成,支持水平和垂直切分,对应统一的API:FedNdarray
DataFrame和FedNdarray各自提供了一些读写api可供直接使用,隐语也提供多种预处理工具来处理这些数据,可以直接使用DataFrame API处理数据,或者使用sf.preprocessing包内的各类预处理组件处理
隐私求交PSI
隐私求交是一种使用密码学方法,获取两份数据内容的交集的算法。PSI过程中不泄露任务交集以外的信息。
在垂直拆分场景中,隐私求交常用于第一步的数据堆积,然后可以进一步做数据分析或机器学习建模。
在隐语中PSI有两种使用方式,分别如下。
二、决策树模型和线性回归模型
决策树模型
隐语支持多种决策树算法(XGB),同时支持回归和二分类训练,可根据使用场景和安全性需求选用
线性回归模型
隐语支持多种线性回归模型,满足不同的使用场景,并有一些针对性的优化
三、神经网络算法
根据使用场景的不同,隐语提供了两种神经网络算法:水平联邦学习、垂直拆分学习。并分别提供两套API:
水平联邦学习:secretflow.ml.nn.FLModel
垂直拆分学习:secretflow.ml.nn.SLModel
水平联邦学习和垂直拆分学习都属于非可证安全算法,其安全性需要根据场景具体分析。可以通过一些安全加固组件(安全聚合、差分隐私、稀疏化等)加强安全性
水平联邦学习
隐语提供的水平联邦学习FLModel是一个通用的范式,而不是一个具体的模型或算法,可以自由的定义模型和训练参数。
目前FLModel支持TensorFlow和PyTorch两种后端,可以使用tf或torch原生的方式编写模型代码,然后使用FLModel训练。或者可以直接使用封装好的模型库,比如torchvision和tf.keras.applications
垂直拆分学习
隐语提供的垂直拆分学习SLModel同样是一个通用的范式,可以自由定义模型和训练参数。
SLModel同样支持TensorFlow和PyTorch两种后端,可以使用tf或torch原生的方式编写模型代码,然后使用SLModel训练。
与水平联邦相比,垂直拆分学习的框架略有不同,他的模型被拆分成2份、3份或者更多,分别分布在不同的参与方。建模时需要针对拆分学习架构重新设计模型结构。下面是两方场景下常见的两种结构。隐语提供了一个拆分好的模型库:sf.mlnn.applications