Python ရှိ ridge regression (တစ်ဆင့်ပြီးတစ်ဆင့်)
Ridge regression သည် data တွင် multicollinearity ရှိနေသောအခါတွင် regression model တစ်ခုနှင့်ကိုက်ညီရန်ကျွန်ုပ်တို့အသုံးပြုနိုင်သောနည်းလမ်းတစ်ခုဖြစ်သည်။
အတိုချုပ်အားဖြင့်၊ အနည်း ဆုံး စတုရန်းဆုတ်ယုတ်မှု သည် ကျန်ရှိသော စတုရန်း ပေါင်းလဒ် (RSS) ကို အနည်းဆုံး လျှော့ချနိုင်သော ကိန်းကိန်း ခန့်မှန်းချက်များကို ရှာဖွေရန် ကြိုးပမ်းသည် ။
RSS = Σ(y i – ŷ i )၂
ရွှေ-
- ∑ : ပေါင်းလဒ် ဟု အဓိပ္ပာယ်ရသော ဂရိသင်္ကေတ
- y i : အိုင်တီ လေ့လာခြင်းအတွက် အမှန်တကယ် တုံ့ပြန်မှုတန်ဖိုး
- ŷ i : Multiple linear regression model ကို အခြေခံ၍ ခန့်မှန်းထားသော တုံ့ပြန်မှုတန်ဖိုး
အပြန်အလှန်အားဖြင့်၊ တောင်ကြောဆုတ်ယုတ်မှုသည် အောက်ပါတို့ကို လျှော့ချရန် ကြိုးပမ်းသည်-
RSS + λΣβ j ၂
j သည် 1 မှ p ကြိုတင်ခန့်မှန်းကိန်းရှင်များနှင့် λ ≥ 0 ရှိရာသို့ သွားပါသည်။
ညီမျှခြင်းတွင် ဤဒုတိယအခေါ်အဝေါ်ကို ရုပ်သိမ်းပြစ်ဒဏ် ဟု ခေါ်သည်။ အခေါင်ဆုတ်ယုတ်မှုတွင်၊ ဖြစ်နိုင်ခြေအနည်းဆုံး MSE စမ်းသပ်မှု (ပျမ်းမျှစတုရန်းအမှား) ကိုထုတ်ပေးသည့် λ တန်ဖိုးတစ်ခုကို ကျွန်ုပ်တို့ရွေးချယ်သည်။
ဤသင်ခန်းစာသည် Python တွင် ကုန်းပတ်ဆုတ်ယုတ်မှုလုပ်ဆောင်ပုံအဆင့်ဆင့်ကို ဥပမာပေးထားသည်။
အဆင့် 1- လိုအပ်သော ပက်ကေ့ခ်ျများကို တင်သွင်းပါ။
ပထမဦးစွာ၊ Python တွင် ခေါင်ပြန်ဆုတ်ခြင်းကို လုပ်ဆောင်ရန် လိုအပ်သော ပက်ကေ့ဂျ်များကို တင်သွင်းပါမည်။
import pandas as pd
from numpy import arange
from sklearn. linear_model import Ridge
from sklearn. linear_model import RidgeCV
from sklearn. model_selection import RepeatedKFold
အဆင့် 2: ဒေတာကို တင်ပါ။
ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် မတူညီသောကား ၃၃ စီးရှိ အချက်အလက်များပါရှိသော mtcars ဟုခေါ်သော ဒေတာအစုံကို အသုံးပြုပါမည်။ ကျွန်ုပ်တို့သည် တုံ့ပြန်မှု variable အဖြစ် hp ကို အသုံးပြုပြီး အောက်ပါ variable များကို ကြိုတင်ခန့်မှန်းသူများအဖြစ် အသုံးပြုပါမည်။
- စိုင်းစိုင်းခမ်းလှိုင်
- ကိုယ်အလေးချိန်
- ပြောရမှာပါ။
- qsec
အောက်ဖော်ပြပါ ကုဒ်သည် ဤဒေတာအတွဲကို မည်သို့တင်၍ ပြသရမည်ကို ပြသသည်-
#define URL where data is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"
#read in data
data_full = pd. read_csv (url)
#select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]
#view first six rows of data
data[0:6]
mpg wt drat qsec hp
0 21.0 2.620 3.90 16.46 110
1 21.0 2.875 3.90 17.02 110
2 22.8 2.320 3.85 18.61 93
3 21.4 3.215 3.08 19.44 110
4 18.7 3,440 3.15 17.02 175
5 18.1 3.460 2.76 20.22 105
အဆင့် 3- Ridge Regression Model ကို အံကိုက်လုပ်ပါ။
ထို့နောက်၊ ကျွန်ုပ်တို့သည် sklearn ၏ RidgeCV() လုပ်ဆောင်ချက်ကို အသုံးပြုပြီး ပြစ်ဒဏ်အသုံးအနှုန်းအတွက် အကောင်းဆုံး အယ်လ်ဖာတန်ဖိုးကို ရှာဖွေရန် RepeatedKFold() လုပ်ဆောင်ချက်ကို အသုံးပြုပါမည်။
မှတ်ချက်- “ alpha” ဟူသော အသုံးအနှုန်းကို Python တွင် “ lambda” အစား အသုံးပြုသည်။
ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် k = 10 ခေါက်ကို ရွေးချယ်ပြီး အပြန်အလှန်အတည်ပြုခြင်းလုပ်ငန်းစဉ်ကို 3 ကြိမ်ပြန်လုပ်ပါမည်။
RidgeCV() သည် ပုံမှန်အားဖြင့် အယ်လ်ဖာတန်ဖိုးများ 0,1၊ 1 နှင့် 10 တို့ကိုသာ စစ်ဆေးကြောင်း သတိပြုပါ။ သို့သော်၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ကိုယ်ပိုင် အယ်လ်ဖာအကွာအဝေးကို 0 မှ 1 အထိ 0.01 တိုး၍ သတ်မှတ်နိုင်သည်-
#define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]
#define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )
#define model
model = RidgeCV(alphas= arange (0, 1, 0.01), cv=cv, scoring=' neg_mean_absolute_error ')
#fit model
model. fit (x,y)
#display lambda that produced the lowest test MSE
print( model.alpha_ )
0.99
စမ်းသပ်မှု၏ MSE ကိုအနည်းဆုံးလျှော့ချသော lambda တန်ဖိုးသည် 0.99 ဖြစ်လာသည်။
အဆင့် 4- ခန့်မှန်းချက်များကို ပြုလုပ်ရန် မော်ဒယ်ကို အသုံးပြုပါ။
နောက်ဆုံးတွင်၊ လေ့လာတွေ့ရှိချက်အသစ်များနှင့်ပတ်သက်၍ ခန့်မှန်းချက်များပြုလုပ်ရန် နောက်ဆုံးအခေါင်ဆုတ်ယုတ်မှုပုံစံကို ကျွန်ုပ်တို့အသုံးပြုနိုင်ပါသည်။ ဥပမာအားဖြင့်၊ အောက်ပါကုဒ်သည် အောက်ပါအရည်အချင်းများဖြင့် ကားအသစ်ကို သတ်မှတ်နည်းကို ပြသသည်-
- စိုင်းစိုင်းခမ်းလှိုင် : ၂၄
- အလေးချိန်: 2.5
- စျေးနှုန်း: 3.5
- qsec: 18.5
အောက်ပါကုဒ်သည် ဤလေ့လာတွေ့ရှိချက်အသစ်၏ hp တန်ဖိုးကို ခန့်မှန်းရန် တပ်ဆင်ထားသော အခေါင်ဆုတ်ယုတ်မှုပုံစံကို မည်သို့အသုံးပြုရမည်ကို ပြသသည်-
#define new observation
new = [24, 2.5, 3.5, 18.5]
#predict hp value using ridge regression model
model. predict ([new])
array([104.16398018])
ထည့်သွင်းထားသောတန်ဖိုးများအပေါ်အခြေခံ၍ ဤကားသည် မြင်းကောင်ရေ တန်ဖိုး 104.16398018 ရှိမည်ဟု မော်ဒယ်က ခန့်မှန်းသည်။
ဤဥပမာတွင်အသုံးပြုထားသော Python ကုဒ်အပြည့်အစုံကို ဤနေရာတွင် ရှာတွေ့နိုင်ပါသည်။