FATE icon indicating copy to clipboard operation
FATE copied to clipboard

HomoOneHotParam参数need_alignment

Open iceicei opened this issue 1 year ago • 5 comments

在看过federatedml_component的文档、HomoOneHotParam方法参数解释以及homo_ohe_base.py文件,还是没太懂HomoOneHotParam参数need_alignment的具体作用,文档中说得比较含糊。请问这个参数具体的作用是什么呢,能详细说一下吗?谢谢

iceicei avatar Aug 29 '23 01:08 iceicei

我理解不启用对齐的话,如果特征X0在guest方有“1”、“2”两种取值,在host方有“1”、“2”、“3”三种取值,那最后guest方只会独热生成两列,host方生成三列

amenkim avatar Aug 30 '23 02:08 amenkim

我理解不启用对齐的话,如果特征X0在guest方有“1”、“2”两种取值,在host方有“1”、“2”、“3”三种取值,那最后guest方只会独热生成两列,host方生成三列

但是多余的一列怎么处理呢,直接抛弃还是什么的。

iceicei avatar Aug 30 '23 02:08 iceicei

看源码应该是两边把所有取值都发给arbiter,arbiter合并去重后再发给两方

amenkim avatar Aug 30 '23 02:08 amenkim

看源码应该是两边把所有取值都发给arbiter,arbiter合并去重后再发给两方

我测试了一下,在不启用对齐的情况下,特征X0在guest方和host方都只有“1”、“2”两种取值,最终会报错。 特征X0在guest方有“1”、“2”两种取值,在host方有“1”、“2”、“3”三种取值,最终也会报错。 这两种情况下开启特征对齐都没问题...

iceicei avatar Aug 30 '23 09:08 iceicei

我复现了下,可能是没启用need_alignment时, homo_ohe_base.py 里 self.col_maps 里的 TransferPair 漏了调 encode_new_headers() 方法,不知道是不是bug……

amenkim avatar Aug 30 '23 10:08 amenkim

本质上都要对齐,否则无法保证两边的onehot维度一致,这个参数更多的意思是“我是否保证数据是已经对齐的了”,如果能保证,那么可以少做一次数据扫描。

sagewe avatar Jul 18 '24 02:07 sagewe