三个有效的特征选择策略

用户成长系列
标签: #<Tag:0x00007fcf6aa89e68>

(小马哥) #1

特征选择是除数据之外最关键的步骤。尽管这一步非常必要,但很多指导文章中却完全忽略这一过程。

每个机器学习工程师都会说:
       "垃圾数据输入,垃圾结果输出"

本文将展示一些很棒的特征选择方法,帮助读者在机器学习中更加如鱼得水。

特征选择是什么?实际问题中,需要什么样的特征来帮助解决建模并不总是很清晰。在这个问题上,数据总是存在各种问题,比如数据过多,不相关等。特征选择主要研究如何使用算法选择出重要特征。

那为什么不将所有的特征都扔进机器学习模型,然后收工回家呢?

在实际问题中可能没有开源数据集,或者这些数据不总是含有解决问题的相关信息。在这些现实问题面前,特征选择能够最大化数据相关性,降低数据冗余度。这有助于建立好的模型,减小模型大小。

最好的特征选择方法。

现需要预测水上公园的门票销售量。我们决定关注天气数据,冰淇淋消费量,咖啡消费量和月份。

从图1中可以看出,夏天比其他的季节能够销售出更多的门票,冬天销售出0张门票。咖啡消费量看起来全年稳定。冰淇淋全年都存在消费,消费量在六月份达到顶峰。

image

$$ 表1:案例数据表格 $$

image

$$ 表1:案例数据示意图 $$

我们想要预测门票销售,但我们不需要为了得到最好结果获取全部数据。只要得到N维合适的数据和一个K值就会得到最好的结果。然而这里有海量的数据,都是不同大小数据集的组合。

我们的目标是在不损害预测能力的情况下,降低数据维数。现在退一步回来看看能够使用的工具。

彻底的研究

这个工具百分百地找到构建模型的最好的特征组合,因为它搜索每一个特征的可能的组合,然后找到数据维度最低的组合。

在本文案例中,有15个可能的组合。计算组合的数量需采用公式:$ 2^n-1$。这个方法对少量特征管用,但当你有3000个特征时,事情很快会失去控制。

幸运的是,这里还有一个比较好的方法。

随机特征选择

随机特征挑选在大多数情况下都工作得很好。假设你想将特征降低50%,随机挑选50%的特征移除即可。然后训练模型,验证性能。重复以上过程直到满意为止。比较难过的是,这仍然是一个暴力解决问题的方法。

如果你有一大堆特征,你会怎么做?

最小冗余最大相关特征选择

把所有的想法揉合到一个算法里,这就是最小冗余最大相关(mRMR)特征选择。算法思想为:最小化特征冗余度的同时最大化相关性。相关性和冗余度计算公式如下:

$$ Relevancy = \frac{\sum_{i=1}^n{c_ix_i}}{\sum_{i=1}^n{x_i}} $$

$$ Redundancy = \frac{\sum_{i,j=1}^n{a_{ij}x_ix_j}}{(\sum_{i=1}^n{x_i})^2} $$

实现mRMR的算法策略如下:。

克隆策略
In [1]:
from scipy.optimize import minimize
import numpy as np
In [2]:
matrix = np.array([
    [0,1,2,1,2],
    [0,1,3,2,3],
    [5,2,3,3,5],
    [10,3,3,4,12],
    [20,5,2,5,15],
    [25,8,4,6,20],
    [23,7,2,7,18],
    [20,6,4,8,16],
    [8,4,2,9,12],
    [2,1,3,10,8],
    [0,1,2,11,4],
    [0,1,2,12,3]
])
In [3]:
corrcoef = np.corrcoef(np.transpose(matrix))
relevancy = np.transpose(corrcoef)[0][1:]
In [4]:
#set initial to all dimensions on
x0 = [1,1,1,1]
In [5]:
#minimize the redundancy minus relevancy

fun = lambda x: sum([corrcoef[i+1, j+1] * x[i] * x[j] for i in range(len(x)) for j in range(len(x))]) / (sum(x) ** 2) - (sum(relevancy * x) / sum(x))
    
In [6]:
res = minimize(fun, x0, bounds=((0,1), (0,1), (0,1), (0,1)))
In [7]:
res.x
Out[7]:
array([ 0.99868791,  0.29757473,  0.32868714,  0.        ])

这个结果并非如预想那样:冰淇淋的消费看来可以很好地预测门票销售,气温则不能。在这个案例中看来,我们只需要一个变量就可以很精确地模拟门票销售,但很可能与你以后需处理问题非常不一样,

结论

通过本文,读者应该已经很好地理解特征选择的方法和效果:帮助减少特征数量,帮助构造输出既定目标的最好模型。


原文:《3 effective feature selection strategies》
点击链接,阅读原文