如何处理具有广泛不同维度的特征

数据挖掘 神经网络 回归
2022-03-05 08:10:59

假设我正在构建一个神经网络来适应某种分类器。具体来说,让我们以使用房屋特征预测房价为例。

如果我的一个或两个特征包含的数字比其他特征多得多,或者甚至所有其他特征加起来都多,我该怎么办?例如,假设我有一些住房特征:平方英尺大小、年龄、所在地区的收入中位数。这是3个数字。然后我有另一个特征,房子每平方英尺的屋顶高度(当然,对于这个例子来说有点做作),我实际上会有“以平方英尺为单位的大小”——这个特征的数字。所以现在我的特征向量看起来像这样:

X = [1500 平方英尺,34 年,54,000 美元,10 英尺,10.1 英尺,10.3 英尺...这里还有 1497 个数字...]

似乎如果我只是天真地将其放入神经网络中,那么前 3 个特征基本上会被忽略,因为它们只占 3/1503 个特征。但它们实际上可能很重要。一种尝试可能是简单地对所有元素的“屋顶高度”特征进行平均,以获得“屋顶的平均高度”特征。这个例子是有道理的,但如果有时我不想取这个平均值怎么办?如果我遇到这样的问题,是否有任何行业惯例可以尝试?

3个回答

一种解决方案是使用与序列学习相同的技术。在该技术中,我们使用了循环神经网络和 LSTM 模块。

我们可以训练循环神经网络来学习任意输入序列的非常具体的输出,这是非常强大的。

要了解更多信息,您可以点击此链接

PCA - 主成分分析:

我认为这里最好的选择是在训练模型之前和在拥有模型后进行预测之前使用主成分分析 (PCA)执行一些降维。PCA 将允许您保留输入数据中总方差的百分比,同时显着减少维度总数。

在您展示的玩具示例中,我希望每平方英尺的高度特征之间存在高度线性相关性,而其他特征之间存在高度线性正交性。在这种情况下,PCA 会自然地将相关的高度项混合成 1 或 2 个特征,同时保留 95-99% 的总原始方差。

这里唯一的缺点是您将失去输入特征的物理意义。我想你可以分解特征向量并尝试理解它们,但失去物理意义通常不会特别阻碍训练模型。

还有其他方法,例如 lasso-ridge 回归(您提到分类,但随后提供回归示例,例如房价的连续变量)或直接跟踪线性回归中的特征重要性,但我更喜欢 PCA 能够投影的方式输入特征的线性相关性,这似乎对您的问题特别重要。

试一试,让我们知道它是怎么回事。希望这可以帮助!

让我们总结一下你在做什么:

您打算在具有 1,503 个特征的 X 样本数据集上应用神经网络,以获得最准确的价格预测(即连续变量)。您担心您的工程特性可能只会对性能产生很小的影响。

您的担心可能是不必要的

如果您的总体目标是获得最准确的预测,我相信诸如 PCA(如 OP 所述)之类的降维不是这里的方法。对于您创建的每个特征,您都可以解释一小部分方差,即使它们是高度相关的。最坏的情况是,它没有用。如果您的网络足够复杂,即您的体系结构可以确保变量之间的关系可以被完全解释,您将捕获那里的所有内容,并且您选择的算法和设置能够做到。任何不重要的变量都不会在您的预测中发挥作用,因为权重将简单地(接近)为零。但是,如果您遵循这种方式,请确保您有一个可靠的方法来衡量您是否过度拟合,例如 K 折交叉验证。