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 ကိုမည်သို့ဖယ်ရှားနည်း