最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|R語言非參數(shù)方法:使用核方法和K

2021-07-22 23:26 作者:拓端tecdat  | 我要投稿

原文鏈接:?http://tecdat.cn/?p=22181?

原文出處:拓端數(shù)據(jù)部落公眾號

本文考慮一下基于核方法進行分類預(yù)測。注意,在這里,我們不使用標準邏輯回歸,它是參數(shù)模型。

非參數(shù)方法

用于函數(shù)估計的非參數(shù)方法大致上有三種:核方法、局部多項式方法、樣條方法。
非參的函數(shù)估計的優(yōu)點在于穩(wěn)健,對模型沒有什么特定的假設(shè),只是認為函數(shù)光滑,避免了模型選擇帶來的風(fēng)險;但是,表達式復(fù)雜,難以解釋,計算量大是非參的一個很大的毛病。所以說使用非參有風(fēng)險,選擇需謹慎。
非參的想法很簡單:函數(shù)在觀測到的點取觀測值的概率較大,用x附近的值通過加權(quán)平均的辦法估計函數(shù)f(x)的值。

核方法

當加權(quán)的權(quán)重是某一函數(shù)的核,這種方法就是核方法,常見的有Nadaraya-Watson核估計與Gasser-Muller核估計方法,也就是很多教材里談到的NW核估計與GM核估計,這里我們還是不談核的選擇,將一切的核估計都默認用Gauss核處理。
NW核估計形式為:


GM核估計形式為:

式中

數(shù)據(jù)

使用心臟病數(shù)據(jù),預(yù)測急診病人的心肌梗死,包含變量:

  1. 心臟指數(shù)

  2. 心搏量指數(shù)

  3. 舒張壓

  4. 肺動脈壓

  5. 心室壓力

  6. 肺阻力

  7. 是否存活

既然我們知道核估計是什么,我們假設(shè)k是N(0,1)分布的密度。在x點,使用帶寬h,我們得到以下代碼


  1. dnorm(( 心搏量指數(shù)-x)/bw, mean=0,sd=1)

  2. weighted.mean( 存活,w)}

  3. plot(u,v,ylim=0:1,



當然,我們可以改變帶寬。

  1. Vectorize( mean_x(x,2))(u)




我們觀察到:帶寬越小,我們得到的方差越大,偏差越小?!霸酱蟮姆讲睢痹谶@里意味著越大的可變性(因為鄰域越小,計算平均值的點就越少,估計值也就越不穩(wěn)定),以及“偏差越小”,即期望值應(yīng)該在x點計算,所以鄰域越小越好。

使用光滑函數(shù)

用R函數(shù)來計算這個核回歸。

smooth( 心搏量指數(shù), 存活, ban ?= 2*exp(1)

我們可以復(fù)制之前的估計。然而,輸出不是一個函數(shù),而是兩個向量序列。此外,正如我們所看到的,帶寬與我們以前使用的帶寬并不完全相同。


  1. smooth(心搏量指數(shù),存活,"normal",bandwidth = bk)

  2. optim(bk,f)$par}

  3. x=seq(1,10,by=.1)

  4. plot(x,y)

  5. abline(0,exp(-1),col="red")




斜率為0.37,實際上是e^{-1}。

高維應(yīng)用

現(xiàn)在考慮我們的雙變量數(shù)據(jù)集,并考慮一些單變量(高斯)核的乘積



  1. w = dnorm((df$x1-x)/bw1, mean=0,sd=1)*

  2. dnorm((df$x2-y)/bw2, mean=0,sd=1)

  3. w.mean(df$y=="1",w)

  4. contour(u,u,v,levels = .5,add=TRUE)



我們得到以下預(yù)測

在這里,不同的顏色是概率。

K-NN(k近鄰算法)

另一種方法是考慮一個鄰域,它不是用到點的距離來定義的,而是用我們得到的n觀測值來定義k鄰域(也就是k近鄰算法)。

接下來,我們自己編寫函數(shù)來實現(xiàn)K-NN(k近鄰算法):

困難的是我們需要一個有效的距離。

如果每個分量的單位都非常不同,那么使用歐幾里德距離將毫無意義。所以,我們考慮馬氏距離

  1. mahalanobis = function(x,y,Sinv){as.numeric(x-y)%*%Sinv%*%t(x-y)}

  2. mahalanobis(my[i,1:7],my[j,1:7])



這里我們有一個函數(shù)來尋找k最近的鄰居觀察樣本。然后可以做兩件事來得到一個預(yù)測。我們的目標是預(yù)測一個類,所以我們可以考慮使用一個多數(shù)規(guī)則:對yi的預(yù)測與大多數(shù)鄰居樣本的預(yù)測是一樣的。


  1. for(i in 1:length(Y)) Y[i] = sort( ?存活[k_closest(i,k)])[(k+1)/2]




我們也可以計算出最近鄰居中黑點的比例。它實際上可以被解釋為是黑色的概率,

  1. for(i in 1:length(Y)) Y[i] = mean( 存活[k_closest(i,k)])




我們可以在數(shù)據(jù)集上看到觀察結(jié)果,基于多數(shù)原則的預(yù)測,以及死亡樣本在7個最近的鄰居中的比例

k_ma(7),PROPORTION=k_mean(7))

這里,我們得到了一個位于 x 的觀測點的預(yù)測,但實際上,可以尋找任何 x的最近鄰k?;氐轿覀兊膯巫兞坷?得到一個圖表),我們有



  1. w = rank(abs(心搏量指數(shù)-x),method ="random")

  2. mean(存活[which(<=9)])}




不是很平滑,但我們的點也不是很多。
如果我們在二維數(shù)據(jù)集上使用這種方法,我們就會得到以下的結(jié)果。


  1. k = 6

  2. dist = function(j) ?mahalanobis(c(x,y))

  3. vect = Vectorize( dist)(1:nrow(df))

  4. idx ?= which(rank(vect<=k)


  5. contour(u,u,v,levels = .5,add=TRUE)



這就是局部推理的思想,用kernel對 x的鄰域進行推理,或者用k-NN近鄰。

最受歡迎的見解

1.從決策樹模型看員工為什么離職

2.R語言基于樹的方法:決策樹,隨機森林

3.python中使用scikit-learn和pandas決策樹

4.機器學(xué)習(xí):在SAS中運行隨機森林數(shù)據(jù)分析報告

5.R語言用隨機森林和文本挖掘提高航空公司客戶滿意度

6.機器學(xué)習(xí)助推快時尚精準銷售時間序列

7.用機器學(xué)習(xí)識別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用

8.python機器學(xué)習(xí):推薦系統(tǒng)實現(xiàn)(以矩陣分解來協(xié)同過濾)

9.python中用pytorch機器學(xué)習(xí)分類預(yù)測銀行客戶流失


拓端tecdat|R語言非參數(shù)方法:使用核方法和K的評論 (共 條)

分享到微博請遵守國家法律
台江县| 丰都县| 延庆县| 绥江县| 旅游| 依兰县| 诏安县| 卫辉市| 礼泉县| 正宁县| 灵丘县| 收藏| 密云县| 沙湾县| 浪卡子县| 藁城市| 宕昌县| 贵德县| 会理县| 宝鸡市| 咸宁市| 洪湖市| 武穴市| 万荣县| 凤城市| 云和县| 赤峰市| 九龙坡区| 伽师县| 蒙自县| 九江市| 元氏县| 泾源县| 西乌| 克拉玛依市| 普兰店市| 郴州市| 宁阳县| 沂南县| 元朗区| 扎鲁特旗|