本文由 沈庆阳 所有,转载请与作者取得联系!
前言
在我们进行机器学习模型训练的过程中,使用单一特征似乎并不能很好的解决我们的问题。比如,单纯地依靠房屋面积来预测房屋单价是不可取的。因为,地理位置、人均房间数等都是会对房屋单价产生影响的特征。
如果需要用到多个特征作为输入,则需要将两个或多个特征相乘形成合成特征。这种做法就叫特征组合。
使用特征组合可以明显地增强我们机器学习模型的预测能力。
一个简单的特征组合例子
假设有这样一个场景,在一片森林中,一种感染树木的疾病在传播。我们试图通过机器学习来训练一个模型,来预测病树。
在上图中,假设红色的是病树。
那么通过简单的线性回归模型,使X1和X2作为输入特征可以得到:
y = SIGN( b + w1x1 + w2x2)
可是如果我们的样本不是像上图一样分布的呢?如果样本的分布是下图这样呢?
很明显,我们不可能找到任何一个直线(线性回归模型)来准确地区分病树和健康树(准确率达到50%以上)。
为了准确地区分病树,一种方法是定义一个附加特征。这个特征叫做合成特征或是特征组合(Feature Crosses)。组合(cross)这个属于来源于向量积(cross product)。
X3 = X1 * X2
y = SIGN( b + w1x1 + w2x2 + w3x3)
定义一个X1和X2的乘积的特征为X3。通过观察,如果X1和X2都为正或者都为负,那么他们的乘积则为正。如果二者异号,则其乘积为负。这样便通过交叉乘积的简单合成特征达到了使用线性模型学习非线性规律的目的。
特征组合有很多种,比如将两个不同的特征进行组合、将多个不同的值相乘形成新的特征组合或是将单个特征的值求平方的特征组合。
通过随机梯度下降法可以有效地训练线性模型,因此使用扩展的线性模型加上特征组合是训练大规模数据集的有效地方法。
特征组合和独热矢量
在使用机器学习解决问题的时候,很少会遇到组合连续的特征。大多数遇到的是通过特征组合来组合独热矢量特征。独热特征矢量的特征组合叫做逻辑连接。
假设我们对经纬度分别进行分箱。则经度和纬度是单独的拥有5个元素的独热矢量。
binned_lat = [1, 0, 0, 0, 0]
binned_long = [1, 0, 0, 0, 0]
通过将binned_lat和binned_long进行特征组合我们将会得到一个拥有25个元素的独热矢量。该组合中的单个1将表示经度和纬度的特定连接。
通过特征组合获得的模型的预测能力远高于单一特征的预测能力。线性学习器可以很好地扩展到大规模数据。对于大规模数据集使用特征组合是十分有效地策略。
觉得写的不错的朋友可以点一个 喜欢♥ ~
谢谢你的支持!