隨機森林是一個經常使用到的模型了,你們知道隨機森林能夠用來作迴歸,也能夠用來作分類,那麼隨機森林可否用來作聚類呢?咱們一塊兒探討下。html
其實隨機森林是能夠用來作聚類的,對於沒有標籤的特徵,隨機森林經過生成數據來實現聚類。其主要的步驟以下:算法
第一步:生成假冒數據和臨時標籤。dom
咱們先給原數據集增長一列,名叫「標籤」,原生數據每一行的標籤都是「1」。下面生成一些假數據,假數據的每一列都是從原生數據中根據其經驗分佈隨機產生的,人工合成的數據的標籤是「0」。舉個例子,ide
標籤 身高 體重 年齡spa
1 184 158 25rest
1 170 162 37orm
1 165 132 45htm
1 110 78 9blog
1 145 100 14圖片
1 ... ... ...
上面是原生數據,下面咱們開始製造虛假數據
標籤 身高 體重 年齡
1 184 158 25
1 170 162 37
1 165 132 45
1 110 78 9
1 145 100 14
1 ... ... ...
0 170 100 9
0 110 162 37
0 165 158 14
每行假數據的每個元素都是從它所在的那一列中隨機抽取的,列和列之間的抽取是獨立的。這樣一來,人工合成的假數據就破壞了原有數據的結構性。如今咱們的數據集和標籤就生成完了。
第二步:用該數據集訓練Random Forest並得到樣本間的臨近性(proximity)。
假設原生樣本有N行,咱們再生成M個假數據。如今咱們就有了帶標籤的樣本以後就能夠用它訓練出一個Random Forest。Random Forest在訓練的同時,能夠返回樣本之間的臨近性(proximity,兩個樣本出如今樹杈同一節點的頻率越高,它們就越臨近)。咱們就有了一個(N+M)x(N+M)的臨近矩陣(這是個對稱矩陣)。把與假數據相關的M行、M列去掉,咱們就獲得了NxN的矩陣,矩陣的第i行第j列的數值就是原生數據中第i個樣本和第j個樣本之間的臨近性。
第三步:根據每一個樣本點兩兩之間的臨近性來聚類。
這個是最後一步,在其中能夠用兩兩之間的臨近性當作兩兩之間的距離,而後再利用常規的聚類算法,好比層次聚類法(Hierarchical clustering),就能夠完成對原樣本的聚類。
參考
[1]https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#unsup [2]https://www.cnblogs.com/igofreely/p/11218459.html [3]https://zhuanlan.zhihu.com/p/22097796
喜歡就關注一下啦~~~