feature_selection_GAAlgorithm icon indicating copy to clipboard operation
feature_selection_GAAlgorithm copied to clipboard

入选变量数

Open kittykwy opened this issue 6 years ago • 8 comments

你好,看了你之前的方差以及卡方等选择变量方法,可以设置入选变量数,我自己也实现了。 想问下你,这个遗传算法,在哪儿可以设置入选变量数,或者选择训练的变量数,可以像随机森林一样,随机抽一部分变量训练。 我自己的样本有155个变量(不包含target),结果训练处的最佳组合就155个变量,AUC为1 想问下,我想设置下我的最终入选变量数为<20,怎么设置。 因为我的目的是做评分卡,变量太多了

kittykwy avatar Jul 13 '18 09:07 kittykwy

因为遗传算法里面有随机因子,所以没办法控制输出变量个数除非修改内部函数来强制约束,不过你可以将self.columns里面的变量设置少一点(35维左右)应该是可以控制输出变量在20维以内,因为算法只能从self.columns里面的特征进行选择,所以你可以把你认为比较重要的那些变量放进去试试。我觉得遗传算法是为了选择出一个好的特征组合而并不一定是最有区分度的特征。 关于AUC为1的情况,想请问你self.columns这个list是怎样的,这个list里面第一个元素应该是标签(target),其它元素是放特征。可以看看这个Issue里面的讨论或许对你有用

rogeroyer avatar Jul 13 '18 10:07 rogeroyer

我明白了,对于变量少时,可以用遗传算法选最优组合,我的第一个变量时target,谢谢你的回答,代码写的很好!还有想问下,里面的这个参数,aGeneLenght (基因长度),可不可以理解为第一次,进入遗传算法的,关键变量的数量少一点,比如我设置 aGeneLenght =len(self.columns)*0.5,是不是最后出来的最优组合变量就会少一点,因为第一步筛选的时候只会选择一半的变量

kittykwy avatar Jul 13 '18 11:07 kittykwy

aGeneLenght是基因长度,取决于self.columns的长度,如果让aGeneLenght =len(self.columns)*0.5的话基因长度就改变了,那么self.columns里面的变量就表示不完全,这样是不可行的。

rogeroyer avatar Jul 13 '18 13:07 rogeroyer

明白,谢谢你,提供的代码,和思路讲解

kittykwy avatar Jul 16 '18 06:07 kittykwy

你好,只能用于二分类的特征选择吗?

jjxsecurity avatar Dec 02 '19 15:12 jjxsecurity

可以进行多分类,需要修改下代码文件Feature_selection_genetic_algorithm.py 中的auc_score函数,评测指标要求越大越好。

rogeroyer avatar Dec 02 '19 15:12 rogeroyer

你好,请问我是否可以通过控制initPopulation函数里随机产生gene中0和1的比例来控制最终的入选变量数?

vantree avatar Nov 27 '20 13:11 vantree

应该不行,这控制不了变异过程

rogeroyer avatar Nov 27 '20 13:11 rogeroyer