所以我正在学习一门机器学习课程,本课程解释说,为了避免虚拟陷阱,一种常见的做法是删除一列。它还解释说,由于可以从其他列中推断出已删除列上的信息,因此我们不会因此而失去任何东西。
然而,本课程并没有解释虚拟陷阱到底是什么。它也没有给出任何关于陷阱如何表现的例子。起初,我假设虚拟陷阱只是由于多重共线性而使模型性能不太准确。但后来我读了这篇文章。它没有明确提到虚拟陷阱,但它确实讨论了尝试将 OHE 与 OLS 一起使用会导致错误(因为模型试图反转奇异矩阵)。然后它显示了删除一个虚拟功能的做法如何解决这个问题。但随后它继续证明这种措施在实际情况下是不必要的,因为显然正则化也解决了这个问题,并且迭代算法(与封闭式解决方案相反)首先没有这个问题.
所以我现在对“虚拟陷阱”一词背后的确切含义感到困惑。它是专门指这个矩阵求逆错误吗?或者它只是一种让模型得到训练但使其性能变差的效果,与那篇文章中描述的问题完全无关?pd.get_dummies()我尝试在 OHE 编码的数据集(我与参数一起使用)上训练 sklearn LinearRegression 模型drop_first=False以尝试重现虚拟陷阱,后者似乎是这种情况:模型训练成功,但与它相比,它的性能明显更差到在集合上训练的相同模型drop_first=True. 但是我仍然对我的模型为什么能成功训练感到困惑,因为如果这篇文章是可信的,倒置错误应该会阻止它成功训练。