Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你好,请教案例中特征工程的一些技巧 #4

Open
winfieldcw opened this issue Aug 30, 2016 · 2 comments
Open

你好,请教案例中特征工程的一些技巧 #4

winfieldcw opened this issue Aug 30, 2016 · 2 comments

Comments

@winfieldcw
Copy link

winfieldcw commented Aug 30, 2016

1.处理过程:

2.1我们将原始数值特征进行升序排序,将得到的rank作为新的特征。比如特征是15,10,2,100 ,排序后的新特征就是3,2,1,4。
2.2将原始特征等量划分到10个区间作为离散特征,每个新特征的取值就是1-10(可以等量或者等值,我们选择等量划分)
2.3计算每个样本离散特征1-10的数量,生成10个新的特征
2.4将特征进行两两交叉x*y x^2+y^2 1/x+1/y 等等,在生成特征的同时计算与标签列的皮尔逊相关系数保留topK特征(我们保留了1500个)
2.5类别特征进行one-hot处理 (哑变量)
2.6使用xgboost输出的特征重要性对特征进行选择

2.问题

(1)2.1和2.2进行了rank和离散化,是否考虑特征之间的冗余问题?假如原始特征a1,离散化的特征a2,排序后的特征a3,如果a1,a2,a3,在2.6中重要性排在前3位,是否需要考虑只保留其中一个?
(2)案例中是否有考虑特征之间的冗余情况,即因子特征,如由a,b特征产生了c特征,这个时候a,b特征是否需要丢弃掉,如2.4步
(3)xgboost是否会自己忽略表现差的特征,假如有1500维的特征,后面的1000维重要性很低,模型是否会忽略,即一般是将1500维仍进去跑,还是只取前500维?
(4)xgboost最终的特征数保留在什么数量级比较合适,如100维,还是1000维等(即2.6中根据重要性选择,一般保留多少维的特征)

谢谢

@wepe
Copy link
Owner

wepe commented Aug 30, 2016

1, 2. 特征之间可能会有冗余,可以考虑把几种特征放在一起训练,再刷选一遍。我们当时怎么做的我不太记得了。
3. 判别性差的特征,在训练过程中是有可能不被选中的。训练完成后,模型可以输出feature score,这里面没出现的特征,说明在整个迭代过程中没被选中过。
4. 具体保留多少要看具体数据,可以通过交叉验证去确定。

@winfieldcw
Copy link
Author

好的,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants