99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀隨機森林(RF, RandomForest)介紹
隨機森林(RF, RandomForest)介紹
2016-05-04
收藏

隨機森林(RF, RandomForest)介紹

隨機森林(RF, RandomForest)包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)而定。通過自助法(boot-strap)重采樣技術(shù),不斷生成訓練樣本和測試樣本,由訓練樣本生成多個分類樹組成的隨機森林,測試數(shù)據(jù)的分類結(jié)果按分類樹投票多少形成的分數(shù)而定。

隨機森林以隨機的方式建立一個森林,森林里有很多決策樹,且每棵樹之間無關(guān)聯(lián),當有一個新樣本進入后,讓森林中每棵決策樹分別各自獨立判斷,看這個樣本應該屬于哪一類(對于分類算法)。然后看哪一類被選擇最多,就選擇預測此樣本為那一類。

→ 每個節(jié)點處隨機選擇特征進行分支。

利用bootstrap重抽樣方法,從原始樣本中抽出多個樣本,對每個bootstrap樣本進行決策樹建模。

主要思想是bagging并行算法,用很多弱模型組合出一種強模型。

一、隨機決策樹的構(gòu)造

建立每棵決策樹的過程中,有2點:采樣與完全分裂。首先是兩個隨機采樣的過程,RF要對輸入數(shù)據(jù)進行一下行(樣本)、列(特征)采樣,對于行采樣(樣本)采用有放回的方式,也就是在采樣得到的樣本中可以有重復。從M個特征中(列采樣)出m特征。之后就是用完全分裂的方式建立出決策樹。

一般決策樹會剪枝,但這里采用隨機化,就算不剪枝也不會出現(xiàn)“過擬合”現(xiàn)象。

二、隨機森林的構(gòu)造

1.有N個樣本,則有放回地隨機選擇N個樣本(每次取1個,放回抽樣)。這選擇好了的N各樣本用來訓練一個決策樹,作為決策樹根節(jié)點處的樣本。

2.當每個樣本有M個屬性時,在決策樹的每個節(jié)點需要分裂時,隨機從這M個屬性中選取出m個屬性,滿足條件m<<M。然后從這m個屬性中采用某種策略(如信息增益)來選擇一個屬性,作為該節(jié)點的分裂屬性。

3.決策樹形成過程中,每個節(jié)點都要按照步驟2來分裂(很容易理解,如果下一次該節(jié)點選出來的那一個屬性是剛剛父節(jié)點分裂時用過的屬性,則該節(jié)點已經(jīng)達到了葉子節(jié)點,無需繼續(xù)分裂)。一直到不能再分裂為止,注意整個決策樹形成過程中沒有剪枝。

4.按步驟1-3建立大量決策樹,如此形成RF。

(從上面步驟可以看出,RF的隨機性體現(xiàn)在每棵樹的訓練樣本是隨機的,樹中每個節(jié)點的分類屬性也是隨機選擇的,有了這兩個隨機的保證,RF就不會產(chǎn)生過擬合現(xiàn)象了)

三、隨機森林參數(shù)

隨機森林有2個重要參數(shù):一是樹節(jié)點預選變量個數(shù),二是隨機森林中樹的個數(shù)(m的大小)

RF中有2個要人為控制的參數(shù):1.森林中樹的數(shù)量,一般建議取很大;2.m的大小,推薦m的值為M的均方根。

四、RF性能及優(yōu)缺點

優(yōu)點:

1.很多的數(shù)據(jù)集上表現(xiàn)良好;

2.能處理高維度數(shù)據(jù),并且不用做特征選擇;

3.訓練完后,能夠給出那些feature比較重要;

4.訓練速度快,容易并行化計算。

缺點:

1.在噪音較大的分類或回歸問題上會出現(xiàn)過擬合現(xiàn)象;

2.對于不同級別屬性的數(shù)據(jù),級別劃分較多的屬性會對隨機森林有較大影響,則RF在這種數(shù)據(jù)上產(chǎn)出的數(shù)值是不可信的。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }