R ဖြင့် အိတ်လုပ်နည်း (တစ်ဆင့်ပြီးတစ်ဆင့်)


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

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

ဆုံးဖြတ်ချက်သစ်ပင်တစ်ခု၏ ကွဲလွဲမှုကို လျှော့ချရန် ကျွန်ုပ်တို့သုံးနိုင်သော နည်းလမ်းတစ်ခုမှာ bagging ဟု ခေါ်သည်၊ တစ်ခါတစ်ရံတွင် bootstrap aggregation ဟုခေါ်သည်။

အိတ်ကို အောက်ပါအတိုင်း လုပ်ဆောင်သည်။

1. မူရင်းဒေတာအတွဲမှ b bootstrapped နမူနာများကို ယူပါ။

2. bootstrap နမူနာတစ်ခုစီအတွက် ဆုံးဖြတ်ချက်သစ်တစ်ခုကို ဖန်တီးပါ။

3. နောက်ဆုံးပုံစံတစ်ခုရရှိရန် သစ်ပင်တစ်ပင်စီမှ ခန့်မှန်းချက်များကို ပျမ်းမျှ။

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

ဤသင်ခန်းစာသည် R တွင်အိတ်စွပ်ပုံစံတစ်ခုကိုဖန်တီးနည်းအဆင့်ဆင့်ဥပမာကိုပေးသည်။

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

ပထမဦးစွာ၊ ဤဥပမာအတွက် လိုအပ်သော ပက်ကေ့ဂျ်များကို တင်ပေးပါမည်။

 library (dplyr) #for data wrangling
library (e1071) #for calculating variable importance
library (caret) #for general model fitting
library (rpart) #for fitting decision trees
library (ipred) #for fitting bagged decision trees

အဆင့် 2- အိတ်စွပ်မော်ဒယ်ကို အံကိုက်လုပ်ပါ။

ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် လူတစ်ဦးချင်းရက်ပေါင်း 153 ရက်အတွင်း နယူးယော့ခ်စီးတီးတွင် လေထုအရည်အသွေးကို တိုင်းတာမှုများပါရှိသော Air Quality ဟုခေါ်သော Built-in R ဒေတာအစုံကို အသုံးပြုပါမည်။

 #view structure of air quality dataset
str(airquality)

'data.frame': 153 obs. of 6 variables:
 $ Ozone: int 41 36 12 18 NA 28 23 19 8 NA ...
 $Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
 $ Wind: num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
 $ Temp: int 67 72 74 62 56 66 65 59 61 69 ...
 $Month: int 5 5 5 5 5 5 5 5 5 5 ...
 $Day: int 1 2 3 4 5 6 7 8 9 10 ...

အောက်ဖော်ပြပါကုဒ်သည် ipred စာကြည့်တိုက်မှ bagging() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ R တွင် အိတ်စွပ်ပုံစံတစ်ခုအား မည်သို့အံဝင်ခွင်ကျဖြစ်စေရန် ဖော်ပြသည်။

 #make this example reproducible
set.seed(1)

#fit the bagged model
bag <- bagging(
  formula = Ozone ~ .,
  data = airquality,
  nbagg = 150 ,   
  coob = TRUE ,
  control = rpart. control (minsplit = 2 , cp = 0 )
)

#display fitted bagged model
bag

Bagging regression trees with 150 bootstrap replications 

Call: bagging.data.frame(formula = Ozone ~ ., data = airquality, nbagg = 150, 
    coob = TRUE, control = rpart.control(minsplit = 2, cp = 0))

Out-of-bag estimate of root mean squared error: 17.4973

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

rpart.control() လုပ်ဆောင်ချက်တွင် အောက်ဖော်ပြပါ သတ်မှတ်ချက်များကို ကျွန်ုပ်တို့လည်း အသုံးပြုခဲ့သည်-

  • minsplit = 2- ၎င်းသည် မော်ဒယ်အား ခွဲရန် node တစ်ခုတွင် ရှုမြင်ချက် 2 ခုသာ လိုအပ်သည်ဟု ဆိုသည်။
  • cp = 0 ။ ဒါက ရှုပ်ထွေးမှု ကန့်သတ်ချက်ပါ။ ၎င်းကို 0 သို့သတ်မှတ်ခြင်းဖြင့်၊ ခွဲခြမ်းတစ်ခုလုပ်ဆောင်ရန်အတွက် အလုံးစုံအံဝင်ခွင်ကျဖြစ်စေရန် မည်သည့်နည်းဖြင့်မဆို မော်ဒယ်ကို မြှင့်တင်ရန် မလိုအပ်ပါ။

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

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

အဆင့် 3- ကြိုတင်ခန့်မှန်းသူများ၏ အရေးပါပုံကို မြင်ယောင်ကြည့်ပါ။

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

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

အောက်ပါကုဒ်သည် varImp() လုပ်ဆောင်ချက်ကို caret စာကြည့်တိုက်မှ အသုံးပြု၍ တပ်ဆင်ထားသော အိတ်မော်ဒယ်အတွက် ပြောင်းလဲနိုင်သော အရေးပါမှုကွက်ကွက်ကို မည်သို့ဖန်တီးရမည်ကို ပြသသည်-

 #calculate variable importance
VI <- data.frame(var= names (airquality[,-1]), imp= varImp (bag))

#sort variable importance descending
VI_plot <- VI[ order (VI$Overall, decreasing= TRUE ),]

#visualize variable importance with horizontal bar plot
barplot(VI_plot$Overall,
        names.arg= rownames (VI_plot),
        horiz= TRUE ,
        col=' steelblue ',
        xlab=' Variable Importance ')

R တွင် ပြောင်းလဲနိုင်သော အရေးပါမှုဂရပ်

Month သည် အရေးအကြီးဆုံးဖြစ်ပြီး Month သည် Solar.R သည် မော်ဒယ်တွင် အရေးကြီးဆုံး ခန့်မှန်းတွက်ချက်နိုင်သော ကိန်းရှင်ဖြစ်ကြောင်း ကျွန်ုပ်တို့တွေ့နိုင်ပါသည်။

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

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

 #define new observation
new <- data.frame(Solar.R=150, Wind=8, Temp=70, Month=5, Day=5)

#use fitted bagged model to predict Ozone value of new observation
predict(bag, newdata=new)

24.4866666666667

ကြိုတင်ခန့်မှန်းနိုင်သော ကိန်းရှင်များ၏ တန်ဖိုးများကို အခြေခံ၍ တပ်ဆင်ထားသော အိတ်ပုံစံသည် ဤအထူးနေ့တွင် အိုဇုန်းတန်ဖိုး 24,487 ဖြစ်မည်ဟု ခန့်မှန်းသည်။

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

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

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