介紹機器學習Ensemble中的分支,Stacking and Blending方法
Stacking,是一種機器學習中的ensemble方法,可以被視為一種混合多種機器學習演算法的方法。 由於特定演算法可能產生誤差(bias),Stacking的想法是許多個演算法集成,可以過濾掉那些誤差(bias),使模型可以泛化的更好(generalized)。 Stacking的框架中有兩層:第一層由幾種base model組成(1st level model),第二層為一個meta model(2nd level model ),Stacking的本質是使用2nd level模型從1st level模型的預測中學習,用2nd level中挑選1st level model的數個模型中較為有價值的資訊。一般情況下,Stacking與最佳的單一一個base model演算法相比,Stacking可以獲得更準確的預測。 Stacking的一個重要步驟是從cross-validation獲取要餵給2nd level model( \( D_{cv} \) )的訓練資料。假設原本的資料集是 $$ D = \{ \left( y_{n},x_{n} \right) , n=1, \ldots ,N \} $$ , \( y_{n} \) 是第n個樣本的目標值, \( x_{n} \) 是第n個樣本的特徵向量(feature vectors),接著將資料分為K等分,也就是 \( D_{1},D_{2}, \ldots ,D_{K} \) 。定義 \( D_{K} \) 及 \( D^{ \left( -k \right) } \) = \( D-D_{K} \) 分別為K-fold cross validation的第 \( k_{th} \) 折的測試及訓練集。假設第一層1st level model有J個不同的機器學習演算法( \( M_{1},M_{2}, \ldots ,M_{j} \ldots ,M_{J} \) ),每個 \( M_{j} \) 都會經由不同折的 \( D^{ \left( -k \right) } \) 訓練,並且預測 \( D_{K} \) 裡的 \( y_{n} \) 。 令 \( v_{k}^{ \left( -j \right) } \left( x \right) \) 是餵給模型 \( M_{J} \...