【学习笔记】特征组合

面对非线性问题,我们可能需要特征组合来解决问题。

特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。”

我们可以创建很多特征组合。 “在使用扩展的线性模型时辅以特征组合一直都是训练大规模数据集的有效方法。”

在官方文档附带的 playground中,我们就会看到几种特征组合,通过组合x1x2来得到新特征。

比如x1^2,x1*x2,还有sin(x1)等。

回到上一章,我们将纬度进行分箱,现在假如我们对经度也进行分箱,在用两个特征矢量相乘,例如

经度=[0, 0, 1, 0, 0]  纬度 = [1, 0, 0, 0, 0] 我们让两者相乘(矩阵乘法,别忘了改shape), 就会得到25个元素的独热矢量。

这里结果为:

import numpy as np

x1 = np.array([0, 0, 1, 0, 0])[:, np.newaxis].reshape(5, 1)
x2 = np.array([1, 0, 0, 0, 0])[:, np.newaxis].reshape(1, 5)

print(np.matmul(x1, x2))

>>>[[0 0 0 0 0]
 [0 0 0 0 0]
 [1 0 0 0 0]
 [0 0 0 0 0]
 [0 0 0 0 0]]

我们也可以对结果进行降维:

import numpy as np

x1 = np.array([0, 0, 1, 0, 0])[:, np.newaxis].reshape(5, 1)
x2 = np.array([1, 0, 0, 0, 0])[:, np.newaxis].reshape(1, 5)
x3 = np.matmul(x1, x2).flatten()


print(x3, '\n', x3.shape)

>>>[0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 
>>>(25,)

“线性学习器可以很好地扩展到大量数据。对大规模数据集使用特征组合是学习高度复杂模型的一种有效策略。神经网络可提供另一种策略。”

猜你喜欢

转载自blog.csdn.net/Canon__/article/details/82811282