1. 程式人生 > >機器學習之分類器的進階

機器學習之分類器的進階

專案中我用到的分類器是隨機森林。 

理解隨機森林,我先po一篇論文。George Vosselman教授的 

http://www.sciencedirect.com/science/article/pii/S0924271616306207 

這裡面用到的分類器是CRF以及RF; 

這裡面是基於segment-based classification的論文,其中feature的計算是基於segment的 用的是條件隨機場,條件隨機場的思想和圖割非常相近。

都是分為 associate potential 以及 interactive potential 

associate potential 就是沒有neighborhood,直接自己單個點的進行分類.

interactive potential 就是neighborhood之間的分類。

CRF是個無向圖是為上下文分類提供一個概率框架,接下來看https://wenku.baidu.com/view/6ff1fa6952ea551811a68752.html?qq-pf-to=pcqq.c2c 這個網站第一部分 Discrete Optimization:graph cuts and Belie propagation  讀一讀就行了,主要是計算min-cut,能量最小值也是max flow,也就是(data term, smooth term),當處理一個label的時候,共同處理所有的pixel, 其他pixel為第二類,對每個pixel一個個的處理。如果要是把這個pixel誤分為其他label的話,那麼就麻煩了,以為其他label可能是 2 3 4 5 6 那麼,很難找到那個pixel屬於哪個類。所以即使是錯分,也要把其他label pixel分為1 . 這個裡面的思想和CRF的總體思想大概一致,但是寫的更加的詳細。CRF 通過確定graph structures, 模型 用作potential 以及features來進行應用,而graph structure  model 以及features都是可以進行自己選的。比如你可以用RF作為先前概率輸出的分類器,當然線性的也可以。

CRF的一個重要特徵是:它是基於其他分類器輸出的概率結果,舉個例子: RF輸入的是每一個點以及點的特徵,然後輸出的是vote就是概率vector, 然後獲取哪個label最大的概率,這個點就是那個label了,而CRF就是基於這個概率輸出,然後進行再一次分類。 CRF也可以用為一個點的分類。 輸入的資料也是基於其他分類器輸出的概率結果。

還有訓練的時候最好每個類別都要選取同樣的sample,即使有的類別可能點雲更多區域更大, 而有的點雲區域小,點雲多,但是 還是要儘可能選取同樣數量的數量,這個很多文章都有提到過!

問題就是再次分類怎麼找概率?而且怎麼用程式?

RF是由T個random decision tree來組成的,每棵樹都是獨立進行訓練,訓練的資料都是隨機選擇的,對於RF來講,重要的引數是樹的深度,以及需要訓練的最小數量的samples. 分類的時候每課樹進行投票,最後獲得投票數量最多的就是那個label. 而隨機森林差不多是associate potential 是一個點進去一個點出來概率。

注意:分類器都是需要先用reference data和features來進行訓練,訓練出一個模型,然後輸入模型和需要分類的資料得到分類結果!