likelihood encoding
likelihood encoding kaggle上使用的是two levels cross validation的方法来做这个编码
把数据集分成20个folds,留1个fold out,20次循环,19个inner folds又分成10份,1份out,其余9份组成数据集group by某个categorical feature,这个分类变量每个取值的y_mean求出来,就是那份out的预测值(临时的),如果那份out中有没见过的值怎么办,用19个inner folds的平均y_mean(这里kaggle上的代码是这么写的,但是我觉得有泄露,应该用9份内部folds的平均y_mean去替代,最外部的out如果有没见过的value,就用19个folds的y_mean,这样才完全没有去触碰被赋值的部分),循环10次,那么这个feature的某个value就有10个不同的编码值,这10个不同的编码值再求平均,就是外层out的编码值,20次循环得到20个编码值,feature同一个value就有20个编码值,把这20个编码值求平均,就是测试集的编码值,测试集这个feature的一个value只对应一个值!
把数据集分成20个folds,留1个fold out,20次循环,19个inner folds又分成10份,1份out,其余9份组成数据集group by某个categorical feature,这个分类变量每个取值的y_mean求出来,就是那份out的预测值(临时的),如果那份out中有没见过的值怎么办,用19个inner folds的平均y_mean(这里kaggle上的代码是这么写的,但是我觉得有泄露,应该用9份内部folds的平均y_mean去替代,最外部的out如果有没见过的value,就用19个folds的y_mean,这样才完全没有去触碰被赋值的部分),循环10次,那么这个feature的某个value就有10个不同的编码值,这10个不同的编码值再求平均,就是外层out的编码值,20次循环得到20个编码值,feature同一个value就有20个编码值,把这20个编码值求平均,就是测试集的编码值,测试集这个feature的一个value只对应一个值!
留言
張貼留言