R တွင် အဓိကအစိတ်အပိုင်း ဆုတ်ယုတ်မှု (အဆင့်ဆင့်)


p ကြိုတင်ခန့်မှန်းကိန်းရှင် ကိန်းရှင်အစုတစ်ခုနှင့် တုံ့ပြန်မှုကိန်းရှင်တစ်ခုအား ပေးထားသည့် မျဉ်းကြောင်းပြန်ဆုတ်မှု အများအပြားသည် ကျန်ရှိသောစတုရန်း၏ပေါင်းလဒ် (RSS) ကို လျှော့ချရန် အနည်းဆုံးစတုရန်းဟု ခေါ်သည့် နည်းလမ်းကို အသုံးပြုသည်-

RSS = Σ(y i – ŷ i )

ရွှေ-

  • : ပေါင်းလဒ် ဟု အဓိပ္ပာယ်ရသော ဂရိသင်္ကေတ
  • y i : အိုင်တီ လေ့လာခြင်းအတွက် အမှန်တကယ် တုံ့ပြန်မှုတန်ဖိုး
  • ŷ i : Multiple linear regression model ကို အခြေခံ၍ ခန့်မှန်းထားသော တုံ့ပြန်မှုတန်ဖိုး

သို့ရာတွင်၊ ကြိုတင်ခန့်မှန်းနိုင်သောကိန်းရှင်များသည် အလွန်ဆက်စပ်နေသောအခါတွင်၊ ကော်လိုင်းပေါင်းစုံသည် ပြဿနာဖြစ်လာနိုင်သည်။ ၎င်းသည် မော်ဒယ်ဖော်ကိန်း ခန့်မှန်းချက်များကို ယုံကြည်စိတ်ချမှုမရှိစေဘဲ ကွဲပြားမှုမြင့်မားမှုကို ပြသနိုင်သည်။

ဤပြဿနာကို ရှောင်ရှားရန် နည်းလမ်းတစ်ခုမှာ မူလ p ကြိုတင်တွက်ဆမှုများ၏ M linear ပေါင်းစပ်မှုများ (“ principal components” ဟုခေါ်သည်) ကိုရှာပေးသည့် အဓိကအစိတ်အပိုင်းများ ဆုတ်ယုတ်မှု ကို အသုံးပြုပြီး ပင်မအစိတ်အပိုင်းများကို ကြိုတင်ဟောကိန်းထုတ်သူများအဖြစ် အသုံးပြုကာ အနိမ့်ဆုံးစတုရန်းများကို အသုံးပြုခြင်းဖြစ်သည်။

ဤသင်ခန်းစာသည် R တွင် အဓိကအစိတ်အပိုင်းများ ဆုတ်ယုတ်ခြင်းကို လုပ်ဆောင်ပုံအဆင့်ဆင့်ကို ဥပမာပေးထားသည်။

အဆင့် 1- လိုအပ်သော ပက်ကေ့ခ်ျများကို တင်ပါ။

R တွင်အဓိကအစိတ်အပိုင်းများဆုတ်ယုတ်ခြင်းကိုလုပ်ဆောင်ရန်အလွယ်ကူဆုံးနည်းလမ်းမှာ pls package အတွင်းရှိလုပ်ဆောင်ချက်များကိုအသုံးပြုရန်ဖြစ်သည်။

 #install pls package (if not already installed)
install.packages(" pls ")

load pls package
library(pls)

အဆင့် 2- PCR မော်ဒယ်ကို ချိန်ညှိပါ။

ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် ကားအမျိုးအစားအမျိုးမျိုးတွင် ဒေတာပါရှိသော mtcars ဟုခေါ်သော တပ်ဆင်ထားသည့် R ဒေတာအစုံကို အသုံးပြုပါမည်-

 #view first six rows of mtcars dataset
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် တုံ့ပြန်မှုကိန်း ရှင်အဖြစ် hp ကို အသုံးပြုကာ အဓိကအစိတ်အပိုင်းများဆုတ်ယုတ်မှု (PCR) မော်ဒယ်ကို ဖြည့်သွင်းပေးမည်ဖြစ်ပြီး၊

  • စိုင်းစိုင်းခမ်းလှိုင်
  • ပြသခြင်း။
  • ပြောရမှာပါ။
  • ကိုယ်အလေးချိန်
  • qsec

အောက်ဖော်ပြပါကုဒ်သည် PCR မော်ဒယ်ကို ဤဒေတာနှင့် မည်သို့ အံဝင်ခွင်ကျဖြစ်စေရန် ဖော်ပြသည်။ အောက်ပါအငြင်းပွားမှုများကို သတိပြုပါ။

  • scale=TRUE : ခန့်မှန်းသူ variable တစ်ခုစီသည် 0 နှင့် 1 ၏ စံသွေဖည်မှုရှိရန် အတိုင်းအတာတစ်ခုစီရှိသင့်သည်ဟု R ကိုပြောပြသည်။ ၎င်းသည် မတူညီသောယူနစ်များဖြင့် တိုင်းတာပါက မော်ဒယ်တွင် မည်မျှသြဇာလွှမ်းမိုးနိုင်သည်ကို သေချာစေပါသည်။ .
  • validation=”CV” – မော်ဒယ်စွမ်းဆောင်ရည်ကိုအကဲဖြတ်ရန် R သည် k-fold cross validation ကို အသုံးပြုရန်ပြောထားသည်။ ၎င်းသည် ပုံမှန်အားဖြင့် k=10 ခေါက်ကို အသုံးပြုကြောင်း သတိပြုပါ။ Leave-One-Out cross-validation လုပ်ဆောင်ရန် “ LOOCV” ကို သင် သတ်မှတ်နိုင်သည်ကိုလည်း သတိပြုပါ။
 #make this example reproducible
set.seed(1)

#fit PCR model
model <- pcr(hp~mpg+disp+drat+wt+qsec, data=mtcars, scale= TRUE , validation=" CV ")

အဆင့် 3- အဓိက အစိတ်အပိုင်း အရေအတွက်ကို ရွေးပါ။

ကျွန်ုပ်တို့သည် မော်ဒယ်ကို ချိန်ညှိပြီးသည်နှင့်၊ ကျွန်ုပ်တို့သည် အဓိက အစိတ်အပိုင်းများ မည်မျှ ထိန်းသိမ်းထားသင့်သည်ကို ဆုံးဖြတ်ရန် လိုအပ်ပါသည်။

ဒါကိုလုပ်ဖို့၊ k-cross validation ဖြင့်တွက်ချက်ထားသော test root mean square error (test RMSE) ကိုကြည့်ပါ-

 #view summary of model fitting
summary(model)

Data: 
	Y dimension: 32 1
Fit method: svdpc
Number of components considered: 5

VALIDATION: RMSEP
Cross-validated using 10 random segments.
       (Intercept) 1 comp 2 comps 3 comps 4 comps 5 comps
CV 69.66 44.56 35.64 35.83 36.23 36.67
adjCV 69.66 44.44 35.27 35.43 35.80 36.20

TRAINING: % variance explained
    1 comp 2 comps 3 comps 4 comps 5 comps
X 69.83 89.35 95.88 98.96 100.00
hp 62.38 81.31 81.96 81.98 82.03

ရလဒ်တွင် စိတ်ဝင်စားစရာကောင်းသော ဇယားနှစ်ခုရှိသည်။

1. တရားဝင်- RMSEP

ဤဇယားသည် k-fold cross validation ဖြင့်တွက်ချက်ထားသော RMSE စာမေးပွဲကိုပြောပြသည်။ အောက်ပါတို့ကို ကျွန်ုပ်တို့ မြင်နိုင်သည်-

  • မော်ဒယ်တွင် မူရင်းအခေါ်အဝေါ်ကိုသာ အသုံးပြုပါက၊ စမ်းသပ်မှု၏ RMSE သည် 69.66 ဖြစ်သည်။
  • ကျွန်ုပ်တို့သည် ပထမအဓိကအစိတ်အပိုင်းကို ပေါင်းထည့်ပါက RMSE စမ်းသပ်မှုသည် 44.56 သို့ကျဆင်းသွားသည်။
  • ကျွန်ုပ်တို့သည် ဒုတိယအဓိကအစိတ်အပိုင်းကို ပေါင်းထည့်ပါက RMSE စမ်းသပ်မှုသည် 35.64 သို့ကျဆင်းသွားသည်။

အပိုဆောင်းအဓိကအစိတ်အပိုင်းများကို ပေါင်းထည့်ခြင်းသည် စမ်းသပ်မှု၏ RMSE တိုးလာကြောင်း ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။ ထို့ကြောင့် နောက်ဆုံးမော်ဒယ်တွင် အဓိကအစိတ်အပိုင်းနှစ်ခုကိုသာ အသုံးပြုခြင်းသည် အကောင်းဆုံးဖြစ်ဟန်တူသည်။

2. လေ့ကျင့်ရေး- ကွဲလွဲမှု % ကို ရှင်းပြသည်။

ဤဇယားတွင် အဓိကအစိတ်အပိုင်းများဖြင့် ရှင်းပြထားသည့် တုံ့ပြန်မှုကိန်းရှင်တွင် ကွဲလွဲမှုရာခိုင်နှုန်းကို ပြောပြသည်။ အောက်ပါတို့ကို ကျွန်ုပ်တို့ မြင်နိုင်သည်-

  • ပထမ အဓိက အစိတ်အပိုင်းကို အသုံးပြု၍ တုံ့ပြန်မှု ကိန်းရှင်တွင် ကွဲလွဲမှု 69.83% ကို ရှင်းပြနိုင်ပါသည်။
  • ဒုတိယအဓိကအစိတ်အပိုင်းကို ပေါင်းထည့်ခြင်းဖြင့် တုံ့ပြန်မှုကိန်းရှင်တွင် ကွဲလွဲမှု 89.35% ကို ရှင်းပြနိုင်ပါသည်။

အဓိက အစိတ်အပိုင်းများကို အသုံးပြုခြင်းဖြင့် ကျွန်ုပ်တို့သည် ပိုမိုကွဲလွဲမှုကို ရှင်းပြနိုင်ဆဲဖြစ်သည်ကို သတိပြုပါ၊ သို့သော် အဓိကအစိတ်အပိုင်းနှစ်ခုထက်ပိုထည့်ခြင်းသည် ရှင်းပြထားသည့်ကွဲလွဲမှုရာခိုင်နှုန်းကို အမှန်တကယ်မတိုးကြောင်း သတိပြုပါ။

validationplot() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ အဓိကအစိတ်အပိုင်းအရေအတွက်၏ လုပ်ဆောင်မှုအဖြစ် RMSE စာမေးပွဲ (MSE နှင့် R-squared စမ်းသပ်မှုနှင့်အတူ) ကို မြင်ယောင်နိုင်သည်။

 #visualize cross-validation plots
validationplot(model)
validationplot(model, val.type="MSEP")
validationplot(model, val.type="R2") 

R တွင် အဓိက အစိတ်အပိုင်း ဆုတ်ယုတ်ခြင်း

R တွင် အဓိကအစိတ်အပိုင်းများ ဆုတ်ယုတ်မှု ဖြတ်ကျော်အတည်ပြုချက်ကွက်

R တွင် R-squared အဓိက အစိတ်အပိုင်း ဆုတ်ယုတ်မှု

ဂရပ်တစ်ခုစီတွင်၊ အဓိကအစိတ်အပိုင်းနှစ်ခုကိုထည့်ခြင်းဖြင့် မော်ဒယ်သည် အံဝင်ခွင်ကျဖြစ်နေသည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်သော်လည်း အဓိကအစိတ်အပိုင်းများကို ကျွန်ုပ်တို့ထပ်ထည့်သောအခါတွင် ဆိုးရွားသွားတတ်သည်။

ထို့ကြောင့် အကောင်းဆုံးမော်ဒယ်တွင် ပထမအဓိကအစိတ်အပိုင်းနှစ်ခုသာ ပါဝင်ပါသည်။

အဆင့် 4- ခန့်မှန်းချက်များကို ပြုလုပ်ရန် နောက်ဆုံးပုံစံကို အသုံးပြုပါ။

လေ့လာတွေ့ရှိချက်အသစ်များနှင့်ပတ်သက်၍ ခန့်မှန်းချက်များပြုလုပ်ရန် နောက်ဆုံးအဓိကအစိတ်အပိုင်းနှစ်ခု PCR မော်ဒယ်ကို ကျွန်ုပ်တို့အသုံးပြုနိုင်ပါသည်။

အောက်ပါကုဒ်သည် မူရင်းဒေတာအစုံကို လေ့ကျင့်ရေးနှင့် စမ်းသပ်မှုအဖြစ် ပိုင်းခြားပုံပြသပြီး စမ်းသပ်မှုအစုတွင် ခန့်မှန်းချက်များပြုလုပ်ရန် အဓိကအစိတ်အပိုင်းနှစ်ခုပါရှိသော PCR မော်ဒယ်ကို အသုံးပြုပါ။

 #define training and testing sets
train <- mtcars[1:25, c("hp", "mpg", "disp", "drat", "wt", "qsec")]
y_test <- mtcars[26: nrow (mtcars), c("hp")]
test <- mtcars[26: nrow (mtcars), c("mpg", "disp", "drat", "wt", "qsec")]
    
#use model to make predictions on a test set
model <- pcr(hp~mpg+disp+drat+wt+qsec, data=train, scale= TRUE , validation=" CV ")
pcr_pred <- predict(model, test, ncomp= 2 )

#calculate RMSE
sqrt ( mean ((pcr_pred - y_test)^2))

[1] 56.86549

စာမေးပွဲ၏ RMSE သည် 56.86549 ဖြစ်သွားသည်ကို ကျွန်ုပ်တို့မြင်ရသည်။ ၎င်းသည် ခန့်မှန်းထားသော hp တန်ဖိုးနှင့် စမ်းသပ်မှုအစုအဝေးအတွက် လေ့လာတွေ့ရှိထားသော hp တန်ဖိုးကြား ပျမ်းမျှသွေဖည်မှုဖြစ်သည်။

ဤဥပမာတွင် R ကုဒ်၏ အပြည့်အဝအသုံးပြုမှုကို ဤနေရာတွင် တွေ့နိုင်ပါသည်။

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်