Python ရှိ lasso ဆုတ်ယုတ်မှု (အဆင့်ဆင့်)


Lasso regression သည် data တွင် multicollinearity ရှိနေသောအခါတွင် regression model တစ်ခုနှင့်ကိုက်ညီရန်ကျွန်ုပ်တို့အသုံးပြုနိုင်သောနည်းလမ်းတစ်ခုဖြစ်သည်။

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

RSS = Σ(y i – ŷ i )၂

ရွှေ-

  • : ပေါင်းလဒ် ဟု အဓိပ္ပာယ်ရသော ဂရိသင်္ကေတ
  • y i : အိုင်တီ လေ့လာခြင်းအတွက် အမှန်တကယ် တုံ့ပြန်မှုတန်ဖိုး
  • ŷ i : Multiple linear regression model ကို အခြေခံ၍ ခန့်မှန်းထားသော တုံ့ပြန်မှုတန်ဖိုး

အပြန်အလှန်အားဖြင့် lasso regression သည် အောက်ပါတို့ကို လျှော့ချရန် ကြိုးပမ်းသည် ။

RSS + λΣ|β j |

j သည် 1 မှ p ကြိုတင်ခန့်မှန်းကိန်းရှင်များနှင့် λ ≥ 0 ရှိရာသို့ သွားပါသည်။

ညီမျှခြင်းတွင် ဤဒုတိယအခေါ်အဝေါ်ကို ရုပ်သိမ်းပြစ်ဒဏ် ဟု ခေါ်သည်။ lasso regression တွင်၊ ဖြစ်နိုင်ခြေအနည်းဆုံး MSE (mean square error) test ကိုထုတ်ပေးသည့် λ အတွက် တန်ဖိုးတစ်ခုကို ရွေးပါသည်။

ဤသင်ခန်းစာသည် Python တွင် lasso regression လုပ်ဆောင်ပုံအဆင့်ဆင့်ကို ဥပမာပေးထားသည်။

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

ပထမဦးစွာ၊ Python တွင် lasso regression လုပ်ဆောင်ရန် လိုအပ်သော packages များကို တင်သွင်းပါမည်။

 import pandas as pd
from numpy import arange
from sklearn. linear_model import LassoCV
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- Lasso Regression Model ကို အံကိုက်လုပ်ပါ။

ထို့နောက်၊ ကျွန်ုပ်တို့သည် sklearn ၏ LassoCV() လုပ်ဆောင်ချက်ကို အသုံးပြုပြီး lasso regression model နှင့် အံဝင်ခွင်ကျဖြစ်သော RepeatedKFold() လုပ်ဆောင်ချက်ကို အသုံးပြုပြီး ပြစ်ဒဏ်အသုံးအနှုန်းအတွက် အကောင်းဆုံး အယ်လ်ဖာတန်ဖိုးကို ရှာဖွေရန် RepeatedKFold() လုပ်ဆောင်ချက်ကို အသုံးပြုပါမည်။

မှတ်ချက်- “ alpha” ဟူသော အသုံးအနှုန်းကို Python တွင် “ lambda” အစား အသုံးပြုသည်။

ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် k = 10 ခေါက်ကို ရွေးချယ်ပြီး အပြန်အလှန်အတည်ပြုခြင်းလုပ်ငန်းစဉ်ကို 3 ကြိမ်ပြန်လုပ်ပါမည်။

LassoCV() သည် ပုံမှန်အားဖြင့် အယ်လ်ဖာတန်ဖိုးများ 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 = LassoCV(alphas= arange (0, 1, 0.01), cv=cv, n_jobs= -1 )

#fit model
model. fit (x,y)

#display lambda that produced the lowest test MSE
print( model.alpha_ )

0.99

စမ်းသပ်မှု၏ MSE ကိုအနည်းဆုံးလျှော့ချသော lambda တန်ဖိုးသည် 0.99 ဖြစ်လာသည်။

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

နောက်ဆုံးတွင်၊ လေ့လာတွေ့ရှိချက်အသစ်များနှင့်ပတ်သက်၍ ခန့်မှန်းချက်များပြုလုပ်ရန် နောက်ဆုံး lasso ဆုတ်ယုတ်မှုပုံစံကို ကျွန်ုပ်တို့အသုံးပြုနိုင်ပါသည်။ ဥပမာအားဖြင့်၊ အောက်ပါကုဒ်သည် အောက်ပါအရည်အချင်းများဖြင့် ကားအသစ်ကို သတ်မှတ်နည်းကို ပြသသည်-

  • စိုင်းစိုင်းခမ်းလှိုင် : ၂၄
  • အလေးချိန်: 2.5
  • စျေးနှုန်း: 3.5
  • qsec: 18.5

အောက်ပါကုဒ်သည် ဤလေ့လာတွေ့ရှိချက်အသစ်၏ hp တန်ဖိုးကို ခန့်မှန်းရန် တပ်ဆင်ထားသော lasso ဆုတ်ယုတ်မှုပုံစံကို မည်သို့အသုံးပြုရမည်ကို ပြသသည်-

 #define new observation
new = [24, 2.5, 3.5, 18.5]

#predict hp value using lasso regression model
model. predict ([new])

array([105.63442071])

ထည့်သွင်းထားသောတန်ဖိုးများအပေါ်အခြေခံ၍ ဤကားသည် မြင်းကောင်ရေ တန်ဖိုး 105.63442071 ရှိမည်ဟု မော်ဒယ်က ခန့်မှန်းသည်။

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

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

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