使用葉編碼的問題
大家好,關於葉編碼的過程,想要做個確認。謝謝。
DAY30 葉編碼作業中,根據鐵達尼號作業的案例。
1. 會先透過「隨機森林」來產生「葉點位置」。
2. 將「葉點位置」透過OneHotEncoder來編碼。
3. 透過羅吉斯回歸作運算。
案例中的隨機森林是採取n_estimators=20及max_features=4的條件。
產出的葉點位置為 222 * 20的矩陣(222個樣本*20棵樹)。
rf.apply(train_X)[3] 4號樣本的20棵樹位置為
[ 3, 6, 4, 4, 6, 10, 10, 8, 8, 4, 4, 4, 10, 6, 6, 5, 4, 7, 7, 6]
rf.apply(train_X)[4] 5號樣本的20棵樹位置為
[ 3, 7, 4, 6, 11, 11, 11, 8, 8, 13, 11, 3, 13, 6, 6, 8, 11, 6, 6, 6]
問題1.
以第1棵樹而言(0號位置,視為1號特徵),4號樣本與5號樣本都放在第3個葉子中。
所以代表他們在這個特徵之中是雷同的。請問以上認知是否正確?謝謝。
問題2.
dfa = pd.DataFrame(rf.apply(train_X))
將RF的結果輸出成df觀察:
np.unique(dfa[[0]]) ### 編號0號樹的葉子位置
[ 3, 4, 6, 7, 10, 11, 13, 14]
np.unique(dfa[[1]]) ### 編號1號樹的葉子位置
[ 3, 4, 6, 7, 10, 11, 12]
np.unique(dfa[[2]]) ### 編號2號樹的葉子位置
[ 3, 4, 6, 7, 10, 11, 13, 14]
>>> 以編號0號樹舉例,3與4的相似性,是否高於3與14的相似性?
換句話說,單棵樹中的葉子位置編號是否具有順序性?謝謝。
問題繁多,還請各位前輩見諒。謝謝。
BR,
Kam
回答列表
-
2019/05/17 下午 07:20陳明佑 (Ming You Chen)贊同數:2不贊同數:0留言數:2
1. 完全正確, 表示兩筆資料的第一個新特徵, 內容完全相同
2. 之前我並沒有挖掘到這麼深, 同學的好學精神很值得鼓勵
以同學呈現出的資料來看, 我推論很有可能這些數字代表的是4層完整二元樹(complete binary tree)的位置
4層完整二元樹的葉點最多應該有16個, 以Python的習慣應該是 0~15 號
那麼你把對應的數字寫出來, 就可以知道這些類別在哪邊分支了
例如 3與4, 應該是在 0~3 vs 4~7 的這次判別分開, 而 3與14, 則是在 0~7 vs 8~15 這次分開
因為比較早期就分開了, 所以確實前者有較高的相似性