当一个模型中有成千上万的特征时,这时候应该如何做特征选择呢?
1.尽量使用LR而非XGB
高维稀疏特征lr 的效果会比 gbdt 好
每次都根据当前节点最大熵分割来选择变量那么,高维稀疏数据集里很多“小而美”的数据就被丢弃了
比如你买叶酸,买某些小的孕妇用品品类,对应这些人6个月后买奶粉概率高达40%,但叶酸和孕妇用品销量太小了,用户量全网万分之一都不到,这种特征肯定是被树算法舍弃的,哪怕这些特征很多很多
理想情况下时将特征放入模型中看模型的表现是否有提高,但这样的做法不太经济。需要大量的次数。
forward feature selection:
is a heuristic that significantly reduces the number of models that we need to learn. We begin with an empty model and then on each iteration of the algorithm we choose a feature that gives the best performance when added to the current set of feature
有些变量单独看对结果不重要,但是和其他变量一起可能会对结果有影响,所以用forward-backward方式筛选变量不太好。
模型筛选变量的方式有问题,在树模型中重要的变量不一定在logistic regression中重要。
lasso:
lasso筛选变量会在一组的共线变量中选择一个,这样会导致结果不稳定。当有一组共线的变量时,lasso倾向于选择一组而忽略其他。
当特征的数量大于样本数量时,lasso只能选择和样本n一样的数据。
elasticNet :
l1部分产生稀疏性。
l2部分去除对n数量的限制,鼓励组的效应,稳定l1正则
reference https://web.stanford.edu/~hastie/
在统计分析中,如果存在共线性,则无法区分他们对变量的影响
而所谓的多重共线性,是指 predictor variable 之间的关系,当预测变量间有跟高的相关度时,会造成信息冗余,影响回归模型的结果。检测的方法是计算所有 predictor variable pairs 间的相关系数。
2.决策树筛选变量对结果的影响
1.决策树筛选的变量之间的独立性可能不够,因为决策树每次选择变量时不会考虑变量和其他变量的相关性。所以,如果其他模型自变量的相关性很敏感,用决策树筛选变量时需要检查变量的相关性。
2.如果为回归模型筛选变量,需要注意,决策树筛选出的变量和因变量之间的关系可能不具有单调性,因此用在回归模型中可能并不好用。这样的变量可以不用,或者进行离散化处理。
注:
(1):如果训练集的样本是分层抽样的,即抽样中各类别的比例和原始数据不同,那么,模型结果显示的属于某一类的概率也是不准确的。这时,概率排名是有意义的,但概率本身没有意义。
(2):使用决策树直接预测记录属于哪个类别并不好用,因为对于很多情况下,记录属于某个类别的比例特别低,而这个特别低比例的记录却是用户真正感兴趣的记录。需要根据预测出来的概率来做进一步的判断