維度增多主要會帶來高維空間數據稀疏化問題,機器學習
也就是說,數據會更加的分散,於是就須要更大的數據量才能得到較好的bias和variance,達到較好的預測效果。性能
此處,最典型的是對於KNN的預測。學習
更詳細的見:怎樣理解"curse of dimensionality",.net
另外一方面看,當維度增長時,也可能致使過擬合現象:訓練集上表現好,可是對新數據缺少泛化能力。高維空間訓練造成的分類器,至關於在低維空間的一個複雜的非線性分類器,這種分類器過多的強調了訓練集的準確率甚至於對一些錯誤/異常的數據也進行了學習,而正確的數據卻沒法覆蓋整個特徵空間。所以,這樣獲得的分類器在對新數據進行預測時將會出現錯誤。blog
下圖是隨着維度(特徵數量)的增長,分類器性能的描述:get
可是如何避免維度災難呢?數學
並無固定的規則規定在分類問題中應該使用多少個特徵,由於維度災難問題和訓練樣本的數據有關。it
事實上,避免維度災難主要有兩種方法:io
參見:機器學習中的維數災難基礎
上面既然提到了bias和variance,趁機就詳細說一下
bias與variance究竟是個什麼鬼
解釋1:
bias 誤差 :模型的指望(或平均)預測和正確值之間的差異
variance 方差 :模型之間的多個擬合預測之間的偏離程度
更多關於bias和variance的定義(包括概念定義,圖形化定義,數學定義等)見:權衡誤差和方差
解釋2:
也就是說,bias和variance分別從兩個方面來描述了咱們學習到的模型與真實模型之間的差距。
Bias是 「用全部可能的訓練數據集訓練出的全部模型的輸出的平均值」 與 「真實模型」的輸出值之間的差別;
Variance則是「不一樣的訓練數據集訓練出的模型」的輸出值之間的差別。
解釋3:
而這兩個與過擬合和欠擬合又有什麼關係呢?
處理過擬合和欠擬合的過程就是關於處理bias和variance。模型複雜度越高,過擬合的風險就越大,bias就減少,可是variance就越高。以下圖所示:
K折交叉驗證中K的選擇:當k偏小的時候,會致使bias偏高。當k偏大的時候,會致使variance偏高,一般把k控制在5~10的範圍裏。
bias-variance判斷:
也就是說,一個好的模型,誤差越小越好,方差越小越好。