版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章神經(jīng)網(wǎng)絡(luò)與支持向量機(jī)Part/
01支持向量機(jī)
支持向量機(jī)(SupportVectorMachine,SVM)是一種支持線性分類和非線性分類的二元分類算法。經(jīng)過演進(jìn),現(xiàn)在也支持多元分類,被廣泛地應(yīng)用在回歸以及分類當(dāng)中。支持向量機(jī)支持向量機(jī)支持向量機(jī)可以簡單地描述為對樣本數(shù)據(jù)進(jìn)行分類,真正對決策函數(shù)進(jìn)行求解。首先,要找到分類問題中的最大分類間隔,然后確定最優(yōu)分類超平面,并將分類問題轉(zhuǎn)化為二次規(guī)劃問題進(jìn)行求解。線性可分支持向量機(jī)支持向量機(jī)支持向量機(jī)線性可分:如果在特征空間中存在一個(gè)超平面能夠?qū)⑻卣骺臻g中的實(shí)例分為兩類,使得超平面的任意一側(cè)的實(shí)例全部擁有同一種標(biāo)簽。若找不到這樣的平面,則稱為線性不可分。在線性可分的情況下,在超平面兩側(cè)所有樣本點(diǎn)中,存在某點(diǎn)離該平面最近,則把這個(gè)最近的距離稱為間隔。支持向量機(jī)(SupportVectorMachine,SVM)是一種有監(jiān)督的學(xué)習(xí)方法,可以用于與分類和回歸相關(guān)的數(shù)據(jù)分析任務(wù)。給定一組訓(xùn)練樣本,每一個(gè)樣本都帶有各自的類別標(biāo)簽,支持向量機(jī)的訓(xùn)練目標(biāo)就是構(gòu)建一個(gè)分類模型,將空間中的不同類別的點(diǎn)用盡可能寬的間隔分開。支持向量機(jī)線性可分支持向量機(jī)核函數(shù)支持向量機(jī)用到了線性可分的假設(shè)。對于線性不可分的情形,可以借助核函數(shù)把低維空間中的點(diǎn)映射到高維空間,期望在低維空間中線性不可分的點(diǎn)在高維空間變得線性可分。選擇核函數(shù)是為了可以完成樣本點(diǎn)從低維空間到高維空間的變換。但是,在獲得線性可分性能時(shí),用戶也不希望因此引入過高的計(jì)算開銷。支持向量機(jī)中設(shè)計(jì)核函數(shù)時(shí)只要求它的內(nèi)積形式可以用原空間中點(diǎn)的簡單函數(shù)來計(jì)算。因此,高維空間中的超平面可定義為與空間中某個(gè)向量的點(diǎn)積為常數(shù)的點(diǎn)的集合。支持向量機(jī)e1071包中的svm()函數(shù)函數(shù)svm()返回的是一個(gè)SVM類中的對象,可以使用svm_model$labels查看。下面列出了對象中的部分屬性:
(1)SV:發(fā)現(xiàn)的支持向量矩陣;(2)labels:分類模式下對應(yīng)的標(biāo)簽;(3)index:輸入向量中的支持向量索引。svm()函數(shù)的主要核函數(shù)包括:支持向量機(jī)支持向量機(jī)舉例library
("e1071")attach
(iris)x
<-
subset
(iris,
select=-Species)
y
<-
Speciessvm_model
<-
svm
(Species
~
.,
data=iris)
#品種是其他屬性的因變量subset()函數(shù)從iris中取出子集,第一個(gè)參數(shù)表示數(shù)據(jù)集,select是一個(gè)邏輯向量。svm_model默認(rèn)調(diào)用的是最常用核函數(shù)之一的徑向核radial。支持向量機(jī)分類效果>
pred
<-
predict
(svm_model,
x)
>
table
(pred,
y)
ypred
setosa
versicolor
virginica
setosa
50
0
0
versicolor
0
48
2
virginica
0
2
48
從分類效果可以看出,在versicolor和virginica中,各有兩個(gè)樣本被混淆。支持向量機(jī)取得的分類效果現(xiàn)在比決策樹更好。支持向量機(jī)數(shù)據(jù)預(yù)處理plot
(svm_model,
iris,
Petal.Width
~
Petal.Length,
#因?yàn)閕ris數(shù)據(jù)包括四個(gè)屬性,在二維圖形中需要指定其余二維,才能顯示區(qū)域邊界
slice
=
list
(Sepal.Width
=
2,
Sepal.Length
=
4))從圖中可以觀察到支持向量(用×表示)的分布情況。因?yàn)榘迅呔S數(shù)據(jù)畫在了二維平面上,而且間隔的選取對其他兩個(gè)沒有顯示的維度的特定值設(shè)置的,所以圖中的支持向量并不一定落在邊界附近。支持向量機(jī)參數(shù)優(yōu)化>
svm_model_after_tune
<-
svm
(Species
~
.,
data=iris,
kernel="radial",
cost=2,
gamma=0.8)>
summary
(svm_model_after_tune)>
pred
<-
predict
(svm_model_after_tune,x)
>
table
(pred,
y)
y
pred
setosa
versicolor
virginica
setosa
50
0
0
versicolor
0
49
0
virginica
0
1
50支持向量機(jī)對參數(shù)敏感。以radial核函數(shù)、損失系數(shù)2(表明了分類器對錯(cuò)誤分類的容忍度。)以及核函數(shù)參數(shù)0.8訓(xùn)練出一個(gè)新的分類器。從混淆矩陣可以看出結(jié)果的改善。支持向量機(jī)Part/
02神經(jīng)網(wǎng)絡(luò)基本原理人工神經(jīng)網(wǎng)絡(luò)是在生物學(xué)中神經(jīng)網(wǎng)絡(luò)的啟發(fā)下誕生了的。在生命科學(xué)中,神經(jīng)網(wǎng)絡(luò)是指動(dòng)物大腦中一系列相互連接的神經(jīng)元。信號通過神經(jīng)元的軸突經(jīng)過突觸傳遞到其他神經(jīng)元的樹突上,這就是神經(jīng)元之間的接口。當(dāng)外界總的信號輸入超過了一定的閾值,神經(jīng)元?jiǎng)t會(huì)沿著軸突傳遞信號。神經(jīng)元就可以通過接口相互影響,共同發(fā)揮作用。神經(jīng)網(wǎng)絡(luò)原理神經(jīng)元神經(jīng)元是人工神經(jīng)網(wǎng)絡(luò)中的基本組成單位,在結(jié)構(gòu)上受到了神經(jīng)生物學(xué)中動(dòng)物大腦神經(jīng)元的啟示。單個(gè)神經(jīng)元的功能非常簡單,只是把輸入信號加權(quán)求和,再把結(jié)果傳遞給一個(gè)激活函數(shù)。一般地,激活函數(shù)會(huì)選擇性地抑制住一部分神經(jīng)元。典型的激活函數(shù)通常是非線性的。多個(gè)神經(jīng)元相互連接就組成了一個(gè)神經(jīng)網(wǎng)絡(luò)。通過選擇神經(jīng)元的數(shù)量、結(jié)合方式,以及激活函數(shù)的形式,用戶可以構(gòu)造不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)原理ReLU函數(shù)x
<-
seq
(-1,1,0.1)
#設(shè)置xrelu
<-
function
(x)
ifelse
(x
>
0,
x,
0)
#定義ReLU函數(shù)plot
(x,
relu(x),
type
=
"l")
#畫出函數(shù)text
(0.6,
0.4,
"ReLU
(x)")
#添加文字說明神經(jīng)網(wǎng)絡(luò)原理多層感知器模型多層感知器一般由至少三層神經(jīng)元組成,除了輸入層與輸出層之外,還至少包括一個(gè)被稱為隱層的中間層。一般在多層感知器中使用全連接模式,也就是相鄰層中的神經(jīng)元節(jié)點(diǎn)互相連接。在相鄰層的兩個(gè)神經(jīng)元ni和nj之間傳輸信號時(shí),使用權(quán)重wij來定量表示這種連接關(guān)系。因?yàn)闄?quán)重wij的大小是可以調(diào)節(jié)的,如果使用非線性激活函數(shù),多層感知器可以逼近一些極其復(fù)雜的多變量函數(shù)。輸入層隱層輸出層神經(jīng)網(wǎng)絡(luò)原理反向傳播算法前向傳播:在神經(jīng)網(wǎng)絡(luò)中,信號從輸入層到輸出層逐層傳播。如果連接每一層的權(quán)重都是已知的,根據(jù)輸入信號就可以計(jì)算出輸出信號。當(dāng)權(quán)重未知時(shí),需要根據(jù)輸入和輸出來估計(jì)權(quán)重,使得神經(jīng)網(wǎng)絡(luò)能刻畫出輸入和輸出之間的映射。反饋機(jī)制:猜測一組權(quán)重作為初始值,前向傳播信號計(jì)算出理論輸出,再根據(jù)理論值與實(shí)際值的偏差,來修正權(quán)重。神經(jīng)網(wǎng)絡(luò)原理偏差估計(jì)反向傳播:偏差信號從輸出層到輸入層逐層反向傳遞。把第i層的第j個(gè)神經(jīng)元的偏差記作。使用梯度下降法更新對權(quán)重參數(shù)的估計(jì)。因?yàn)橹挥休敵鰧拥钠梢灾苯佑?jì)算出來,在其他層中需要先得到估計(jì)偏差,才能用于修訂參數(shù)。把下一層的偏差傳遞給上一層,用于偏差估計(jì)簡化:神經(jīng)網(wǎng)絡(luò)原理梯度估計(jì)使用梯度下降的方法來求權(quán)重,需要首先得出梯度方向,也就是偏差對權(quán)重的偏導(dǎo)。把第i層的第j個(gè)神經(jīng)元的偏差記作。
,。鏈?zhǔn)角髮?dǎo):選擇步長,神經(jīng)網(wǎng)絡(luò)原理算法說明學(xué)習(xí)因子η對于算法的性能非常重要。因?yàn)樯窠?jīng)網(wǎng)絡(luò)中的優(yōu)化目標(biāo)函數(shù)不一定為凸,梯度下降法只能保證收斂到局部最優(yōu),不能保證全局最優(yōu)。對于一般的應(yīng)用而言,局部最優(yōu)實(shí)際上已經(jīng)能夠具有實(shí)用性。神經(jīng)網(wǎng)絡(luò)原理R語言中的神經(jīng)網(wǎng)絡(luò)包包
名說
明nnet支持單隱層的前饋神經(jīng)網(wǎng)絡(luò),可用于多項(xiàng)式對數(shù)線性模型neuralnet使用反向傳播算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)h2o包含支持H2O的R腳本功能RSNNS斯圖加特神經(jīng)網(wǎng)絡(luò)模擬器的接口
tensorflowTensorFlow的接口deepnetR語言深度學(xué)習(xí)包darch支持深度架構(gòu)和受限玻爾茲曼機(jī)的R語言包rnn實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò)的包MXNetR支持靈活高效GPU計(jì)算和深度學(xué)習(xí)的R語言包kerasKeras的R語言接口神經(jīng)網(wǎng)絡(luò)原理neuralnet包R語言中的neuralnet包支持神經(jīng)網(wǎng)絡(luò)的基本操作。安裝與下載:install.packages
("neuralnet")library
("neuralnet")主要的神經(jīng)網(wǎng)絡(luò)建模函數(shù)為:neuralnet(formula,data,hidden=1,threshold=0.01,stepmax=1e+05,rep=1,startweights=NULL,learningrate.limit=NULL,learningrate.factor=list(minus=0.5,plus=1.2),learningrate=NULL,lifesign="none",lifesign.step=1000,algorithm="rprop+",err.fct="sse",act.fct="logistic",linear.output=TRUE,exclude=NULL,constant.weights=NULL,likelihood=FALSE)
名
稱說
明formula對需要擬合的模型形式的符號性描述data包含formula中所指定變量的數(shù)據(jù)框hidden一個(gè)整型數(shù)向量,表示每一個(gè)隱層中神經(jīng)元的個(gè)數(shù)threshold數(shù)值型停止條件,誤差函數(shù)偏導(dǎo)數(shù)的閾值stepmax訓(xùn)練神經(jīng)網(wǎng)絡(luò)的最大步長,如果到達(dá)了這個(gè)最大值,則停止訓(xùn)練rep神經(jīng)網(wǎng)絡(luò)訓(xùn)練的最大迭代次數(shù)startweights包含權(quán)重初始值的向量algorithm包含用于神經(jīng)網(wǎng)絡(luò)計(jì)算的算法名稱的字符串,可選:backprop、rprop+、rprop–、sag或slr。backprop指反向傳播算法act.fct代表可微的激活函數(shù)名稱的字符串,logistic和tanh分別表示Logistic函數(shù)和雙曲正切函數(shù)err.fct字符串,表示用于計(jì)算誤差的可微函數(shù),可選sse和ce,分別代表誤差的平方和,以及交叉熵神經(jīng)網(wǎng)絡(luò)實(shí)踐函數(shù)返回神經(jīng)網(wǎng)絡(luò)對象函數(shù)的返回值是一個(gè)nn類的對象,其屬性如右表所示。
名
稱說
明call與調(diào)用函數(shù)形式相匹配err.fct實(shí)際使用的誤差函數(shù)act.fct實(shí)際使用的激活函數(shù)datadata參數(shù)net.result包含神經(jīng)網(wǎng)絡(luò)每一次迭代的結(jié)果列表weights包含神經(jīng)網(wǎng)絡(luò)每一次迭代所擬合權(quán)重的向量神經(jīng)網(wǎng)絡(luò)實(shí)踐神經(jīng)網(wǎng)絡(luò)實(shí)踐應(yīng)用:非線性回歸#生成1~100之間的50個(gè)均勻分布的隨機(jī)數(shù)作為訓(xùn)練輸入traininginput
<-
as.data.frame
(runif
(50,
min=1,
max=100))trainingoutput
<-
log
(traininginput)
#按列綁定輸入輸出構(gòu)成訓(xùn)練集trainingdata
<-
cbind
(traininginput,trainingoutput)#設(shè)定訓(xùn)練數(shù)據(jù)的屬性名colnames
(trainingdata)
<-
c
("Input","Output")先看一個(gè)使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)簡單非線性函數(shù)擬合的例子。首先,用均勻概率分布生成一些整數(shù),并對它們求對數(shù)值。然后,再用神經(jīng)網(wǎng)絡(luò)做出擬合與預(yù)測。神經(jīng)網(wǎng)絡(luò)實(shí)踐設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)#網(wǎng)絡(luò)包含輸入層+隱層+輸出層,隱層帶有10個(gè)神經(jīng)元#指定損失函數(shù)閾值threshold=0.01net.log
<-
neuralnet
(Output~Input,
trainingdata,
hidden=10,
threshold=0.01)print
(net.log)多層感知器,由輸入層、輸出層,以及一個(gè)隱層構(gòu)成。隱層的節(jié)點(diǎn)數(shù)量設(shè)為10。函數(shù)中并沒有指定激活函數(shù),使用的是默認(rèn)形式Sigmoid。可以使用net.log$act.fct來查看函數(shù)形式。神經(jīng)網(wǎng)絡(luò)實(shí)踐泛型函數(shù)plot調(diào)用plot
(net.log)可以畫出網(wǎng)絡(luò)結(jié)構(gòu)。雖然形式簡陋,圖中標(biāo)出了訓(xùn)練后學(xué)習(xí)到的參數(shù)。神經(jīng)網(wǎng)絡(luò)實(shí)踐測試神經(jīng)網(wǎng)絡(luò)#生成測試數(shù)據(jù)檢驗(yàn)神經(jīng)網(wǎng)絡(luò)的預(yù)測性能testdata
<-
as.data.frame
((1:10)^2)#輸入測試數(shù)據(jù),讓訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)完成運(yùn)算net.results<-compute(net.log,testdata)
#用更好的形式顯示結(jié)果,分別列出測試輸入、實(shí)際值、預(yù)測值niceoutput
<-
cbind
(testdata,
log(testdata),
as.data.frame
(net.results$net.result))colnames(niceoutput)
<-
c
("Input","Expected
Output","Neural
Net
Output")生成一組數(shù)據(jù)用于檢驗(yàn)神經(jīng)網(wǎng)絡(luò)的效果。打印niceoutput,比較實(shí)際值與預(yù)測值,看一看偏差是否可以接受。神經(jīng)網(wǎng)絡(luò)實(shí)踐應(yīng)用:分類class.ind
<-
function(cl)
#輸入cl是一個(gè)表示分類結(jié)果的向量
{
n
<-
length
(cl)
cl
<-
as.factor
(cl)
#把cl轉(zhuǎn)換為因子型
x
<-
matrix
(0,
n,
length(levels(cl)))#生成值為0的初始矩陣
x[(1:n)
+
n*(unclass(cl)-1)]
<-
1
#匹配樣本及類別
dimnames(x)
<-
list(names(cl),
levels(cl))
#設(shè)置每一列的名稱
x
#返回處理好的矩陣
}在神經(jīng)元中使用的都是數(shù)值型變量。首先需要把分類結(jié)果表示成數(shù)值作為訓(xùn)練集的期望輸出。編寫函數(shù),把輸入的類別向量轉(zhuǎn)換成值為0或1的矩陣,如果元素值為1則表示那一行樣本對應(yīng)的類別為元素所在的列。神經(jīng)網(wǎng)絡(luò)實(shí)踐輸入數(shù)據(jù)的規(guī)范化處理normalize
<-
function(x)
#設(shè)計(jì)規(guī)范化函數(shù)normalize(){
num
<-
x
-
min(x)
denom
<-
max(x)
-
min(x)
return
(num/denom)}#規(guī)范化數(shù)據(jù)集iris_norm
<-
as.data.frame(lapply(iris[1:4],
normalize))不同的變量可能有不同的取值范圍,這些取值范圍之間存在非常大的差異。在對數(shù)據(jù)進(jìn)行預(yù)處理時(shí),編寫的函數(shù)normalize()完成數(shù)據(jù)規(guī)范化工作。把數(shù)據(jù)統(tǒng)一為0~1之間的實(shí)數(shù)值。神經(jīng)網(wǎng)絡(luò)實(shí)踐劃分訓(xùn)練集與測試集set.seed
(1)index
<-
sample(nrow(iris),
nrow(iris)*0.7)iristrain
<-
iris_norm[index,]iristest
<-
iris_norm[-index,]#把測試集的分類結(jié)果用作class.ind
()的輸入iristrain.label
<-
iris
[index,5]iristest.label
<-
iris
[-index,5]target
<-
class.ind
(iristrain.label)iris.train
<-
cbind
(iristrain,
target)按照70%對30%的比例把數(shù)據(jù)集分為訓(xùn)練集與測試集兩個(gè)部分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年銅仁地區(qū)惠民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 曲靖2024年云南曲靖市馬龍區(qū)人民政府張安屯街道辦事處公益性崗位招聘歷年參考題庫(頻考版)含答案解析
- 2024年重慶銘仁醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 無錫江蘇無錫市公安局錫山分局招聘警務(wù)輔助人員58人歷年參考題庫(頻考版)含答案解析
- 2024政府部門與信息化系統(tǒng)服務(wù)商合同
- 2杭州市2024年體育賽事組織服務(wù)合同
- 惠州2024年廣東惠州市第一婦幼保健院第三批聘用制工作人員招聘34人歷年參考題庫(頻考版)含答案解析
- 2024年集成電路產(chǎn)業(yè)技術(shù)創(chuàng)新戰(zhàn)略聯(lián)盟合同
- 2024年高層建筑結(jié)構(gòu)設(shè)計(jì)委托合同
- 上海建橋?qū)W院《科學(xué)社會(huì)主義理論與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 校服服務(wù)方案投標(biāo)方案
- 養(yǎng)老機(jī)構(gòu)安全管理培訓(xùn)課件
- (附答案)2024公需課《百縣千鎮(zhèn)萬村高質(zhì)量發(fā)展工程與城鄉(xiāng)區(qū)域協(xié)調(diào)發(fā)展》試題廣東公需科
- T-CAME 59-2023 醫(yī)院消毒供應(yīng)中心建設(shè)與運(yùn)行管理標(biāo)準(zhǔn)
- 4s店財(cái)務(wù)工作總結(jié)
- 2024外研版初中英語單詞表匯總(七-九年級)中考復(fù)習(xí)必背
- 《海上風(fēng)電場工程巖土試驗(yàn)規(guī)程》(NB/T 10107-2018)
- 高中新校區(qū)辦學(xué)規(guī)劃方案
- 腎積水護(hù)理查房
- 無人機(jī)駕駛培訓(xùn)班合作協(xié)議
- 五年級上冊小數(shù)乘法豎式計(jì)算練習(xí)400題及答案
評論
0/150
提交評論