维度灾难(curse of dimensionality)
/ KURS uv dih-men-shun-AL-ih-tee /
维度灾难,指的是这样一件违反直觉的怪事:给你的数据增添更多特征(更多维度),反而让学习变得更难、而非更易。它的口号是:在高维空间里,万物彼此相隔遥远,而空间则大半是空的。
直觉是这样的。设想把100个点撒在一米长的线段上——它们挨得挺近,大约每隔一厘米一个。把这同样的100个点铺到一平方米的正方形里,就稀疏了;铺进一立方米的正方体里,则更稀疏。每增加一个维度,需要填满的体积就翻倍,于是为了让空间保持「人丁兴旺」所需的数据量便爆炸式增长——大致随特征数呈指数增长。当特征众多而数据有限时,点会散得太开,以至于「最近邻」这类概念都失去了意义,因为最近的点和最远的点几乎一样远。模型于是难以在这片空旷中找到真实的规律,并极易过拟合。
为何重要:它解释了为何「特征越多」并不自动等于「越好」、为何基于距离的方法在高维下会退化,也解释了为何人们要花大力气去做降维(如主成分分析这类把数据压进更少、更有意义维度的技术)和特征选择(只保留那些携带真实信号的列)。一个诚实的结论是:数据是一种有限的资源,却被铺撒在一个增长得残酷迅猛的空间里,所以增添那些你无法稠密填满的维度,往往是有害的。
要以「每单位10个采样点」的密度覆盖一条一维线段,需要10个点。一个二维正方形需要10×10=100个;一个三维正方体需要1000个;一个十维空间则需要100亿个。增加维度,会让你为保持「稠密」所需的数据量爆炸,于是在数据固定的情况下,你的点会变得无可救药地稀疏。
10 → 100 → 1000 → 100亿:高维空间为何大半是空的。
特征更多反而可能有害。过了某个临界点,每多一个维度都只是在稀释你的数据、却不增添信号,所以「降维」或「只挑选有信息量的特征」往往胜过把一切都一股脑塞给模型。