logo
Loading...

如何有效地找到組合特徵? - 【教材專區】學習AI有困難? 讓Cupoy助教來幫你! - Cupoy

我們在建立模型的時候,會加入許多的參數,但是若加入的參數過多,也會容易造成模型過於複雜或是overfitting的現象,而且也並不是所有的特徵組合都是有意義的,所以能運用什麼方法,來讓我們找出正確且有...

我們在建立模型的時候,會加入許多的參數,但是若加入的參數過多,也會容易造成模型過於複雜或是overfitting的現象,而且也並不是所有的特徵組合都是有意義的,所以能運用什麼方法,來讓我們找出正確且有意義的組合特徵呢? 這次想介紹給大家的方法是基於決策樹來尋找有意義的特徵組合 先簡單介紹一下決策樹是什麼? 決策樹是一種監督式學習的模型,會根據我們事先所輸入的資料去做訓練,而訓練的成果會是一個樹狀結構,當我們輸入新資料時,模型就會根據所訓練出的規則來對其進行預測。 舉一個常見的例子:當一個人去商場購買東西,要如何知道他的忠誠度? 這裡面會牽扯到非常多的因素例如:購買商品的數量、購物頻率、購買的商品是否重疊率高等等 當我們將這個人過往的購買記錄放進決策樹中,決策樹就會根據所有顧客的購買紀錄中去預測他是否為商場的忠實客群。 接下來我們以一個實際的例子展示給大家看 有一位Y女士她到了適婚年齡想要結婚,於是她請了相親公司來幫他尋找適合的對象,女方開出了幾個她會參考的條件(年齡、長相、薪水高低、是否會寫程式)如果以上條件都有符合她內心的要求她就願意跟對方見面。 以下是相親公司給這位Y女士介紹五位對象的資料,以及Y女士最後是否有答應見面 其實當我們再根據條件做選擇時就是一個很典型的決策樹分類,我們可以將上述五位的資料放入決策樹模型做訓練,那就會得到以下結果 從這個決策樹我們能看到Y女士的條件順序由上至下是 1.年齡是否小於30歲 2.長相是否可接受 3.薪水是否大於40000元 4.是否會寫程式 如果這四個條件都滿足就會得到100%願意見面的結果 回到正題,所以到底要怎麼用決策樹有效的找到組合特徵呢? 這時候就要介紹決策樹中的演算法(ID3、C4.5、CART) 藉由這些演算法能讓模型知道哪個特徵適合當作根節點、哪個特徵對模型的影響較大等等 那因為篇幅關係所以我們就先介紹ID3 ID3(最大資訊增益) ID3中有個很重要的名詞叫做熵(entropy) 熵越大代表不確定性就越大 ID3背後的公式原理如下 1.計算數據及D的經驗熵H(D) 其中Ck表示在集合D中屬於第k類樣本的樣本子集合 2.利用條件機率計算特徵A對數據集D的條件熵H(D|A) 其中Di表示在D中特徵A取i個值的樣本子集合,Dik表示Di中屬於第k類樣本的樣本子集合 3.計算訊息增益 經驗熵H(D) - 條件熵H(D|A) 我們在回到剛剛Y女士相親的例子用ID3測試 1.計算H(D) 我們知道Y女士在最後見面有兩個選擇:見面與不見面 並選擇了兩位見面,三位不見面 所以我們要將兩種分類分開計算 H(D) = (-3/5 x log2 x 3/5 ) + (-2/5 x log2 x 2/5) = 0.971  2.計算H(D|A) H(D|年齡)= 1/5(H|>30)+ 4/5(H|<30) 在四位年齡<30歲的人中,Y女士選擇了兩位見面兩位不見面 =1/5 x (0) + 4/5 x [(-2/4 x log2 x 2/4 )-( 2/4 x log2 x 2/4)] = 0.8 依照此公式計算其他特徵(公式省略) H(D|長相)= 0.551 H(D|薪水)= 0.551 H(D|寫程式) = 0 3.計算g(D,A) g(D,年齡) = 0.971 - 0.8 = 0.171 g(D,長相) = 0.42 g(D,薪水) = 0.42 g(D,寫程式) = 0.971 因此我們可以看出寫程式的資訊增益最大,也就是這個特徵對模型的影響力較大,長相跟薪水是其次,年齡則是最小,依照這個結果我們就能找出有效的組合特徵了。 參考文獻:https://roger010620.medium.com/決策樹-decision-tree-常見的三種算法-id3-c4-5-cart-54091ca85044