R တွင် မမျှတသောဒေတာအတွက် smote ကိုအသုံးပြုနည်း (ဥပမာနှင့်အတူ)


machine learning classification algorithms ဖြင့် အလုပ်လုပ်သောအခါ၊ dataset ရှိ အတန်းများသည် ဟန်ချက်မညီတော့ပါ။

ဥပမာအားဖြင့်:

  • NBA တွင် ကောလိပ်ကစားသမားများအား ရေးဆွဲထားခြင်း ရှိ၊ မရှိ အချက်အလက်များပါရှိသော အချက်အလက်အစုံတွင် ကစားသမားများ၏ 98% ကို မူကြမ်းမထုတ်ရသေးဘဲ 2% ရေးဆွဲနေပါသည်။
  • လူနာများတွင် ကင်ဆာရှိ/မရှိနှင့်ပတ်သက်သော အချက်အလက်အစုံတွင် ကင်ဆာမရှိသောလူနာများ၏ 99% နှင့် ကင်ဆာရှိသူ 1% သာ ပါဝင်နိုင်သည်။
  • ဘဏ်လိမ်လည်မှုအချက်အလက်ပါရှိသော ဒေတာအတွဲတွင် 96% တရားဝင်ငွေလွှဲမှုများနှင့် လိမ်လည်မှု 4% ပါဝင်နိုင်သည်။

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

ပိုဆိုးတာက လူနည်းစု လူတန်းစားဟာ ကျွန်ုပ်တို့ ခန့်မှန်းချင်ဆုံး လူတန်းစား ဖြစ်တယ်။

ဤမညီမျှမှုပြဿနာကိုဖြေရှင်းရန်နည်းလမ်းတစ်ခုမှာ မကြာခဏအတိုကောက်အတိုကောက် SMOTE ဟုခေါ်သော ပေါင်းစပ်လူနည်းစုကို နမူနာယူနည်းကို အသုံးပြုခြင်းဖြစ်သည်။

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

R တွင် SMOTE ကိုအသုံးပြုရန် အလွယ်ကူဆုံးနည်းလမ်းမှာ DMwR ပက်ကေ့ခ်ျမှ SMOTE() လုပ်ဆောင်ချက်ကို အသုံးပြုခြင်းဖြစ်သည်။

ဤလုပ်ဆောင်ချက်သည် အောက်ပါအခြေခံ syntax ကိုအသုံးပြုသည်-

 SMOTE(form, data, perc. over = 200 , perc. under = 200 , ...)

ရွှေ-

  • ပုံစံ – သင်လိုက်လျောညီထွေဖြစ်စေလိုသော မော်ဒယ်ကို ဖော်ပြသည့် ဖော်မြူလာတစ်ခု
  • data : ဒေတာဘောင်အမည်
  • perc.over : လူနည်းစု လူတန်းစား၏ နောက်ထပ် အမှုပေါင်း မည်မျှကို ထုတ်ပေးသည်ကို ဆုံးဖြတ်သည့် နံပါတ်
  • perc.under : လူများစု လူတန်းစား၏ နောက်ထပ် အမှုပေါင်း မည်မျှကို ထုတ်ပေးသည်ကို ဆုံးဖြတ်သည့် နံပါတ်

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

ဥပမာ- SMOTE ကို R တွင်အသုံးပြုနည်း

90 တွင် “ Yes” class ရှိပြီး 10 တွင် တုံ့ပြန်မှု variable အတွက် “ No” class ရှိသည် ဆိုပါစို့၊

 #make this example reproducible
set. seed ( 0 )

#create data frame with one response variable and two predictor variables
df <- data. frame (y=rep(as. factor (c(' Yes ', ' No ')), times=c( 90 , 10 )),
                 x1=rnorm( 100 ),
                 x2=rnorm( 100 ))

#view first six rows of data frame
head(df)

    y x1 x2
1 Yes 1.2629543 0.7818592
2 Yes -0.3262334 -0.7767766
3 Yes 1.3297993 -0.6159899
4 Yes 1.2724293 0.0465803
5 Yes 0.4146414 -1.1303858
6 Yes -1.5399500 0.5767188
 
#view distribution of response variable
table(df$y)

 Drowned 
 10 90

ကျွန်ုပ်တို့ ဟောကိန်းထုတ်ထားသော တုံ့ပြန်မှုကိန်းရှင်တွင် “ Yes” အတန်းတစ်ခုနှင့် စောင့်ကြည့်မှု 90 ရှိပြီး “ No” အတန်းဖြင့် မှတ်သားချက် 10 ခုသာ ပါရှိသောကြောင့်၊ ဤသည်မှာ ဟန်ချက်မညီသော ဒေတာအတွဲတစ်ခု၏ မူရင်းဥပမာတစ်ခုဖြစ်သည်။

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

 library ( DMwR)

#use SMOTE to create new dataset that is more balanced
new_df <- SMOTE(y ~ ., df, perc. over = 2000 , perc. under = 400 )

#view distribution of response variable in new dataset
table(new_df$y)

 Drowned 
210,800

ရလဒ်ဒေတာအတွဲတွင် အတန်းအဖြစ် “ No” ဖြင့် စောင့်ကြည့်မှု 210 ခုနှင့် အတန်းအဖြစ် “ Yes” ဖြင့် စောင့်ကြည့်မှု 800 ပါရှိသည်။

ဤတွင် SMOTE လုပ်ဆောင်ချက်သည် ဤဒေတာအတွဲအသစ်ကို မည်သို့ထုတ်လုပ်ခဲ့သည်-

  • perc.over အငြင်းအခုံတွင် ကျွန်ုပ်တို့သည် ဒေတာအတွဲတွင် ရှိရင်းစွဲလူနည်းစုလေ့လာတွေ့ရှိချက်အရေအတွက် 2000/100 (သို့မဟုတ် 20) ဆ ပေါင်းထည့်လိုကြောင်း ဖော်ပြထားပါသည်။ မူလဒေတာအတွဲတွင် လေ့လာတွေ့ရှိချက် 10 ခုရှိသောကြောင့်၊ ကျွန်ုပ်တို့သည် 20*10 = 200 နောက်ထပ်လူနည်းစု လေ့လာတွေ့ရှိချက်များကို ထည့်သွင်းခဲ့သည်။
  • perc.under အငြင်းအခုံက လူများစုလေ့လာသုံးသပ်ချက်အရေအတွက်ကို 400/100 (သို့မဟုတ်) လက်ရှိလူနည်းစုလေ့လာတွေ့ရှိချက်များတွင် ထည့်သွင်းထားသည့် လူနည်းစုလေ့လာတွေ့ရှိချက်အရေအတွက်ထက် 4 ဆ နှင့် ညီမျှစေရန် ကျွန်ုပ်တို့က သတ်မှတ်ပေးထားသည်။ နောက်ထပ် လူနည်းစု လေ့လာတွေ့ရှိချက် 200 ကို ပေါင်းထည့်လိုက်သောကြောင့်၊ ကျွန်ုပ်တို့သည် လူများစု လေ့လာတွေ့ရှိချက် အရေအတွက်ကို 200 * 4 = 800 အများစု လေ့လာတွေ့ရှိချက်များ နှင့် ညီပါသည်။

နောက်ဆုံးရလဒ်သည် အတန်းအစားအများစုပါဝင်နေသေးသော်လည်း မူရင်းဒေတာအတွဲထက် ပိုမိုမျှတနေသေးသည်။

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

မှတ်ချက် – သင်၏လိုအပ်ချက်များနှင့်ကိုက်ညီသောဒေတာအစုံကိုရရှိရန် SMOTE လုပ်ဆောင်ချက်ရှိ perc.over နှင့် perc.under ငြင်းခုံမှုများဖြင့် ကစားပါ။

ထပ်လောင်းအရင်းအမြစ်များ

အောက်ဖော်ပြပါ သင်ခန်းစာများသည် R တွင် အခြားဘုံအလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-

R တွင် အနှစ်ချုပ်ဇယားများ ဖန်တီးနည်း
R တွင်ဒေတာကိုပုံမှန်ဖြစ်အောင်လုပ်နည်း
R တွင် outliers ကိုမည်သို့ဖယ်ရှားနည်း

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

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