sklearn 的 chi2 特征选择在数据量大、特征稀疏(出现次数为 1)时会导致除数为 0。

解决思路

自己实现 chi2,或参考 sklearn:特征重编码、样本剔除。使用样本权重时需同步剔除;chi2 应在全数据集上进行再切分,否则重编码不一致。预测时需编码映射文件。

实测

30G 数据、百万级特征,筛选后约 20w 特征,auc 从 0.86 降至 0.85。