在上周我們介紹給大家介紹了有監(jiān)督問題中樹模型leaf編碼的操作,在搜索資料的過程中筆者偶然發(fā)現(xiàn)在sklearn中有無監(jiān)督的樹模型leaf編碼,本問將介紹Kaggle知識點(diǎn):RandomTreesEmbedding的原理和使用。
基礎(chǔ)介紹RandomTreesEmbedding使用高維稀疏進(jìn)行無監(jiān)督轉(zhuǎn)換,數(shù)據(jù)點(diǎn)根據(jù)它被分類到樹的葉子節(jié)點(diǎn)進(jìn)行編碼,這導(dǎo)致編碼維度與森林中的樹木一樣多。
from?sklearn.ensemble?import?RandomTreesEmbedding
X?=?[[0,0],?[1,0],?[0,1],?[-1,0],?[0,-1]]
random_trees?=?RandomTreesEmbedding(
n_estimators=5,?random_state=0,?max_depth=1).fit(X)
X_sparse_embedding?=?random_trees.transform(X)
X_sparse_embedding.toarray()
輸出結(jié)果:
array([[0.,?1.,?1.,?0.,?1.,?0.,?0.,?1.,?1.,?0.],
[0.,?1.,?1.,?0.,?1.,?0.,?0.,?1.,?1.,?0.],
[0.,?1.,?0.,?1.,?0.,?1.,?0.,?1.,?0.,?1.],
[1.,?0.,?1.,?0.,?1.,?0.,?1.,?0.,?1.,?0.],
[0.,?1.,?1.,?0.,?1.,?0.,?0.,?1.,?1.,?0.]])
編碼后的維度最多為n_estimators * max_leaf_nodes,若max_leaf_nodes設(shè)置為None,則無限數(shù)量的葉節(jié)點(diǎn)。
實(shí)現(xiàn)原理
1.隨機(jī)產(chǎn)生隨機(jī)數(shù)作為標(biāo)簽y,數(shù)量與訓(xùn)練集樣本個(gè)數(shù)相同;
2.使用ExtraTreeRegressor完成訓(xùn)練數(shù)據(jù)與標(biāo)簽y進(jìn)行訓(xùn)練。
3.得到ExtraTreeRegressor的leaf編碼,然后進(jìn)行onehot編碼。
rnd = check_random_state(self.random_state)
y?=?rnd.uniform(size=_num_samples(X))
super().fit(X,?y,?sample_weight=sample_weight)self.one_hot_encoder_?=?OneHotEncoder(sparse=self.sparse_output)
return?self.one_hot_encoder_.fit_transform(self.apply(X))
與其他方法對比
1.RandomTreesEmbedding是一種無監(jiān)督leaf編碼,可以用任意樹模型來完成。
2.RandomTreesEmbedding本質(zhì)是一種降維操作,利用樹模型節(jié)點(diǎn)分裂完成樣本聚類操作。
3.RandomTreesEmbedding輸出的是leaf節(jié)點(diǎn)的onethot編碼,可以視為稀疏數(shù)據(jù)。
學(xué)習(xí)數(shù)據(jù)學(xué)術(shù)活動,組隊(duì)參賽,交流分享
請掃碼添加翰林顧問老師詳細(xì)咨詢【免費(fèi)領(lǐng)取】相關(guān)賽題及解析!


? 2025. All Rights Reserved. 滬ICP備2023009024號-1