主要来源:视频学习网站Google机器学习教程
在机器学习中也常常要解决许多非线性问题,如:
要解决图 2 所示的非线性问题,可以创建一个特征组合。
特征组合:是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。
“cross”(组合)这一术语来自 cross product(向量积)。我们通过将 x1(横坐标)与 x2(纵坐标) 组合来创建一个名为 x3 的特征组合:
我们像处理任何其他特征一样来处理这个新建的 x3 特征组合。线性公式变为:
线性算法可以算出 w3 的权重,就像算出 w1 和 w2 的权重一样。换言之,虽然 w3 表示非线性信息,但您不需要改变线性模型的训练方式来确定 w3 的值。
特征组合的种类
我们可以创建很多不同种类的特征组合。例如:
[A X B]:将两个特征的值相乘形成的特征组合。
[A x B x C x D x E]:将五个特征的值相乘形成的特征组合。
[A x A]:对单个特征的值求平方形成的特征组合。
合成特征 (synthetic feature)
一种特征,不在输入特征之列,而是从一个或多个输入特征衍生而来。合成特征包括以下类型:
对连续特征进行分桶,以分为多个区间分箱。
将一个特征值与其他特征值或其本身相乘(或相除)。
创建一个特征组合。
仅通过标准化或缩放创建的特征不属于合成特征。
通过采用随机梯度下降法,可以有效地训练线性模型。因此,在使用扩展的线性模型时辅以特征组合一直都是训练大规模数据集的有效方法。
到目前为止,我们已经重点介绍了如何对两个单独的浮点特征进行特征组合。在实践中,机器学习模型很少会组合连续特征。不过,机器学习模型却经常组合独热特征矢量,将独热特征矢量的特征组合视为逻辑连接。
例如,假设我们具有以下两个特征:国家/地区和语言。对每个特征进行独热编码会生成具有二元特征的矢量,这些二元特征可解读为 country=USA, country=France 或 language=English, language=Spanish。然后,如果您对这些独热编码进行特征组合,则会得到可解读为逻辑连接的二元特征,如下所示:
country:usa AND language:spanish
再举一个例子,假设您对纬度和经度进行分箱,获得单独的独热 5 元素特征矢量。例如,指定的纬度和经度可以表示如下:
binned_latitude = [0, 0, 0, 1, 0]
binned_longitude = [0, 1, 0, 0, 0]
假设您对这两个特征矢量创建了特征组合:
binned_latitude X binned_longitude
此特征组合是一个 25 元素独热矢量(24 个 0 和 1 个 1)。该组合中的单个 1 表示纬度与经度的特定连接。然后,您的模型就可以了解到有关这种连接的特定关联性。
假设我们更粗略地对纬度和经度进行分箱,如下所示:
binned_latitude(lat) = [
0 < lat <= 10
10 < lat <= 20
20 < lat <= 30
]
binned_longitude(lon) = [
0 < lon <= 15
15 < lon <= 30
]
针对这些粗略分箱创建特征组合会生成具有以下含义的合成特征:
binned_latitude_X_longitude(lat, lon) = [
0 < lat <= 10 AND 0 < lon <= 15
0 < lat <= 10 AND 15 < lon <= 30
10 < lat <= 20 AND 0 < lon <= 15
10 < lat <= 20 AND 15 < lon <= 30
20 < lat <= 30 AND 0 < lon <= 15
20 < lat <= 30 AND 15 < lon <= 30
]
1.初始状态:
2.模型特征:(x1,x2) 横坐标和纵坐标,进行训练
3.模型特征(x1,x2,x1x2)进行训练
4.模型特征(x1,x2,x1x2,x1²)进行训练
5.模型特征(x1,x2,x1x2,x1²,x2²)进行训练
6.模型特征(x1,x2,x1²,x2²)进行训练,–特征组合x1x2不适合这个模型
总结:灵活的使用特征组合,选择合适的特征组合,可以很好的解决一部分非线性问题;