1. 程式人生 > >R語言與資料分析之三:分類演算法2

R語言與資料分析之三:分類演算法2

上期與大家分享的傳統分類演算法都是建立在判別函式的基礎上,通過判別函式值來確定目標樣本所屬的分類,這類演算法有個最基本的假設:線性假設。今天繼續和大家分享下比較現代的分類演算法:決策樹和神經網路。這兩個演算法都來源於人工智慧和機器學習學科。

首先和小夥伴介紹下資料探勘領域比較經典的Knn(nearest neighbor)演算法(最近鄰演算法)

演算法基本思想:

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

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

決策樹(Decision tree)

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


現在我們來看看如何用R幫我們做決策樹分析,我們藉助鳶尾花資料集來做,同時我們需要匯入rpart包來做決策樹分析:

install.packages("rpart")
library(rpart)
iris.rp=rpart(Species~.,data=iris,method="class")
plot(iris.rp,uniform=T,branch=0,margin=0.01,main="DecisionTree")
text(iris.rp,use.n=T,fancy=T,col="blue")

結果如下圖:

人工神經網路

ANN(Artificial NeuralNetWorks)


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

Step1:另D={(xi,yi)|i=1,2…n}作為訓練集;
Step2:隨機生成初始權值向量w;
Step3: for 每一個訓練集
			計算輸出預測yyi
			For 每個權值wj
				更新權值wj(k+1)=wj(k)+a(yi-yyi(k))*xij
			EndFor
	endFor
until滿足終止條件
Ps: a 為學習效率,通常是是一個較小的數字

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

接下來給小夥伴們分享下R語言如何實現人工神經網路分析,我們需要安裝AMORE包,我們就解決上文提到的3個變數分類y 的案例:

library(AMORE)
x1=c(1,1,1,1,0,0,0,0)
x2=c(0,0,1,1,0,1,1,0)
x3=c(0,1,0,1,1,0,1,0)
y=c(-1,1,1,1,-1,-1,1,-1)
p<-cbind(x1,x2,x3)
target=y
net <- newff(n.neurons=c(3,1,1),learning.rate.global=1e-2,
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"輸出層的哦啟用函式
result <- train(net,p,target,error.criterium="LMS",report=TRUE,show.step=100,n.shows=5)
z<-sim(result$net,p)

輸出結果見下圖:

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


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

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

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

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

關於Hopfield大家就自己百度試試吧,住大家好運大笑




相關推薦

R語言資料分析分類演算法2

上期與大家分享的傳統分類演算法都是建立在判別函式的基礎上,通過判別函式值來確定目標樣本所屬的分類,這類演算法有個最基本的假設:線性假設。今天繼續和大家分享下比較現代的分類演算法:決策樹和神經網路。這兩個演算法都來源於人工智慧和機器學習學科。 首先和小夥伴介紹下資料探勘領域比

R語言資料分析時間內序列--HoltWinters指數平滑法

今天繼續就指數平滑法中最複雜的一種時間序列:有增長或者降低趨勢並且存在季節性波動的時間序列的預測演算法即Holt-Winters和大家分享。這種序列可以被分解為水平趨勢部分、季節波動部分,因此這兩個因素應該在演算法中有對應的引數來控制。 Holt-Winters演算法中提供

R語言資料分析主成分分析

主成份分析歷史: Pearson於1901年提出,再由Hotelling(1933)加以發展的一種多變數統計方法。通過析取主成分顯出最大的個別差異,也用來削減迴歸分析和聚類分析中變數的數目,可以使用樣本協方差矩陣或相關係數矩陣作為出發點進行分析。 通過對原始變數進行線性組合

R語言機器學習學習筆記(分類演算法)(1)K-近鄰演算法

前言      最近在學習資料探勘,對資料探勘中的演算法比較感興趣,打算整理分享一下學習情況,順便利用R來實現一下資料探勘演算法。      資料探勘裡我打算整理的內容有:分類,聚類分析,關聯分析,異常檢測四大部分。其中分類演算法主要介紹:K-近鄰演算法,決策樹演算法,樸素

R語言機器學習學習筆記(分類演算法)(3)樸素貝葉斯

演算法三:樸素貝葉斯演算法 在貝葉斯決策中,對於先驗概率p(y),分為已知和未知兩種情況。 1. p(y)已知,直接使用貝葉斯公式求後驗概率即可; 2. p(y)未知,可以使用聶曼-皮爾遜決策(N-P決策)來計算決策面。 而最大最小損失規則主要就是使用解決最小損失規則時先驗概率未知或難以計算的問題的

R語言機器學習學習筆記(分類演算法)(2)決策樹演算法

演算法二:決策樹演算法 決策樹定義 決策樹模型是基於特徵對例項進行分類的樹形結構。由結點和有向邊組成。結點包括內部結點和葉節點,內部結點為特徵或屬性,葉子節點表示一個類。 【優點】 模型具有可讀性,分類速度快。 以鳶尾花為例,觀察上圖,我們判決鳶尾花的思考過程可以這麼來描述:花瓣的長度

R語言機器學習學習筆記(分類演算法)(6)logistic迴歸

邏輯迴歸研究因變數Y為分類變數與多個自變數X之間的迴歸問題。隨機變數X的取值為實數,隨機變數Y的取值為1或0。常用於預測某隨機事件發生概率的大小。 Logistic迴歸問題的最優化問題可以表述為: 尋找一個非線性函式Sigmoid的最佳擬合引數,求解過程可使用最優化演

R語言資料分析工具的安裝應用

實驗名稱 R語言大資料分析工具的安裝與應用 專  業 軟體工程 姓    名      學  

R語言資料探勘學習筆記(1)資料探勘相關包的介紹

今天發現一個很不錯的部落格(http://www.RDataMining.com),博主致力於研究R語言在資料探勘方面的應用,正好近期很想系統的學習一下R語言和資料探勘的整個流程,看了這個部落格的內容,心裡久久不能平靜。決定從今天開始,只要晚上能在11點之前把碗洗好,就花一個小時的時間學習部落格上的內容,並把

玩轉大資料系列資料報表展示

經過了資料採集與資料同步、資料分析和處理,我們應該考慮將處理好的資料做成報表或者大屏展示給老闆們看,以便老闆們可以更加精準地做出戰略決策,為業務的發展指明方向。 提到資料報表,不得不說說Quick BI。Quick BI提供海量資料實時線上分析服務,支援拖拽式操作、提供了豐富的視覺化效果,可以幫助您輕鬆自如

Openfire分析ConnectionManager 連接管理(1)

max .com exc tco active eat cond hlist 觀察 Openfire是怎麽實現連接請求的?   XMPPServer.start()方法,完成Openfire的啟動。但是,XMPPServer.start()方法中,並沒有提及如何監聽端口,

R語言——電視劇資料分析

對如下資料進行描述性分析,其中包括:最大值,最小值,中位數,眾數等,求表的行數、列數。 讀入資料 > mydata<-read.csv("C:\\Users\\adwar\\Desktop\\soapdata.csv") 求表的行數: >

ARChon 分析Native Client

這篇文章主要是分析ARChon如何實現跨平臺。 Archon 如何實現跨平臺? 拉程式碼下來會發現幾乎沒有文件,核心的程式碼都被編譯成 so 庫。官方提供了幾篇文章。 這幾篇都是科普如何操作的文章

數理統計資料分析版習題 第3章 第12題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 令 f(x,y)=c(x2−y2)e−x,0≤x&lt;∞,−x≤y&lt;xf(x,y)=c(x^{2}-y^{2})e^{-x} ,0\leq x &lt

數理統計資料分析版習題 第3章 第15題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 假定X和Y具有聯合密度函式 f(x,y)=c1−x2−y2,x2+y2≤1f_(x,y)=c\sqrt{1-x^2-y^2}, \quad x^2+y^2\leq1f(​x,y)=c1

數理統計資料分析版習題 第3章 第16題

fX2(x2)=∫x21fX1X2(x1x2)dx1=∫x211x1dx1=[lnx1]x21=ln1x20≤x2≤x1\begin{aligned} f_{X_{2}}(x_{2})&amp;=\int_{x_{2}}^{1}f_{X_{1}X_{2}}(x_{1}x_{2}) dx_{1}\\ &

數理統計資料分析版習題 第3章 第17題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 令(X,Y)是隨機點,均勻地選自區域 R={(x,y):∣x∣+∣y∣≤1}R=\left\{(x,y):|x|+|y|\leq1 \right\}R={(x,y):∣x∣+∣y∣≤1

數理統計資料分析版習題 第3章 第19題

P(T1&gt;T2)=∬t1&gt;t2f(t1,t2)dt2dt1=∫0∞∫0t1αe−αt1∗βe−βt2dt2dt1=∫0∞αe−αt1∗β∗1−β[e−βy]0t1dt2=∫0∞(−αe−αt1e−βx+α−αt1)dt1=∫0∞(α−αt1)dt1−∫0∞αe−αt1e−βxdt1

數理統計資料分析版習題 第3章 第20題

以下解題過程都是由網際網路收集或自己計算而來,並不保證正確,如有疑問可以留言討論 題目 假設通訊網路中的節點具有這樣的性質,如果兩個資訊包到達的時間間隔小於τ, 它們就會發生衝突,必須重新傳送,如果兩個包到達的時間相互獨立,且服務[0,T]上的均勻分佈 a.問它

數理統計資料分析版習題 第3章 第22題

P{N(t1−t0)=k∣N(t2−t0)=n}=P{N(t1−t0)=k,N(t2−t0)=n}P{N(t2−t0)=n}=P{N(t1−t0)=k,N(t2−t1)=n−k}P{N(t2−t0)=n}=e−λ(t1−t0)⋅(λ(t−t0))kk!⋅e−λ(t2−t1)⋅(−λ(t2−t1))n−k(n−