特征选择技术是建模过程中最核心的部分,因为不一定所有的特征都有效,而且特征里包含的噪声也会影响着模型的效果。
所以,最直接的方式就是:在建模前做一次特征选择,只保留有价值的特征。
特诊选择的几种常见方法:
- 尝试所有组合
- 贪心算法
- L1正则
- 使用树算法
- 相关性计算
第一、尝试所有组合:
比如有五个特征,其组合有2^5-1种,这种方法的主要问题在于时间复杂度太高.仅适用于特征较少的情况,好处就是可以帮助我们得到全局最优解
第二、贪心算法:
还是5个特征,首先循环每个特征与模型的效果,选出最好的特征,剩下的特征与之前选出的特征依次组合,选出最好的组合,以此下去,直到模型不再优化
这种方法必须要结合具体某一种模型一起使用。这也就说,如果我们使用的模型不一样,则选出来的特征也可能是不一样的。比如一开始使用了逻辑回归,但之后改换成神经网络,那这时候就需要重新进行特征的选择。
但它的优势也比较明显。由于跟模型紧密绑定在一起,所以效果好。另一方面,由于是贪心算法所以效率也高。
第三、L1正则:
L1正则具有稀疏性,加入L1正则之后,大部分特征的权重会变为零,所以起到了特征选择的作用.
L1正则特别适用于样本量少,但特征维度特别高的情况。一个经典的场景就是神经科学。如果把每个人大脑里的神经元看作是特征,那这个特征维度非常之高。另外,我们也知道这个领域的样本是非常昂贵的
第四、使用树算法:
构建树的过程其实就是特征重要性排序的过程,所以完全可以用这种方式来选择特征,也是一种非常常用的特征选择的方法。
第五、相关性计算:
依次计算各特征与目标变量的相关性,相关性越大,则说明特征越重要
最后一种方法就是计算变量之间的相关性。这种方法不跟某一种机器学习算法绑定在一起,这也是它的优势。
为什么要做特征选择?
- 特征越多,模型就越容易过拟合
- 很多特征可能是一个噪声,噪声对模型没有任何帮助,反而会影响模型的效果
特征选择到底用什么方法比较好呢?
没有正确的答案,要看问题本身
比如我们要构建一个评分卡系统,而且这是跟钱直接打交道的,所以每一个使用的变量都要精心地设计。这时候,我们通常花一些精力在变量相关性分析上,并决定哪些变量要放在模型里。通过相关性分析来选择变量有一个很大的好处:就是很强的可解释性,这也是金融领域的需求