【隨機森林】random forests 簡單介紹

  • Random Forest,顧名思義 Random 就是隨機抽取; Forest 就是說這里不止一棵樹,而由 一群決策樹組成的一片森林 ,連起來就是用隨機抽取的方法訓練出一群決策樹來完成分類任務。
  • RF用了兩次隨機抽取, 一次是對訓練樣本的隨機抽取; 另一次是對變量 (特征) 的隨機抽取。這主要是為了解決樣本數量有限的問題
  • RF的核心是由弱變強思想的運用。每棵決策樹由于只用了部分變量、部分樣本訓練而成, 可能單個的分類準確率并不是很高。 但是當一群這樣的決策樹組合起來分別對輸入數據作出判斷時, 可以帶來較高的準確率。有點類似于俗語三個?皮匠頂個諸葛亮。
  • 隨機森林有兩個重要參數:樹節點預選的變量個數;隨機森林中樹的個數

隨機森林思想來源

PAC?→Bootstrap?→Bagging?→Random?Forest?←CART?\text { PAC } \rightarrow \text { Bootstrap } \rightarrow \text { Bagging } \rightarrow \text { Random Forest } \leftarrow \text { CART } ?PAC??Bootstrap??Bagging??Random?Forest??CART?

PAC(Probably Approximately Correct)

  • 在該模型中, 若存在一個多項式級的學習算法來識別一組概念, 并且識別正確率很高, 那么這組概念是強學習算法; 而如果學習算法識別一組概念的正確率僅比隨機猜測略好, 那么這組概念是弱學習算法。
  • 如果可以將弱學習算法提升成強學習算法, 那么我們就只要找到一個弱學習算法, 然后把它提升成強學習算法, 而不必去找通常情況下很難獲得的強學習算法。

Bootstrap

  • 根據PAC由弱得到強的思想, 統計學著名學者Bradley Efron在 1979年提出了Bootstraps算法, 這個名字來自于成語 “pull up by your own bootstraps”, 意思是依靠自己的資源, 稱為自助法。
  • 它的思想就是當樣本數量不大, 分布情況未知時, 可以從原始樣本中隨機抽取的多個樣本情況 (弱學習) 來估計原樣本真實的分布情況。它是非參數統計中一種重要的估計統計量方差進而進行區間估計的統計方法。
  • 其基本步驟如下:
    – (1) 從原始數據集中, 有放回地抽樣一定數量的樣本
    – (2)根據抽出的樣本計算給定的統計量 T\mathrm{T}T
    – (3)重復上述N次 (一般大于1000), 得到 NNN 個統計量 T\mathrm{T}T
    – (4)計算上述 N\mathrm{N}N 個統計量 T\mathrm{T}T 的樣本方差, 得到統計量的方差
  • 0.632自助法
    假設給定的數據集包含 d\mathrm{d}d 個樣本。該數據集有放回地抽樣 d\mathrm{d}d 次, 產生 d\mathrm{d}d 個樣本的訓練集。原數據中的某些樣本很可能在該樣本集中出現多次。顯然每個樣本被選中的概率是 1/d1 / \mathrm{d}1/d,因此未被選中的概率就是 (1?1/d)(1-1/d)(1?1/d),這樣一個樣本在訓練集中沒出現的概率就是 d\mathrm{d}d 次都未被選中的概率, 即 (1?1/d)d(1-1/d) ^d(1?1/d)d。當 ddd 趨于無窮大時, 這一概率就將趨近于e?1=0.368e^{-1}=0.368e?1=0.368,所以留在訓練集中的樣本大概就占原來數據集的 63.2%63.2 \%63.2%

Bagging

  • Bagging 又叫bootstrap aggregation, 是Breiman在1993 年提出的方法, 第一步就是根據Bootstrap進行抽樣。
  • 基本的步驟:
    – (1)從樣本集中用Bootstrap采樣選出 n\mathrm{n}n 個樣本
    – (2)在所有屬性上, 對這 n\mathrm{n}n 個樣本建立分類器 (CART or SVM or …)
    – (3)重復以上兩步m次, i.e. 建立 mmm 個分類器 (CART or SVM or … )
    – (4)將數據放在這m個分類器上跑, 最后vote看到底分到哪一類
  • 這種方法可以大大降低每個分類器的不穩定性, 從而帶來較高的預測準確率。從這個方法再往下發展就是隨機森林了

隨機森林

  • 隨機森林是以決策樹為基本分類器的一個集成學習模型, 它包含多個由Bagging集成學習技術訓練得到的決策樹。
  • Random Forests不同的是: 在Bagging的基礎上, 使用一種改進的樹學習算法, 在每個候選分裂的學習過程中, 選擇特征值的一個隨機子集。有時被稱為 “feature bagging”。
    在這里插入圖片描述
  • 該算法用隨機的方式建立起一棵棵決策樹, 然后由這些決策樹組成一個森林, 其中每棵決策樹之間沒有關聯, 當有一個新的樣本輸入時, 就讓每棵樹獨立的做出判斷, 按照多數原則決定該樣本的分類結果。

構建隨機森林

(1) 從樣本集中用bagging采樣選出 n\mathrm{n}n 個樣本, 預建立CART
(2) 在樹的每個節點上, 從所有屬性中隨機選擇 k\mathrm{k}k 個屬性, 選擇出一個最佳分割屬性作為節點(RI 和 RC )
(3) 重復以上兩步m次, i.e. 構建m棵CART (不剪枝)
(4) 這 m\mathrm{m}m 個CART形成Random Forest

利用隨機森林預測

(1) 向建立好的隨機森林中輸入一個新樣本
(2) 隨機森林中的每棵決策樹都獨立的做出判斷
(3) 將得到票數最多的分類結果作為該樣本最終的類別

影響性能的因素

  • 森林中單棵樹的分類強度(Strength):每棵樹的分類強度越大, 則隨機森林的分類性能越好
  • 森林中樹之間的相關度(Correlation):樹之間的相關度越大,則隨機森林的分類性能越差。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258274.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258274.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258274.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

側邊工具開發2

1.使用圖片的形式會出現大量的圖片&#xff0c;影響性能&#xff0c;而且不易修改&#xff0c;所有使用圖標加文字的形式進行 <a href"javacript:;" class"toolbar-item"><span class"toolbar-btn"><i class"toolbar-icon&q…

斐波那契?

斐波那契&#xff1f; Time Limit: 1000ms Memory limit: 32768K 有疑問&#xff1f;點這里^_^ 題目描述 給出一個數列的遞推公式&#xff0c;希望你能計算出該數列的第N個數。遞推公式如下&#xff1a; F(n)F(n-1)F(n-2)-F(n-3). 其中&#xff0c;F(1)2, F(2)3, F(3)5. 很熟…

clustalw序列比對_序列比對之Clustalx與Clustalw使用指南

相關專題這幾天實驗需要做多序列比對&#xff0c;很久不做了&#xff0c;一時之間不知道如何使用clustal這個工具了。在網上搜集了一些資料&#xff0c;做個整理&#xff0c;總結了Clustalx和Clustalw的使用&#xff0c;省得以后久不使用又生疏了&#xff0c;又要去整理了&…

信息安全系統設計基礎第三周學習總結—20135227黃曉妍

一.Vim編輯器 1.Vim的六種模式 2.Vim三種常用模式的使用方式&#xff0c;以及三者的切換。打開Vim即默認進入普通模式&#xff0c;按i進入插入模式&#xff0c;按esc從插入模式退出普通模式&#xff0c;再按&#xff1a;進入命令行模式。 普通模式下游標的移動 按鍵 說明 h …

關于指定日期的獲取

java使用Calendar類獲得指定日期 關于指定日期的獲取&#xff0c;是根據指定日期和當前日期相差的天數&#xff0c;然后使用set方法設置Calendar.DAY_OF_MONTH的值。Calendar cal Calendar.getInstance();cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - da…

nodejs的package.json依賴dependencies中 ^ 和 ~ 的區別

nodejs的package.json定義了一個模塊&#xff0c;包括其依賴關系的一個簡單的JSON文件&#xff0c;該文件可以包含多個不同的指令來告訴Node包管理器如何處理模塊。 dependencies則表示此模塊依賴的模塊和版本&#xff0c;其中常常可以看到類似 ^1.2.0 或 ~1.2.0 這樣的版本范圍…

腳本命令_SAP HANA數據庫備份命令腳本

需求場景&#xff1a;HANA數據庫版本 2.044 &#xff0c; SYSTEMDB庫1個&#xff0c;Tenant庫有3個 PRD、POP、HAP需要用命令行備份。備份原理說明&#xff1a;1、腳本同hana studio 一樣&#xff0c;用SYSTEM用戶去備份所有的數據庫。2、備份腳本工作在數據庫管理員用戶下&…

Spring 基于Java的Bean聲明

Spring 基于Java的Bean聲明 使用Configuration進行設置&#xff1b; Xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://www.springframework.…

手機音頻通道被占用_關于凱叔講故事APP的音頻導出下載

孩子喜歡聽凱叔講故事&#xff0c;起先是三國演義和博物學&#xff0c;在網上聽了個開頭后&#xff0c;毫不猶豫買了正版,心想著購買app可以下載音頻&#xff0c;完了拷貝到其他播放器聽。然而......然而......大失所望&#xff0c;美其名曰保護正版&#xff0c;可這么個玩意&a…

編譯安裝 apache 2.4.6

如果配置apr&#xff0c;需要預先安裝apr 以下是安裝apache 步驟: groupadd webuser useradd -g webuser webuser 下載apache2 下載鏈接&#xff1a;http://pan.baidu.com/s/1ntiGWvZ 配置 ./configure --prefix/server/apache2 \ --enable-mods-sharedmost \ --enable-so \ --…

CSS3中border-radius、box-shadow與gradient那點事兒

一、border-radius border-radius用于添加圓角邊框&#xff0c;用處非常廣泛。 1&#xff09;一個值&#xff0c;代表了四個角 .radius-one {/* Safari 3-4, iOS 1-3.2, Android 1.6- */-webkit-border-radius: 12px; /* Firefox 1-3.6 */-moz-border-radius: 12px; /* Opera 1…

編程 跳臺階_Java版劍指offer編程題第8題--跳臺階

跟learnjiawa一起每天一道算法編程題&#xff0c;既可以增強對常用API的熟悉能力&#xff0c;也能增強自己的編程能力和解決問題的能力。算法和數據結構&#xff0c;是基礎中的基礎&#xff0c;更是筆試的重中之重。不積硅步&#xff0c;無以至千里&#xff1b;不積小流&#x…

獲取漢字的首字母(轉)

轉換 獲取一個漢字的拼音首字母。 GB碼兩個字節分別減去160&#xff0c;轉換成10進制碼組合就可以得到區位碼例如漢字“你”的GB碼是0xC4/0xE3&#xff0c;分別減去0xA0&#xf…

$ionicPopup

轉自&#xff1a;http://www.ionicframework.com/docs/api/service/%24ionicPopup/ Usage A few basic examples, see below for details about all of the options available. angular.module(mySuperApp, [ionic]) .controller(PopupCtrl,function($scope, $ionicPopup, $tim…

目標規劃運籌學例題doc_運籌學之目標規劃(胡運權版).doc

運籌學之目標規劃(胡運權版).doc第七章 目標規劃1 目標規劃的提出線性規劃問題是討論一個給定的線性目標函數在一組線性約束條件下的最大值或最小值問題。對于一個實際問題&#xff0c;管理科學者根據管理層決策目標的要求&#xff0c;首先確定一個目標函數以衡量不同決策的優劣…

Deep Learning(深度學習) 學習筆記(四)

神經概率語言模型&#xff0c;內容分為三塊&#xff1a;問題&#xff0c;模型與準則&#xff0c;實驗結果。[此節內容未完待續...] 1&#xff0c;語言模型問題 語言模型問題就是給定一個語言詞典包括v個單詞&#xff0c;對一個字串做出二元推斷&#xff0c;推斷其是否符合該語言…

Java Virtual Machine

后續完善轉載于:https://www.cnblogs.com/fight-tao/p/4849167.html

selenium 鼠標懸浮_處理Selenium3+python3定位鼠標懸停才顯示的元素

先給大家介紹下Selenium3python3--如何定位鼠標懸停才顯示的元素定位鼠標懸停才顯示的元素&#xff0c;要引入新模塊# coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsdriver webdriver.Firefox()driver.get(&q…

JavaScript 運行機制

JavaScript 運行機制 閱讀目錄 一、為什么JavaScript是單線程&#xff1f;二、任務隊列三、事件和回調函數四、Event Loop五、定時器六、Node.js的Event Loop七、關于setTimeout的測試一、為什么JavaScript是單線程&#xff1f; JavaScript語言是單線程&#xff0c;也就是說&am…

mysql 時間 本周 本月_mysql查詢當天、本周、上周、本月、上月信息

今天select * from 表名 where to_days(時間字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 時間字段名) < 17天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(時間字段名)近30天SELECT * FROM 表名 wher…