如果我的数据集中的列多于行,该怎么办?
机器学习数据集通常是结构化或表格化数据,由行和列组成。
作为模型输入的列称为预测变量或“p”,行是样本“n”。大多数机器学习算法都假定样本数量远多于预测变量数量,表示为 p << n。
有时并非如此,数据集中预测变量的数量远多于样本,这种情况被称为“大数据集,小样本”,表示为 p >> n。这些问题通常需要专门的数据准备和建模算法来正确处理。
在本教程中,您将了解大数据集、小样本或 p >> n 机器学习问题的挑战。
完成本教程后,您将了解:
- 大多数机器学习问题中的样本数量远多于预测变量数量,并且大多数机器学习算法在训练过程中都假定这一点。
- 有些建模问题中的预测变量数量远多于样本数量,称为 p >> n。
- 在对具有比样本更多的预测变量的机器学习数据集进行建模时,需要探索的算法。
通过我的新书 掌握机器学习算法 开始您的项目,其中包含分步教程和所有示例的Excel电子表格文件。
让我们开始吧。

如何在机器学习中处理大 p 小 n (p >> n) 的情况
照片由 Phil Dolby 拍摄,保留部分权利。
教程概述
本教程分为三个部分;它们是:
- 预测变量 (p) 和样本 (n)
- 机器学习假定 p << n
- 如何处理 p >> n
预测变量 (p) 和样本 (n)
考虑一个预测建模问题,例如分类或回归。
数据集是结构化数据或表格化数据,就像您在 Excel 电子表格中看到的那样。
有列和行。大部分列将用作模型的输入,一列将代表输出或要预测的变量。
输入有不同的名称,例如预测变量、自变量、特征,有时也只是变量。输出变量(在本例中是销售额)通常称为响应变量或因变量,通常用符号 Y 表示。
— 第 15 页,《统计学习导论及在 R 中的应用》,2017 年。
每一列代表一个变量或样本的一个方面。代表模型输入的列称为预测变量。
每一行代表一个样本,其中包含每个列或特征的值。
- 预测变量:数据集的输入列,也称为输入变量或特征。
- 样本:数据集的行,也称为观测值、示例或实例。
在机器学习中,通常根据预测变量和样本来描述训练数据集。
数据集中预测变量的数量使用术语“p”来描述,数据集中样本的数量使用术语“n”或有时是“N”来描述。
- p:数据集中预测变量的数量。
- n:数据集中样本的数量。
为了具体说明,让我们看一下 鸢尾花分类问题。
下面是该数据集前五行的样本。
1 2 3 4 5 6 |
5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa ... |
该数据集有五列和 150 行。
前四列是输入,第五列是输出,这意味着有四个预测变量。
我们可以将鸢尾花数据集描述为
- p=4, n=150。
机器学习假定 p << n
预测变量的数量 (p) 几乎总是小于样本的数量 (n)。
通常小得多。
我们可以将这种预期概括为 p << n,其中“<<”是 数学不等式,意为“远小于”。
- p << n:通常我们的预测变量少于样本。
为了证明这一点,让我们来看几个更标准的机器学习数据集。
大多数机器学习算法都基于样本数量远多于预测变量数量的假设运行。
思考预测变量和样本的一种方式是采用几何视角。
考虑一个超立方体,其中预测变量的数量 (p) 定义了超立方体的维度。该超立方体的体积是从该域中抽取样本的可能范围。样本数量 (n) 是从该域中提取的用于建模预测建模问题的实际样本。
这是应用机器学习中“获取尽可能多的数据”这一公理的依据。它旨在收集对 p 维问题域充分有代表性的样本。
随着维度 (p) 的增加,该域的体积呈指数级增长。这反过来又需要更多的样本 (n) 来为学习算法提供对该域的有效覆盖。我们不需要完全覆盖该域,只需要可能观察到的部分。
有效采样高维空间这一挑战通常被称为维度灾难。
机器学习算法通过对数据和从输入到输出的映射函数结构做出假设来克服维度灾难。它们增加了偏差。
维度灾难的根本原因是高维函数可能比低维函数复杂得多,并且这些复杂性更难辨别。克服维度灾难的唯一方法是结合关于数据的正确知识。
— 第 15 页,《模式分类》,2000 年。
许多使用距离度量和其他局部模型(在特征空间中)的机器学习算法,随着预测变量数量的增加,性能往往会下降。
当特征数量 p 很大时,KNN 和其他仅使用靠近需要进行预测的测试样本的观测值进行预测的局部方法性能往往会下降。这种现象被称为维度灾难,它与非参数方法在 p 很大时通常表现不佳的事实有关。
— 第 168 页,《统计学习导论及在 R 中的应用》,2017 年。
预测变量的数量并不总是小于样本的数量。
如何处理 p >> n
根据定义,一些预测建模问题中的预测变量比样本多。
通常预测变量比样本多得多。
这通常被描述为“大数据集,小样本”、“大 p,小 n”,或更简洁地称为“p >> n”,其中“>>”是 数学不等式运算符,意为“远大于”。
… 预测问题中,特征数量 p 远大于观测数量 N,通常表示为 p >> N。
— 第 649 页,《统计学习要素:数据挖掘、推理和预测》,2016 年。
从几何角度考虑。
现在,域不再是几十个维度(或更少),而是有数千个维度,而来自该空间的样本只有几十个。我们无法期望对该域有任何代表性的样本。
p >> n 问题的许多例子来自医学领域,那里的患者群体较小,但描述性特征数量庞大。
同时,也出现了这样的应用:实验单位数量相对较少,但潜在维度巨大;说明性例子可能包括图像分析、微阵列分析、文档分类、天文学和大气科学。
— 高维数据的统计挑战,2009 年。
p >> n 问题的常见例子是基因表达阵列,其中可能有数千个基因(预测变量)而只有几十个样本。
基因表达阵列通常有 50 到 100 个样本和 5,000 到 20,000 个变量(基因)。
— 表达阵列与 p >> n 问题,2003 年。
考虑到大多数机器学习算法都假定样本数量远多于预测变量数量,这在建模时带来了挑战。
具体来说,标准机器学习模型所做的假设可能导致模型行为异常、提供误导性结果或完全失败。
… 模型无法“开箱即用”,因为标准的拟合算法都需要 p<n;事实上,通常的经验法则是样本数量应为变量数量的五到十倍。
— 表达阵列与 p >> n 问题,2003 年。
使用机器学习模型处理 p >> n 问题的一个主要问题是过度拟合训练数据集。
由于样本不足,大多数模型无法泛化,而是学习训练数据中的统计噪声。这使得模型在训练数据集上表现良好,但在问题域的新示例上表现不佳。
这也是一个难以诊断的问题,因为样本不足不允许使用测试集或验证集来评估模型过拟合。因此,在评估 p >> n 问题的模型时,通常使用留一法交叉验证 (LOOCV)。
有许多方法可以处理 p >> n 类型的分类或回归问题。
一些例子包括:
忽略 p 和 n
一种方法是忽略 p 和 n 的关系,并评估标准的机器学习模型。
这可以被认为是任何其他更专业的干预措施可以与之比较的基线方法。
特征选择
特征选择涉及选择预测变量的子集作为预测模型的输入。
常用技术包括基于其与目标变量的统计关系的特征选择方法(例如相关性),以及基于其在预测目标变量时对模型的贡献选择特征的包装器方法(例如 RFE)。
可以评估和比较一套特征选择方法,也许以一种激进的方式应用,将输入特征的数量大大减少到被认为是关键的特征。
对于 p 较大的分类器而言,特征选择是一项重要的科学要求。
— 第 658 页,《统计学习要素:数据挖掘、推理和预测》,2016 年。
有关特征选择的更多信息,请参阅教程。
投影方法
投影方法创建样本的低维表示,以保留数据中观察到的关系。
它们通常用于可视化,尽管这些技术的降维特性也可能使其作为降低预测变量数量的数据转换有用。
当 p > N 时,可以通过奇异值分解在 N 维空间而不是 p 维空间中进行计算……
— 第 659 页,《统计学习要素:数据挖掘、推理和预测》,2016 年。
它也可能包括常用于可视化的流形学习算法,如 t-SNE。
正则化算法
标准的机器学习算法可以在训练过程中使用正则化进行调整。
这将根据使用的特征数量或特征权重对模型进行惩罚,鼓励模型表现良好并尽量减少模型中使用的预测变量数量。
这可以作为训练过程中一种自动特征选择的类型,并且可能涉及增强现有模型(例如正则化线性回归和正则化逻辑回归)或使用 LARS 和 LASSO 等专用方法。
没有最佳方法,建议使用受控实验来测试一套不同的方法。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
论文
- 表达阵列与 p >> n 问题, 2003.
- 高维数据的统计挑战, 2009.
书籍
- 模式分类, 2000.
- 第 18 章,高维问题:p >> N,《统计学习要素:数据挖掘、推理和预测》,2016 年。
- 统计学习导论:R语言应用, 2017.
文章
- 不等式(数学),维基百科.
- 维度灾难,维基百科.
- 大数据集,小样本, 2016.
总结
在本教程中,您了解了大数据集、小样本或 p >> n 机器学习问题的挑战。
具体来说,你学到了:
- 机器学习数据集可以根据预测变量的数量 (p) 和样本的数量 (n) 来描述。
- 大多数机器学习问题中的样本数量远多于预测变量数量,并且大多数机器学习算法在训练过程中都假定这一点。
- 有些建模问题中的预测变量数量远多于样本数量,例如医学领域的 p >> n 问题,可能需要使用专门的算法。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
有趣的博客和关于机器学习的精彩信息。
谢谢!
谢谢。数据增强怎么样?我经常在使用 p>>n 时使用它。在我进行的许多实验中,它似乎效果很好。
是的,它可能提供一种对数据集进行过采样并增加对决策边界/映射函数的控制力的方法。
p >> n 的实际例子???
基因表达数据集。
感谢您的精彩文章。对于由列和行形成的结构化数据,我们是否不能 p 和 n?对于非结构化数据,例如图像,MNIST 数据集,p 是否等于 28X28=784?如果它带有颜色,p = 28X28X3=2352。我说的对吗?谢谢。
是的,结构化数据。该概念对于模拟数据(图像/文本/音频/…)不适用。
遇到过“小 P,更小 N”的问题,其中衰减曲线的底层标准物理模型比观测值具有更多的参数,因此标准的曲线拟合方法行不通。我们使用了切比雪夫多项式,利用我们拥有的数据来拟合一个合适的族,仅拟合 2 个参数,在我们运行的范围内这是一个足够好的模型。
非常酷,谢谢分享!
当然!很棒的文章,我很喜欢你发布的内容——很棒的资源!
谢谢。
感谢您的文章!在使用 RNN 同时为多个序列进行预测时,处理样本量不足的最佳方法是什么?
RNN 通常需要大量数据。
也许您可以探索数据增强以人为地扩大数据集大小。
感谢这篇文章!目前,我正在开发一个 ML 模型,该模型将基于过去 10 年收集的数据来预测未来 5 年的塑料产量。由于我的行数少于列数,我应该如何处理这个问题?
你好 Vinu,
如果您将输入数据表示为时间序列,我建议参考以下资源。
https://machinelearning.org.cn/how-to-develop-lstm-models-for-time-series-forecasting/
https://machinelearning.org.cn/how-to-develop-convolutional-neural-network-models-for-time-series-forecasting/
https://machinelearning.org.cn/how-to-develop-multilayer-perceptron-models-for-time-series-forecasting/
感谢这篇精彩的文章。
我对所谓的“大数据集,小样本 (P>>N)”数据集很感兴趣,即特征多而样本量少。这是基因表达数据。
一般来说,机器学习似乎假定 N>>P。情况恰恰相反。
我想通过无监督学习进行特征提取。
使用网络分析 PageRank 或 PCAUFE(基于 PCA 的无监督特征提取)来查找重要特征是否有用,或者是否有更好、更具体的解决方案?
如果您有任何重要提示,请告诉我。
致以最诚挚的问候。
你好 YM… 您可能会发现以下内容很有趣。
https://machinelearning.org.cn/feature-selection-with-real-and-categorical-data/
您是指使用方差分析进行特征选择。
非常感谢。
您好,布朗利,
您的帖子对我很有帮助,因为我正在处理高维数据。
我的数据 n =347 且 p = 15,000(这是材料的光谱仪数据),这是一个具有多个输出(2 个)的回归问题。我尝试了不同的机器学习方法(线性回归、HUR 回归、随机森林、梯度提升回归、自动相关性确定…)并发现多元线性回归是最好的(使用嵌套 CV,没有过拟合……)。
我喜欢您关于“忽略 n 和 p”的观点。我的问题是:
1) 高维数据是否存在多元线性回归机器学习模型的可能性(因为许多作者说线性回归不适合)?
2) 我可以相信我的结果,即线性回归可以成为高维数据的最佳选择吗?
先谢谢您了。
祝好
Cuong
你好 Cuong…以下资源可能与此主题相关。
https://medium.com/swlh/all-you-need-to-know-about-handling-high-dimensional-data-7197b701244d
https://stats.stackexchange.com/questions/471726/why-does-machine-learning-work-for-high-dimensional-datan-ll-p
感谢您的建议。
我阅读了这两篇文章,但问题仍然悬而未决。
据说使用正则化技术的模型适用于高维数据。但在我的情况下:(普通)线性回归比使用正则化技术的其他方法更好。
因为我打算发表这个结果(但它与基本知识相矛盾),这让我感到困惑!
您有什么建议吗?