基于Andreas C.Müller和Sarah Guido撰写的“ Python机器学习入门”一书第47页的这一段,我需要更多地了解特征数量与线性模型回归之间的关系:
”对于具有许多功能的数据集,线性模型可能非常强大。 特别是,如果您具有比训练数据点更多的功能,则任何目标y 可以完美地(在训练集上)建模为线性函数。
如何用线性代数解释?
谢谢
答案 0 :(得分:1)
我可以尝试为您提供直观的答案。
想象一下,您有一个训练数据集,它由二维的单个数据点组成。在这种情况下,我们有n_data = 1
(数据点数)和n_features = 2
(n_features
> n_data
)。训练数据集可以通过一维线性函数y = a0
进行完美建模。
类似地,如果您具有三个要素(即三个维度)和两个数据点(因此n_features = 3
> n_data = 2
),那么这两个点总是可以用{{ 1}}。
在四个维度(四个特征)中,始终可以使用y = a0 + a1 x1
形式的线性方程式定义的(超)平面对三个点进行建模。
通常,可以始终使用线性公式y = a0 + a1x1 + a2x2
定义超平面(定义为尺寸小于其周围空间尺寸的任何平面)。因此,如果点的数量少于维度的数量,则总是可以找到一个超平面,因此,如果样本的数量小于特征的数量,则总是可以对一组训练数据进行建模。对应于空间的尺寸。
答案 1 :(得分:0)
此问题更适合Cross Validated社区。 p>
此处的关键字为“在训练集上” !
”对于具有许多功能的数据集,线性模型可能非常强大。 特别是,如果您的功能多于训练数据点, 任何目标 y 都可以完美地建模(在训练集上 )为 线性函数”, Andreas C.Müller和Sarah Guido撰写的《 Python机器学习简介》 。
通常,特征多于数据点(或变量/预测数多于样本/观察值)导致model overfitting 。如果我们具有太多特征,则学习的假设可能非常适合训练集,但无法归纳为新的示例(在测试集上)。例如,考虑一个由1000个图像组成的数据集,每个图像具有300x300像素(1000个样本和90000个特征)。
预测值比观察值更多的问题(通常表示为 p> n )是,对于标准linear regression问题没有唯一的解决方案。 这就是线性代数的解释方式。如果数据点矩阵的行表示个案,而列表示预测变量,则矩阵的各列之间必然存在线性相关性。因此,一旦找到了预测变量 n 的系数,其他 pn 预测变量的系数就可以表示为这些第一个 n 的任意线性组合。强>预测变量。 LASSO
或ridge regression
之类的其他方法,或各种其他机器学习方法,都提供了在这种情况下进行的方法。
交叉验证中有一个不错的answer:
当有更多模型时,当然有可能适合良好的模型 变量而不是数据点,但这必须小心。
当变量多于数据点时,可能不会出现问题 有一个独特的解决方案,除非受到进一步限制。那就是 可能是适合数据的多个(也许无限多个)解决方案 同样好。这样的问题称为
ill-posed
或underdetermined
。 例如,当变量多于 数据点,标准最小二乘回归有无限多个 在训练数据上实现零错误的解决方案。这样的模型肯定会过拟合,因为它对于 训练数据量。随着模型灵活性的提高(例如,更多 回归模型中的变量)和训练数据量 缩小,该模型将越来越有可能能够 通过适应训练中的随机波动来实现低误差 不代表真实的基础分布的数据。 因此,当模型在将来运行时,性能将很差。 数据来自同一分布。