• <menu id="w2i4a"></menu>
  • logo 慧都大數(shù)據(jù)(二)

    文檔首頁(yè)>>慧都大數(shù)據(jù)(二)>>IBM SPSS Modeler 算法優(yōu)化神器——Bagging 和 Boosting

    IBM SPSS Modeler 算法優(yōu)化神器——Bagging 和 Boosting


    IBM SPSS Modeler中,每個(gè)算法都會(huì)有相應(yīng)的默認(rèn)參數(shù)設(shè)置,對(duì)初學(xué)者來(lái)說(shuō),即使不是很懂算法,也可以生成模型結(jié)果,但在實(shí)際項(xiàng)目中,我們?yōu)榱耸沟媚P透拥膬?yōu)化,提升模型的準(zhǔn)確率,經(jīng)常會(huì)對(duì)算法的參數(shù)做一些相應(yīng)的調(diào)整,那么今天,我們給大家介紹兩個(gè)參數(shù),分別是BaggingBoosting,讓大家了解下它們是怎么用的,能帶來(lái)什么樣的模型優(yōu)化結(jié)果。

    用途:

    Bagging和Boosting都是用來(lái)提高模型準(zhǔn)確率的方法。

    計(jì)算邏輯:

    Bagging是Bootstrap Aggregating的一種方式,是一種根據(jù)均勻概率分布從數(shù)據(jù)集中重復(fù)抽樣(有放回的)的技術(shù)。每個(gè)自助樣本集都和原數(shù)據(jù)集一樣大。由于抽樣過程是有放回的,因此一些樣本可能在同個(gè)訓(xùn)練數(shù)據(jù)集中出現(xiàn)多次,而其它一些卻可能被忽略。假設(shè)我設(shè)置了Bagging的次數(shù)是10,也就是說(shuō)我會(huì)根據(jù)上面的重復(fù)抽樣方式,抽取10份數(shù)據(jù),分別構(gòu)建10個(gè)模型,得到10個(gè)預(yù)測(cè)結(jié)果,對(duì)最后的判定,如果是分類問題采用投票方式,對(duì)回歸問題采用簡(jiǎn)單平均方法。

    Boosting主要是AdaBoost (Adaptive Boosting),初始化時(shí)對(duì)每一個(gè)訓(xùn)練集賦相等的權(quán)重1/n,然后用該學(xué)算法對(duì)訓(xùn)練集訓(xùn)練t輪,每次訓(xùn)練后,對(duì)訓(xùn)練失敗的訓(xùn)練例賦以較大的權(quán)重,也就是讓學(xué)習(xí)算法在后續(xù)的學(xué)習(xí)中集中對(duì)比較難的訓(xùn)練例進(jìn)行學(xué)習(xí),從而得到一個(gè)預(yù)測(cè)函數(shù)序列h_1,?, h_m , 其中h_i也有一定的權(quán)重,預(yù)測(cè)效果好的預(yù)測(cè)函數(shù)權(quán)重較大,反之較小。最終的預(yù)測(cè)函數(shù)H對(duì)分類問題采用有權(quán)重的投票方式,對(duì)回歸問題采用加權(quán)平均的方法對(duì)新示例進(jìn)行判別。

    Bagging與Boosting的區(qū)別:

    二者的主要區(qū)別是取樣方式不同。Bagging采用均勻取樣,而Boosting根據(jù)錯(cuò)誤率來(lái)取樣,因此Boosting的分類精度要優(yōu)于Bagging。Bagging的訓(xùn)練集的選擇是隨機(jī)的,各輪訓(xùn)練集之間相互獨(dú)立,而Boosting的各輪訓(xùn)練集的選擇與前面各輪的學(xué)習(xí)結(jié)果有關(guān);Bagging的各個(gè)預(yù)測(cè)函數(shù)沒有權(quán)重,而Boosting是有權(quán)重的;Bagging的各個(gè)預(yù)測(cè)函數(shù)可以并行生成,而Boosting的各個(gè)預(yù)測(cè)函數(shù)只能順序生成。對(duì)于像神經(jīng)網(wǎng)絡(luò)這樣極為耗時(shí)的學(xué)習(xí)方法,Bagging可通過并行訓(xùn)練節(jié)省大量時(shí)間開銷。

    Bagging和Boosting都可以有效地提高分類的準(zhǔn)確性。在大多數(shù)數(shù)據(jù)中,Boosting的準(zhǔn)確性比Bagging高;在有些數(shù)據(jù)集中,Boosting會(huì)引起退化------過度擬合。

    大數(shù)據(jù)分析

    IBM SPSS Modeler中的應(yīng)用:

    在IBM SPSS Modeler中,可以設(shè)置Bagging或Boosting功能的在算法包括:

    Neural

    Network

    CHAID

    QUEST

    C&RT

    Linear

    以CHAID決策樹為例:

    接下來(lái)我們通過電信流失客戶分析模型的創(chuàng)建來(lái)體驗(yàn)下這兩個(gè)參數(shù)的設(shè)置對(duì)預(yù)測(cè)結(jié)果的影響。

    首先,我們創(chuàng)建一數(shù)據(jù)流文件 ,如下圖:

    spss

    Step1:連接數(shù)據(jù)源Excel文件,文件內(nèi)容如下:

    spss

    Step2:類型節(jié)點(diǎn)設(shè)置影響因素及目標(biāo):

    spss

    Step3:選擇CHAID決策樹算法,并使用默認(rèn)參數(shù)設(shè)置生成模型:

    spss

    Step4:生成的模型結(jié)果,可以在摘要面板查看默認(rèn)的參數(shù)設(shè)置內(nèi)容:

    spss

    Step5:通過評(píng)估節(jié)點(diǎn)查看模型準(zhǔn)確率為84.49%:

    spss

    接下來(lái),我們第一次更改算法的設(shè)置內(nèi)容,在構(gòu)建選項(xiàng)的目標(biāo)面板中,選中“增強(qiáng)模型穩(wěn)定性”,在整體面板中,設(shè)置模型數(shù)量為“10”。

    spss
    spss

    重新運(yùn)行模型后,可以看到,得到10個(gè)模型結(jié)果及各自的準(zhǔn)確率:

    spss

    也可以看到該算法中參數(shù)設(shè)置的內(nèi)容:

    spss

    再用評(píng)估節(jié)點(diǎn),看到新模型準(zhǔn)確率與之前的準(zhǔn)確率相比,增加到88.16%:

    spss

    同樣的道理,如果我們?cè)O(shè)置為Boosting選項(xiàng),生成的模型可以看到它的準(zhǔn)確度緩慢提升:

    spss

    同樣的,用評(píng)估節(jié)點(diǎn),可以看到模型的準(zhǔn)確率會(huì)增加到92.03%:

    spss

    總結(jié):

    通過上面的例子,我們可以看到使用Bagging和Boosting對(duì)模型帶來(lái)的影響,可以在實(shí)際項(xiàng)目中嘗試著使用,當(dāng)然啦,因?yàn)槭褂眠@兩個(gè)選項(xiàng)后,它的計(jì)算量會(huì)大大增加,比如原來(lái)要構(gòu)建一個(gè)決策樹模型,現(xiàn)在要構(gòu)建N個(gè)(取決于你設(shè)置的模型個(gè)數(shù)),因此計(jì)算量是原來(lái)的N倍,所以,請(qǐng)耐心等待……

    慧都控件網(wǎng)年終促銷第一波已開啟,全場(chǎng)6折起,豪禮搶不停>>>

    截止時(shí)間:2016年10月30日

    更多大數(shù)據(jù)與分析相關(guān)行業(yè)資訊、解決方案、案例、教程等請(qǐng)點(diǎn)擊查看>>>

    詳情請(qǐng)咨詢在線客服!

    客服熱線:023-66090381

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();