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

熱線電話:13121318867

登錄
首頁精彩閱讀R語言與數(shù)據(jù)分析之三:分類算法2_數(shù)據(jù)分析師
R語言與數(shù)據(jù)分析之三:分類算法2_數(shù)據(jù)分析師
2014-12-12
收藏

R語言與數(shù)據(jù)分析之三:分類算法2_數(shù)據(jù)分析師

比較現(xiàn)代的分類算法:決策樹神經(jīng)網(wǎng)絡。這兩個算法都來源于人工智能和機器學習學科。

      首先和小伙伴介紹下數(shù)據(jù)挖掘領域比較經(jīng)典的Knn(nearest neighbor)算法(最近鄰算法)

      算法基本思想:

      Step1:計算出待測樣本與學習集中所有點的距離(歐式距離或馬氏距離),按距離大小排序,選擇出距離最近的K個學習點;

      Step2:統(tǒng)計被篩選出來的K個學習點,看他們在分類中的分布,頻數(shù)最大的分類及為待測點的分類;

決策樹(Decision tree)

      該算法主要來源于人工智能,常用語博弈論,基本邏輯如下圖(解釋女網(wǎng)友見男網(wǎng)友的決策過程)。決策數(shù)學習集的屬性可以是非連續(xù)的,可以是因子,也可 以邏輯是非等。決策過程中需要找到信息增益最大的屬性作為根節(jié)點,然后逐級找出信息增益次小的屬性,作為下一層決策點,逐級按照信息增益排列的所有屬性, 即可做出決策樹。目前用的最多的ID3和其后續(xù)升級版。

      現(xiàn)在我們來看看如何用R幫我們做決策樹分析,我們借助鳶尾花數(shù)據(jù)集來做,同時我們需要導入rpart包來做決策樹分析:

[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. install.packages("rpart") 
  2. library(rpart) 
  3. iris.rp=rpart(Species~.,data=iris,method="class") 
  4. plot(iris.rp,uniform=T,branch=0,margin=0.01,main="DecisionTree") 
  5. text(iris.rp,use.n=T,fancy=T,col="blue") 

結(jié)果如下圖:

人工神經(jīng)網(wǎng)絡

ANN(Artificial NeuralNetWorks)

通過學習集構(gòu)造出一個模型(感知器:如下圖),圖中0.3即為該分支的權值,0.4為偏置因子(t), sum求和為本例的激活函數(shù)(也可是其他函數(shù):三角,指數(shù)等),人工神經(jīng)網(wǎng)絡也就是通過學習集來修正權值,通過負反饋過程進行,具體算法如下:

[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. Step1:另D={(xi,yi)|i=1,2…n}作為訓練集; 
  2. Step2:隨機生成初始權值向量w; 
  3. Step3: for 每一個訓練集 
  4.             計算輸出預測yyi 
  5.             For 每個權值wj 
  6.                 更新權值wj(k+1)=wj(k)+a(yi-yyi(k))*xij 
  7.             EndFor 
  8.     endFor 
  9. until滿足終止條件 
  10. Ps: a 為學習效率,通常是是一個較小的數(shù)字 

顯示的問題往往比較復雜,需要構(gòu)造多層神經(jīng)網(wǎng)絡如下圖:

接下來給小伙伴們分享下R語言如何實現(xiàn)人工神經(jīng)網(wǎng)絡分析,我們需要安裝AMORE包,我們就解決上文提到的3個變量分類y 的案例:

[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. library(AMORE) 
  2. x1=c(1,1,1,1,0,0,0,0) 
  3. x2=c(0,0,1,1,0,1,1,0) 
  4. x3=c(0,1,0,1,1,0,1,0) 
  5. y=c(-1,1,1,1,-1,-1,1,-1) 
  6. p<-cbind(x1,x2,x3) 
  7. target=y 
  8. net <- newff(n.neurons=c(3,1,1),learning.rate.global=1e-2, 
  9. momentum.global=0.4,error.criterium="LMS",Stao=NA,hidden.layer="tansig",output.layer="purelin",method="ADAPTgdwm")# n.neurons=c(輸 入節(jié)點個數(shù),……中間節(jié)點,輸出節(jié)點個數(shù)), error.criterium="LMS"判斷收斂的依據(jù),最小平均平方 法,hidden.layer="tansig"隱藏層的激活函數(shù),output.layer="purelin"輸出層的哦激活函數(shù) 
  10. result <- train(net,p,target,error.criterium="LMS",report=TRUE,show.step=100,n.shows=5) 
  11. z<-sim(result$net,p) 

輸出結(jié)果見下圖:

其中Z看符號變可區(qū)分,對比Z 和Y,發(fā)現(xiàn)神經(jīng)網(wǎng)絡得出的結(jié)果和目標值100%吻合。

      由此,我們可以看出人工神經(jīng)網(wǎng)絡的強大魅力,我們可以不用去弄明白內(nèi)部具體算法原理,我們只需要確定輸入輸出和設置相應的節(jié)點便可以輕松完成分類。對于隱藏層個數(shù)設置我們需要做一定的分析,并非隱藏層數(shù)越多,模型越精確,原因有兩個:

      1、  對于問題規(guī)模不那么復雜時,較多的隱藏層會浪費我們過多沒有必要的時間;

      2、  隱藏層越多確實可以給我們帶來更好的擬合效果,但需要注意的是,對學習集的過度擬合會造成預測時的巨大誤差。

      神經(jīng)網(wǎng)絡的黑箱性是把雙刃劍,一方面黑箱給我們帶來很大的方便;但另一方面黑箱的隱藏性讓我們無法把控,得出的模型無法和業(yè)務結(jié)合做解釋,因此神經(jīng)網(wǎng)絡需要新的思路來重構(gòu)算法,Hopfield神經(jīng)網(wǎng)絡的出現(xiàn)就解決了早期神經(jīng)網(wǎng)絡的黑箱性和過度擬合等缺點。

本文來自:CDA數(shù)據(jù)分析師官網(wǎng)

數(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); }