日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UA MATH574M 统计学习II 二元分类例子与高维问题

發布時間:2025/4/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UA MATH574M 统计学习II 二元分类例子与高维问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UA MATH574M 統計學習II 二元分類例子與高維問題

  • 數值例子
  • 高維數據的二分類問題
    • Independence Rule

數值例子

用模擬數值做一個二分類的例子。

library(MASS)## generate training sample set.seed(2000) Sigma <- matrix(c(1,0,0,1),2,2) class1 <- mvrnorm(n=100, c(2,1), Sigma) class2 <- mvrnorm(n=100, c(1,2), Sigma)## draw scatterplot to show the two class plot(class1[,1],class1[,2],col="green",pch=0,xlab = "X1",ylab = "X2") points(class2[,1],class2[,2],col="red",pch=4)## generate test sample set.seed(2014) class1_test <- mvrnorm(n=500, c(2,1), Sigma) class2_test <- mvrnorm(n=500, c(1,2), Sigma)


兩組隨機樣本均服從二元Gauss分布,具有相同的協方差矩陣,但均值不同。先把Bayes分類器的邊界算出來。損失函數為
L=C(1,0)I(Y=1,f(X)=0)+C(0,1)I(Y=0,f(X)=1)L=C(1,0)I(Y=1,f(X)=0)+C(0,1)I(Y=0,f(X)=1) L=C(1,0)I(Y=1,f(X)=0)+C(0,1)I(Y=0,f(X)=1)
所以風險函數為
R=E(X,Y)L=EXE(Y∣X)L=EX[C(1,0)P(Y=1│X)I(f(X)=0)+C(0,1)P(Y=0│X)I(f(X)=1)]R=E_{(X,Y)} L=E_X E_{(Y|X)} L \\ =E_X [C(1,0)P(Y=1│X)I(f(X)=0)+C(0,1)P(Y=0│X)I(f(X)=1)] R=E(X,Y)?L=EX?E(YX)?L=EX?[C(1,0)P(Y=1X)I(f(X)=0)+C(0,1)P(Y=0X)I(f(X)=1)]
貝葉斯規則要求對于給定的X=xX=xX=x,最小化E(Y∣X)LE_{(Y|X)} LE(YX)?L,可以得
f?(x)=I(C(1,0)P(Y=1│X=x)>C(0,1)P(Y=0│X=x))=I(P(Y=1│X=x)P(Y=0│X=x)>C(0,1)C(1,0))f^* (x)=I(C(1,0)P(Y=1│X=x)>C(0,1)P(Y=0│X=x)) \\ =I\left(\frac{P(Y=1│X=x)}{P(Y=0│X=x)}>\frac{C(0,1)}{C(1,0)}\right) f?(x)=I(C(1,0)P(Y=1X=x)>C(0,1)P(Y=0X=x))=I(P(Y=0X=x)P(Y=1X=x)?>C(1,0)C(0,1)?)
Bayes分類器的邊界為
P(Y=1│X=x)P(Y=0│X=x)=C(0,1)C(1,0)\frac{P(Y=1│X=x)}{P(Y=0│X=x)}=\frac{C(0,1)}{C(1,0)} P(Y=0X=x)P(Y=1X=x)?=C(1,0)C(0,1)?
假設equal cost,在已知這兩類的分布時可以計算
P(Y=1│X=x)P(Y=0│X=x)=g1(x)g0(x)=exp?(?1/2[(x1?2)2+(x2?1)2])exp?(?1/2[(x1?1)2+(x2?2)2])=1?x1=x2\frac{P(Y=1│X=x)}{P(Y=0│X=x)} = \frac{g_1 (x)}{g_0 (x)} = \frac{exp?(-1/2 [(x_1-2)^2+(x_2-1)^2 ])}{exp?(-1/2 [(x_1-1)^2+(x_2-2)^2 ]) }=1 \\ \leftrightarrow x_1 = x_2 P(Y=0X=x)P(Y=1X=x)?=g0?(x)g1?(x)?=exp?(?1/2[(x1??1)2+(x2??2)2])exp?(?1/2[(x1??2)2+(x2??1)2])?=1?x1?=x2?
也就是說過原點的四十五度線就是貝葉斯分類器的邊界,

plot(class1[,1],class1[,2],col="green",pch=0,xlab = "X1",ylab = "X2") points(class2[,1],class2[,2],col="red",pch=4) abline(a=0,b=1) ## attach Bayes decision boundary that x1 = x2


按貝葉斯規則,線下方的應該被劃分為綠點,線上方的應該被劃分為紅點,因此線下方的紅點和線上方的綠點數目除以訓練集樣本數就是0-1損失下的訓練誤差。在測試集中,線下方的紅點和線上方的綠點數目除以訓練集樣本數就是0-1損失下的測試誤差。

# plot test sample plot(class1_test[,1],class1_test[,2],col="green",pch=0,xlab = "X1",ylab = "X2") points(class2_test[,1],class2_test[,2],col="red",pch=4) abline(a=0,b=1) ## attach Bayes decision boundary that x1 = x2


現在再考慮上線性分類器

## label green as 0 and red as +1 X_train = matrix(rep(0,400),200,2) Y_train = rep(0,200) Y_train[101:200] = rep(1,100) X_train[1:100,] = class1 X_train[101:200,] = class2 X_test = matrix(rep(0,2000),1000,2) Y_test = rep(0,1000) Y_test[501:1000] = rep(1,500) X_test[1:500,] = class1_test X_test[501:1000,] = class2_test ## fitted the boundary line pr6.lm <- lm(Y_train~X_train[,1]+X_train[,2]) summary(pr6.lm) plot(class1[,1],class1[,2],col="green",pch=0,xlab = "X1",ylab = "X2") points(class2[,1],class2[,2],col="red",pch=4) abline(a=0,b=1) ## attach Bayes decision boundary that x1 = x2 abline(a=(0.44492-0.5)/0.18387,b=0.15675/0.18387,col="blue") ## attach linear boundary


將綠色點標記為0,紅色點標記為1(記為LM1),下面那根藍色的線就是線性分類器的邊界,顯然線性分類器對紅色的點是比較友好的。然而如果將綠色點標記為1,紅色點標記為0(記為LM2):

得到的線性分類器的邊界會與上一種情況平行,但截距更大,對兩種點相對更公平一點。但由此可以看出線性分類器最大的問題在于線性回歸模型會把標記值當成數值變量而不是類型變量,即使只是給兩個類別交換一下label,最后的結果都會有很大不同,但LDA、Logistics回歸是把標記值處理成類型變量的,因此結果不會受標記值影響。下面這段代碼計算LDA和Logistics回歸的訓練誤差與測試誤差

library(MASS)## generate training sample set.seed(2000) Sigma <- matrix(c(1,0,0,1),2,2) class1 <- mvrnorm(n=100, c(2,1), Sigma) class2 <- mvrnorm(n=100, c(1,2), Sigma)## generate test sample set.seed(2014) class1_test <- mvrnorm(n=500, c(2,1), Sigma) class2_test <- mvrnorm(n=500, c(1,2), Sigma)## label green as 0 and red as +1 train_data = matrix(rep(0,400),200,2) train_label = rep(0,200) train_label[101:200] = rep(1,100) train_data[1:100,] = class1 train_data[101:200,] = class2test_data = matrix(rep(0,2000),1000,2) test_label = rep(0,1000) test_label[501:1000] = rep(1,500) test_data[1:500,] = class1_test test_data[501:1000,] = class2_test## fit and evaluate LDA pr04.lda <- lda(train_data,train_label) fitted.lda <- predict(pr04.lda,train_data) Train_results <- table(train_label,fitted.lda$class) Train_error_lda <- (Train_results[1,2]+Train_results[2,1])/200 predict.lda <- predict(pr04.lda,test_data) Test_results <- table(test_label,predict.lda$class) Test_error_lda <- (Test_results[1,2]+Test_results[2,1])/1000## fit and evaluate Logistics Regression pr04.logit <- glm(train_label~train_data,family = binomial(link="logit")) sampledata <- data.frame(train_data1=train_data[1:200,1],train_data2=train_data[1:200,2]) fitted.logit <- predict(pr04.logit,sampledata) train_error_logit <- mean(xor(fitted.logit>0,train_label)) predict.logit <- pr04.logit$coefficients[1]+pr04.logit$coefficients[2]*test_data[,1]+pr04.logit$coefficients[3]*test_data[,2] test_error_logit <- mean(xor(predict.logit>0,test_label))

以上模型的訓練誤差與測試誤差為

模型BayesLM1LM2LDALogit
訓練誤差0.2150.2650.2200.2200.215
測試誤差0.2390.2710.2350.2350.236

因為是隨機生成的兩組正態的數據,所以這些模型表現都非常接近。

高維數據的二分類問題

一般一個樣本對應的feature特別多,甚至超過了樣本數,這類數據就是高維數據。高維數據最大的問題在于相同樣本規模,高維數據總是比低維數據更稀疏,除了高維映射本身的復雜性外,數據的稀疏性是造成高維問題難處理的主要原因??梢杂靡粋€簡單的例子說明為什么高維情況下數據會更稀疏。
假設從一個ppp維的球心在原點的單位球中隨機選取nnn個點,記RiR_iRi?表示第iii個點到球心的距離。如果x∈Rpx \in \mathbb{R}^pxRp表示點坐標,則
f(x1,?,xp)=Γ(1+p2)πp/2f(x_1,\cdots,x_p)=\frac{\Gamma{(1+\frac{p}{2})}}{\pi^{p/2}}f(x1?,?,xp?)=πp/2Γ(1+2p?)?
所以
P(x12+?+xp2≤r)=∫x12+?+xp2≤rf(x1,?,xp)dx1?dxpP(\sqrt{x_1^2 + \cdots + x_p^2}\le r) = \int_{\sqrt{x_1^2 + \cdots + x_p^2}\le r}f(x_1,\cdots,x_p)dx_1\cdots dx_pP(x12?+?+xp2??r)=x12?+?+xp2??r?f(x1?,?,xp?)dx1??dxp?
FR(r)=Γ(1+p2)πp/2∫x12+?+xp2≤rdx1?dxp=rp,r∈[0,1]F_R(r)=\frac{\Gamma{(1+\frac{p}{2})}}{\pi^{p/2}} \int_{\sqrt{x_1^2 + \cdots + x_p^2}\le r}dx_1\cdots dx_p = r^p,r \in [0,1]FR?(r)=πp/2Γ(1+2p?)?x12?+?+xp2??r?dx1??dxp?=rp,r[0,1]
P(R(1)≤r)=1?P(R1>r,?,Rn>r)=1?(1?FR(r))nP(R_{(1)}\le r) =1- P(R_1 > r,\cdots,R_n > r) = 1 - (1-F_R(r))^n P(R(1)?r)=1?P(R1?>r,?,Rn?>r)=1?(1?FR?(r))n
FR(1)=1?(1?rp)n,r∈[0,1]F_{R_{(1)}} = 1-(1-r^p)^n,r \in [0,1]FR(1)??=1?(1?rp)n,r[0,1]
這個式子是離原點最近的點離原點的距離的分布,可以計算一下它到原點的中位數是
1?(1?rp)n=0.5?r=[1?(12)1n]1p1-(1-r^p)^n=0.5 \Rightarrow r = \left[1-(\frac{1}{2})^{\frac{1}{n}}\right]^{\frac{1}{p}} 1?(1?rp)n=0.5?r=[1?(21?)n1?]p1?
顯然這個值是與ppp成正比的,因為這個是離原點最近的點到原點距離的中位數,所以顯然這個例子說明樣本數目一樣的時候維數越大數據會越稀疏。
高維數據還會帶來計算上的困難,參數的數目是隨維數指數增加的,數據維數越高,模型待估計的參數量就越多。比如在LDA模型中,
ln?P(Y=1∣X=x)P(Y=0∣X=x)=xTβ\ln{\frac{P(Y=1|X=x)}{P(Y=0|X=x)}} = x^T \beta lnP(Y=0X=x)P(Y=1X=x)?=xTβ
其中
β0=ln?π1π0?12(μ0+μ1)TΣ?1(μ1?μ0)β1=Σ?1(μ1?μ0)β=[β0,β1]T\beta_0 = \ln \frac{\pi_1}{\pi_0} - \frac{1}{2}(\mu_0+\mu_1)^T \Sigma^{-1} (\mu_1-\mu_0) \\ \beta_1 = \Sigma^{-1} (\mu_1-\mu_0) \\ \beta = [\beta_0,\ \beta_1]^T β0?=lnπ0?π1???21?(μ0?+μ1?)TΣ?1(μ1??μ0?)β1?=Σ?1(μ1??μ0?)β=[β0?,?β1?]T
假設樣本數為nnn,特征維數為ddd,當處理的是高維數據時,d>nd>nd>nΣ\SigmaΣ不是滿秩的矩陣,因此Σ?1\Sigma^{-1}Σ?1不具有唯一性,這個LDA模型無法正常估計。下面這個方法是對LDA的一個簡單改進,使其能適應高維問題。

Independence Rule

一個比較樸素的想法是把協方差矩陣換成可逆的矩陣,最簡單的操作就是假設不同特征是不相關的,也就是用D^=diag(Σ^)\hat{D}=diag(\hat{\Sigma})D^=diag(Σ^)代替協方差矩陣。另外給均值的每個元素加上一個調整參數。
μ^kjIR=(1?rjn)+μ^kj,k=0,1;j=1,?,d\hat{\mu}^{IR}_{kj} = (1-r_{jn}) + \hat{\mu}_{kj},k=0,1;j=1,\cdots,d μ^?kjIR?=(1?rjn?)+μ^?kj?,k=0,1;j=1,?,d
因此LDA的參數估計為
β0=ln?π1π0?12(μ^0IR+μ^1IR)TD^?1(μ^1IR?μ^0IR)β1=D^?1(μ^1IR?μ^0IR)β=[β0,β1]T\beta_0 = \ln \frac{\pi_1}{\pi_0} - \frac{1}{2}(\hat{\mu}^{IR}_0+\hat{\mu}^{IR}_1)^T \hat{D}^{-1} (\hat{\mu}^{IR}_1-\hat{\mu}^{IR}_0) \\ \beta_1 = \hat{D}^{-1}(\hat{\mu}^{IR}_1-\hat{\mu}^{IR}_0) \\ \beta = [\beta_0,\ \beta_1]^T β0?=lnπ0?π1???21?(μ^?0IR?+μ^?1IR?)TD^?1(μ^?1IR??μ^?0IR?)β1?=D^?1(μ^?1IR??μ^?0IR?)β=[β0?,?β1?]T
Bickel and Levina (2004)提出了IR,他們認為這個模型比要考慮特征相關性的模型具有更強的泛化能力。

總結

以上是生活随笔為你收集整理的UA MATH574M 统计学习II 二元分类例子与高维问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。