熱線電話:13121318867

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

R語言與數據分析之三:分類算法2_數據分析師

比較現代的分類算法:決策樹神經網絡。這兩個算法都來源于人工智能和機器學習學科。

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

      算法基本思想:

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

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

決策樹(Decision tree)

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

      現在我們來看看如何用R幫我們做決策樹分析,我們借助鳶尾花數據集來做,同時我們需要導入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") 

結果如下圖:

人工神經網絡

ANN(Artificial NeuralNetWorks)

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

[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 為學習效率,通常是是一個較小的數字 

顯示的問題往往比較復雜,需要構造多層神經網絡如下圖:

接下來給小伙伴們分享下R語言如何實現人工神經網絡分析,我們需要安裝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(輸 入節點個數,……中間節點,輸出節點個數), error.criterium="LMS"判斷收斂的依據,最小平均平方 法,hidden.layer="tansig"隱藏層的激活函數,output.layer="purelin"輸出層的哦激活函數 
  10. result <- train(net,p,target,error.criterium="LMS",report=TRUE,show.step=100,n.shows=5) 
  11. z<-sim(result$net,p) 

輸出結果見下圖:

其中Z看符號變可區分,對比Z 和Y,發現神經網絡得出的結果和目標值100%吻合。

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

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

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

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

本文來自:CDA數據分析師官網

數據分析咨詢請掃描二維碼

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

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢