# 联邦机器学习 Federatedml模块包括许多常见机器学习算法联邦化实现。所有模块均采用去耦的模块化方法开发,以增强模块的可扩展性。具体来说,我们提供: 1. 联邦统计: 包括隐私交集计算,并集计算,皮尔逊系数, PSI等 2. 联邦信息检索:基于OT的PIR(SIR) 3. 联邦特征工程:包括联邦采样,联邦特征分箱,联邦特征选择等。 4. 联邦机器学习算法:包括横向和纵向的联邦LR, GBDT, DNN,迁移学习, 无监督学习,纵向半监督学习等 5. 模型评估:提供对二分类,多分类,回归评估,聚类评估,联邦和单边对比评估 6. 安全协议:提供了多种安全协议,以进行更安全的多方交互计算。 ## 算法清单 | 算法 | 模块名 | 描述 | 数据输入 | 数据输出 | 模型输入 | 模型输出 | | ------------------------------------------------------------------------------ | ----------------------- | --------------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------- | -------------------------- | | [DataTransform](data_transform.md) | DataTransform | 该组件将原始数据转换为Instance对象。 | Table,值为原始数据 | 转换后的数据表,值为[Data Instance](../../python/federatedml/feature/instance.py)的实例 | | DataTransform模型 | | [Intersect](intersect.md) | Intersection | 计算两方的相交数据集,而不会泄漏任何差异数据集的信息。主要用于纵向任务。 | Table | 两方Table中相交的部分 | | Intersect模型 | | [Federated Sampling](sample.md) | FederatedSample | 对数据进行联邦采样,使得数据分布在各方之间变得平衡。这一模块同时支持单机和集群版本。 | Table | 采样后的数据,同时支持随机采样和分层采样 | | | | [Feature Scale](scale.md) | FeatureScale | 特征归一化和标准化。 | Table,其值为instance | 转换后的Table | 变换系数,例如最小值/最大值,平均值/标准差 | | | [Hetero Feature Binning](feature_binning.md) | HeteroFeatureBinning | 使用分箱的输入数据,计算每个列的iv和woe,并根据合并后的信息转换数据。 | Table,在guest中有标签y,在host中没有标签y | 转换后的Table | | 每列的iv/woe,分裂点,事件计数,非事件计数等 | | [Homo Feature Binning](feature_binning.md) | HomoFeatureBinning | 计算横向场景的等频分箱 | Table | 转换后的Table | | 每列的分裂点 | | [OneHot Encoder](onehot_encoder.md) | OneHotEncoder | 将一列转换为One-Hot格式。 | Table, 值为Instance | 转换了带有新列名的Table | | 原始列名和特征值到新列名的映射 | | [Hetero Feature Selection](feature_selection.md) | HeteroFeatureSelection | 提供多种类型的filter。每个filter都可以根据用户配置选择列。 | Table, 值为Instance | 转换的Table具有新的header和已过滤的数据实例 | 模型输入如果使用iv filters,则需要hetero\_binning模型 | 每列是否留下 | | [Union](union.md) | Union | 将多个数据表合并成一个。 | Tables | 多个Tables合并后的Table | | | | [Hetero-LR](logistic_regression.md) | HeteroLR | 通过多方构建纵向逻辑回归模块。 | Table, 值为Instance | | | Logistic回归模型,由模型本身和模型参数组成 | | [Local Baseline](local_baseline.md) | LocalBaseline | 使用本地数据运行sklearn Logistic回归模型。 | Table, 值为Instance | | | | | [Hetero-LinR](linear_regression.md) | HeteroLinR | 通过多方建立纵向线性回归模块。 | Table, 值为Instance | | | 线性回归模型,由模型本身和模型参数组成 | | [Hetero-Poisson](poisson_regression.md) | HeteroPoisson | 通过多方构建纵向泊松回归模块。 | Table, 值为Instance | | | 泊松回归模型,由模型本身和模型参数组成 | | [Homo-LR](logistic_regression.md) | HomoLR | 通过多方构建横向逻辑回归模块。 | Table, 值为Instance | | | Logistic回归模型,由模型本身和模型参数组成 | | [Homo-NN](homo_nn.md) | HomoNN | 通过多方构建横向神经网络模块。 | Table, 值为Instance | | | 神经网络模型,由模型本身和模型参数组成 | | [Hetero Secure Boosting](ensemble.md) | HeteroSecureBoost | 通过多方构建纵向Secure Boost模块。 | Table,值为Instance | | | SecureBoost模型,由模型本身和模型参数组成 | | [Hetero Fast Secure Boosting](ensemble.md) | HeteroFastSecureBoost | 使用分层/混合模式快速构建树模型 | Table,值为Instance | Table,值为Instance | | FastSecureBoost模型 | | [Evaluation](evaluation.md) | Evaluation | 为用户输出模型评估指标。 | Table(s), 值为Instance | | | | | [Hetero Pearson](correlation.md) | HeteroPearson | 计算来自不同方的特征的Pearson相关系数。 | Table, 值为Instance | | | | | [Hetero-NN](hetero_nn.md) | HeteroNN | 构建纵向神经网络模块。 | Table, 值为Instance | | | 纵向神经网络模型 | | [Homo Secure Boosting](ensemble.md) | HomoSecureBoost | 通过多方构建横向Secure Boost模块 | Table, 值为Instance | | | SecureBoost模型,由模型本身和模型参数组成 | | [Homo OneHot Encoder](homo_onehot_encoder.md) | HomoOneHotEncoder | 将一列转换为One-Hot格式。 | Table, 值为Instance | 转换了带有新列名的Table | | 原始列名和特征值到新列名的映射 | | [Hetero Data Split](data_split.md) | HeteroDataSplit | 将输入数据集按用户自定义比例或样本量切分为3份子数据集 | Table, 值为Instance | 3 Tables | | | | [Homo Data Split](data_split.md) | HomoDataSplit | 将输入数据集按用户自定义比例或样本量切分为3份子数据集 | Table, 值为Instance | 3 Tables | | | | [Column Expand](column_expand.md) | ColumnExpand | 对原始Table添加任意列数的任意数值 | Table, 值为原始数据 | 转换后带有新数列与列名的Table | | Column Expand模型 | | [Secure Information Retrieval](sir.md) | SecureInformationRetrieval | 通过不经意传输协议安全取回所需数值 | Table, 值为Instance | Table, 值为取回数值 | | | | [Hetero Federated Transfer Learning](hetero_ftl.md) | FTL | 在两个party间构建联邦迁移模型 | Table, 值为Instance | | | FTL神经网络模型参数等 | | [PSI](psi.md) | PSI | 计算两个表特征间的PSI值 | Table, 值为Instance | | | PSI 结果 | | [Hetero KMeans](hetero_kmeans.md) | HeteroKMeans | 构建K均值模块 | Table, 值为Instance | Table, 值为Instance; Arbiter方输出2个Table | | Hetero KMeans模型 | | [Data Statistics](statistic.md) | DataStatistics | 这个组件会对数据做一些统计工作,包括统计均值,最大最小值,中位数等 | Table, 值为Instance | Table | | Statistic Result | | [Scorecard](scorecard.md) | Scorecard | 转换二分类预测分数至信用分 | Table, 值为二分类预测结果 | Table, 值为转化后信用分结果 | | | | [Sample Weight](sample_weight.md) | SampleWeight | 根据用户设置对输入数据加权 | Table, 值为Instance | Table, 值为加权后Instance | | SampleWeight Model | | [Feldman Verifiable Sum](feldman_verifiable_sum.md) | FeldmanVerifiableSum | 不暴露隐私数据的前提下进行多方隐私数据求和 | Table, 值为加数或被加数 | Table, 值为求和结果 | | | | [Feature Imputation](feature_imputation.md) | FeatureImputation | 使用指定方法、数值填充特征缺失值 | Table, 值为Instance | Table, 值为填充后Instance | Feature Imputation Model | FeatureImputation Model | | [Label Transform](label_transform.md) | LabelTransform | 转化输入数据与预测结果的标签值 | Table, 值为Instance或预测结果 | Table, 值为标签转化后的Instance或预测结果 | | LabelTransform Model | | [Hetero SSHE Logistic Regression](logistic_regression.md) | HeteroSSHELR | 两方构建纵向逻辑回归(无可信第三方) | Table, 值为Instance | Table, 值为Instance | | SSHE LR Model | | [Hetero SSHE Linear Regression](linear_regression.md) | HeteroSSHELinR | 两方构建纵向线性回归(无可信第三方) | Table, 值为Instance | Table, 值为Instance | | SSHE LinR Model | | [Positive Unlabeled Learning](positive_unlabeled.md) | PositiveUnlabeled | 构建positive unlabeled learning(PU learning)模型 | Table, 值为Instance | Table, 值为Instance | | | ## 安全协议 - [Encrypt](secureprotol.md#encrypt) - [Paillier encryption](secureprotol.md#paillier-encryption) - [RSA encryption](secureprotol.md#rsa-encryption) - [Hash](secureprotol.md#hash-factory) - [Diffne Hellman Key Exchange](secureprotol.md#diffne-hellman-key-exchange) - [SecretShare MPC Protocol(SPDZ)](secureprotol.md#secretshare-mpc-protocolspdz) - [Oblivious Transfer](secureprotol.md#oblivious-transfer) - [Feldman Verifiable Secret Sharing](secureprotol.md#feldman-verifiable-secret-sharing)