Python တွင် k-fold cross validation (အဆင့်ဆင့်)
ဒေတာအတွဲတစ်ခုပေါ်ရှိ မော်ဒယ်တစ်ခု၏စွမ်းဆောင်ရည်ကို အကဲဖြတ်ရန်၊ ကျွန်ုပ်တို့သည် မော်ဒယ်မှပြုလုပ်သော ခန့်မှန်းချက်များသည် စောင့်ကြည့်လေ့လာထားသောဒေတာနှင့် မည်မျှကိုက်ညီကြောင်း တိုင်းတာရန် လိုအပ်ပါသည်။
၎င်းကိုလုပ်ဆောင်ရန်အတွက် အသုံးများသောနည်းလမ်းကို k-fold cross-validation ဟုခေါ်သည်၊ အောက်ပါနည်းလမ်းကိုအသုံးပြုသည်-
1. ခန့်မှန်းခြေ တူညီသော အရွယ်အစားရှိသော k အုပ်စုများ သို့မဟုတ် “ folds” အဖြစ် သတ်မှတ်ဒေတာကို ကျပန်းခွဲပါ။
2. အထိန်းအချုပ်အဖြစ် ခြံများထဲမှ တစ်ခုကို ရွေးပါ။ နမူနာကို ကျန် k-1 ခေါက်သို့ ချိန်ညှိပါ။ တင်းမာနေသော အထပ်တွင် လေ့လာတွေ့ရှိချက်များကို MSE စာမေးပွဲကို တွက်ချက်ပါ။
3. ဤလုပ်ငန်းစဉ် k အကြိမ်များကို ဖယ်ထုတ်ခြင်းအဖြစ် မတူညီသောအစုံကို အသုံးပြုပြီးတိုင်း၊ အကြိမ်တိုင်း ပြန်လုပ်ပါ။
4. အလုံးစုံစမ်းသပ်မှု MSE ကို k စမ်းသပ် MSE များ၏ ပျမ်းမျှအဖြစ် တွက်ချက်ပါ။
ဤသင်ခန်းစာသည် Python တွင်ပေးထားသောမော်ဒယ်အတွက် k-fold cross-validation လုပ်ဆောင်ပုံအဆင့်ဆင့် ဥပမာကို ပေးပါသည်။
အဆင့် 1- လိုအပ်သောစာကြည့်တိုက်များကို တင်ပါ။
ဦးစွာ၊ ဤဥပမာအတွက် လိုအပ်သော လုပ်ဆောင်ချက်များနှင့် ဒစ်ဂျစ်တိုက်များကို တင်ပေးပါမည်။
from sklearn. model_selection import train_test_split
from sklearn. model_selection import KFold
from sklearn. model_selection import cross_val_score
from sklearn. linear_model import LinearRegression
from numpy import means
from numpy import absolute
from numpy import sqrt
import pandas as pd
အဆင့် 2: ဒေတာကိုဖန်တီးပါ။
ထို့နောက်၊ ကျွန်ုပ်တို့သည် ကြိုတင်ခန့်မှန်းနိုင်သော ကိန်းရှင်နှစ်ခုဖြစ်သည့် x1 နှင့် x2 နှင့် တုံ့ပြန်မှုမတူညီသည့် y တစ်ခုပါရှိသော pandas DataFrame တစ်ခုကို ဖန်တီးပါမည်။
df = pd.DataFrame({' y ': [6, 8, 12, 14, 14, 15, 17, 22, 24, 23],
' x1 ': [2, 5, 4, 3, 4, 6, 7, 5, 8, 9],
' x2 ': [14, 12, 12, 13, 7, 8, 7, 4, 6, 5]})
အဆင့် 3- K-Fold Cross-Validation ကိုလုပ်ဆောင်ပါ။
ထို့နောက်၊ ကျွန်ုပ်တို့သည် dataset တွင် multi linear regression model ကို ဖြည့်ပြီး model ၏ စွမ်းဆောင်ရည်ကို အကဲဖြတ်ရန် LOOCV ကို လုပ်ဆောင်ပါမည်။
#define predictor and response variables
X = df[[' x1 ', ' x2 ']]
y = df[' y ']
#define cross-validation method to use
cv = KFold ( n_splits = 10 , random_state = 1 , shuffle = True )
#build multiple linear regression model
model = LinearRegression()
#use k-fold CV to evaluate model
scores = cross_val_score(model, X, y, scoring=' neg_mean_absolute_error ',
cv=cv, n_jobs=-1)
#view mean absolute error
mean(absolute(scores))
3.6141267491803646
ရလဒ်မှ၊ ပျမ်းမျှ absolute error (MAE) သည် 3.614 ဖြစ်သည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။ ဆိုလိုသည်မှာ၊ မော်ဒယ်ခန့်မှန်းချက်နှင့် အမှန်တကယ် စောင့်ကြည့်လေ့လာထားသည့် ဒေတာကြားရှိ ပျမ်းမျှအကြွင်းမဲ့ အမှားသည် 3.614 ဖြစ်သည်။
ယေဘူယျအားဖြင့် MAE နိမ့်လေ၊ မော်ဒယ်သည် အမှန်တကယ် လေ့လာတွေ့ရှိချက်များကို ခန့်မှန်းနိုင်လေဖြစ်သည်။
မော်ဒယ်စွမ်းဆောင်ရည်ကို အကဲဖြတ်ရန် နောက်ထပ်အသုံးများသည့် မက်ထရစ်မှာ root mean square error (RMSE) ဖြစ်သည်။ အောက်ပါကုဒ်သည် LOOCV ကို အသုံးပြု၍ ဤမက်ထရစ်ကို တွက်ချက်နည်းကို ပြသည်-
#define predictor and response variables
X = df[[' x1 ', ' x2 ']]
y = df[' y ']
#define cross-validation method to use
cv = KFold ( n_splits = 5 , random_state = 1 , shuffle = True )
#build multiple linear regression model
model = LinearRegression()
#use LOOCV to evaluate model
scores = cross_val_score(model, X, y, scoring=' neg_mean_squared_error ',
cv=cv, n_jobs=-1)
#view RMSE
sqrt(mean(absolute(scores)))
4.284373111711816
ရလဒ်မှ၊ root mean square error (RMSE) သည် 4.284 ဖြစ်သည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။
RMSE နိမ့်လေ၊ မော်ဒယ်သည် အမှန်တကယ် လေ့လာတွေ့ရှိချက်များကို ခန့်မှန်းနိုင်လေဖြစ်သည်။
လက်တွေ့တွင်၊ ကျွန်ုပ်တို့သည် ပုံမှန်အားဖြင့် မတူညီသော မော်ဒယ်များစွာကို အံဝင်ခွင်ကျဖြစ်စေပြီး မည်သည့်မော်ဒယ်သည် အနိမ့်ဆုံးစမ်းသပ်မှု အမှားအယွင်းနှုန်းများကို ထုတ်လုပ်ပေးသည်ကို ဆုံးဖြတ်ရန် မော်ဒယ်တစ်ခုစီ၏ RMSE သို့မဟုတ် MAE တို့ကို နှိုင်းယှဉ်ကာ ထို့ကြောင့် အသုံးပြုရန် အကောင်းဆုံးမော်ဒယ်ဖြစ်သည်။
ဤဥပမာတွင် ကျွန်ုပ်တို့သည် k=5 folds ကိုအသုံးပြုရန်ရွေးချယ်သည်၊ သို့သော်သင်အလိုရှိသောမည်သည့်အကြိမ်အရေအတွက်ကိုမဆိုရွေးချယ်နိုင်သည်ကိုသတိပြုပါ။
လက်တွေ့တွင်၊ ကျွန်ုပ်တို့သည် ပုံမှန်အားဖြင့် 5 နှင့် 10 လွှာကြားတွင် ရွေးချယ်လေ့ရှိသည်၊ ၎င်းသည် ယုံကြည်စိတ်ချရသော စမ်းသပ်မှုအမှားအယွင်းနှုန်းများကို ထုတ်လုပ်ပေးသည့် အကောင်းဆုံး အထပ်အရေအတွက်ဖြစ်ကြောင်း သက်သေပြသောကြောင့်၊
sklearn ၏ KFold() လုပ်ဆောင်ချက်အတွက် စာရွက်စာတမ်းအပြည့်အစုံကို ဤနေရာတွင် ရှာတွေ့နိုင်ပါသည်။
ထပ်လောင်းအရင်းအမြစ်များ
K-Fold Cross-Validation နိဒါန်း
Python ရှိ Linear Regression အတွက် ပြီးပြည့်စုံသော လမ်းညွှန်
Python တွင် One-Out Cross-Validation ကို ချန်ထားပါ။