OpenCV學習筆記(四十五)——小試隨機森林(random forest)演算法ml

來源:互聯網
上載者:User

對於隨機森林演算法,原理我想大家都會去看論文,推薦兩個老外的網址http://www.stat.berkeley.edu/users/breiman/RandomForests/和https://cwiki.apache.org/MAHOUT/random-forests.html,第一個網址是提出隨機森林方法大牛寫的,很全面具體,第二個是我自己找的一個,算是一個簡化版的介紹吧。說白了,隨機森林分類的過程就是對於每個隨機產生的決策樹分類器,輸入特徵向量,森林中每棵樹對樣本進行分類,根據每個樹的權重得到最後的分類結果。所有的樹訓練都是使用同樣的參數,但是訓練集是不同的,分類器的錯誤估計採用的是oob(out
of bag)的辦法。如果大家看懂了,接下來就簡單咯

還是先介紹一下對應opencv的類和函數吧,之前有籠統介紹過機器學習的類,對於隨機森林相關演算法類有CvRTParams、CvRTrees。具體再講解一下:

CvRTParams類包涵了隨機森林訓練過程中需要設定的全部參數,繼承自CvDTParams。其中

max_depth表示單棵樹的最大深度

min_sample_count閾值,當節點的樣本數比閾值小的時候,節點就不在進行分裂

regression_accuracy回逆樹時候的閾值

use_surrogates是否使用代理?(這是神馬功能。。。)

max_categories最大分類的閾值

priors先驗分類可能性

calc_var_importance變數重要性是否計算標誌

nactive_vars每棵樹選取特徵子集的大小

max_num_of_trees_in_the_forest森林內樹的數目上限

forest_accuracy森林訓練OOB error的精度

termcrit_type森林訓練閾值選取的類型

以上參數的賦值都通過CvRTParams的建構函式實現。

CvRTrees就是隨機森林的主體了。包涵了train訓練函數、predict預測函數、predict_prob返回預測分類標籤、getVarImportance返回變數權重矩陣、get_proximity返回兩訓練樣本之間的相似性、calc_error返回隨機森林的預測誤差、get_train_error返回訓練誤差、get_rng返回使用隨機數的當前值、get_tree_count返回構造隨機森林的樹的數目、get_tree返回構造隨機森林的其中一棵樹。

接下來,結合sample內建的letter_recog.cpp講解一下如何應用隨機森林演算法做字母的識別,這裡選擇的訓練樣本庫是http://archive.ics.uci.edu/ml/下的一個訓練集,這個網站還有很多其他的資源提供,非常好的機器學習的data庫。這個訓練檔案letter-recognition.data有20000個訓練字母,每一字母用16維的特徵表示。本程式使用前16000個進行訓練,後4000個進行測試。唯一讓我很不爽的是這個程式是用老版本的資料結構寫的,所以我決定用新結構再寫一下,我對原程式進行了簡化,刪除了很多不相關和不是必須的部分。

其實隨機森林使用起來非常簡單,兩個最重要的步驟無非就是train()和predict()函數,其他的函數都是用來得到測試結果。

這裡把我簡化並用新結構改寫之後的代碼下載連結奉上http://download.csdn.net/detail/yang_xian521/4134557

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.