R တွင်ဒေတာကိုပုံမှန်ဖြစ်အောင်လုပ်နည်း


ကိစ္စအများစုတွင်၊ လူများသည် data set တစ်ခုရှိ variable များကို “ normalizing” အကြောင်းပြောသောအခါ၊ ၎င်းတို့သည် variable တွင် mean ၏ 0 ရှိပြီး standard deviation ဖြစ်သည့် တန်ဖိုးများကို စကေးချလိုသည်ဟု ဆိုလိုသည်။

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

ကွဲပြားမှုများကို မတူညီသောစကေးများဖြင့် တိုင်းတာသောအခါ၊ ၎င်းတို့သည် ခွဲခြမ်းစိတ်ဖြာမှုတွင် တူညီစွာ မပါဝင်နိုင်ပေ။ ဥပမာအားဖြင့်၊ variable range တစ်ခု၏တန်ဖိုးများသည် 0 မှ 100,000 နှင့် အခြားသော variable range ၏ values များကို 0 မှ 100 ထိရှိပါက၊ ကြီးမြတ်သော range ရှိသော variable သည် ခွဲခြမ်းစိတ်ဖြာမှုတွင် ပိုကြီးသော weight ကို သတ်မှတ်ပေးမည်ဖြစ်ပါသည်။

ကိန်းရှင်တစ်ခုသည် လစာ (ဒေါ်လာ 0 မှ $100,000) နှင့် အသက် (0 မှ 100 နှစ်အထိ) ကဲ့သို့သော အခြားကိန်းရှင်တစ်ခုကို တိုင်းတာသောအခါတွင် ၎င်းသည် သာမန်ဖြစ်သည်။

ကိန်းရှင်များကို စံသတ်မှတ်ခြင်းဖြင့်၊ ကိန်းရှင်တစ်ခုစီသည် ခွဲခြမ်းစိတ်ဖြာမှုတွင် ညီတူညီမျှပါဝင်ကြောင်း ကျွန်ုပ်တို့သေချာနိုင်ပါသည်။ (သို့မဟုတ် “ စကေး” ) variable များကို ပုံမှန်ဖြစ်စေရန် ဘုံနည်းလမ်း နှစ်ခုရှိသည်။

  • အနိမ့်ဆုံး ပုံမှန်သတ်မှတ်ခြင်း- (X – min(X)) / (max(X) – min(X))
  • Z ရမှတ်၏ စံသတ်မှတ်ခြင်း- (X – μ) / σ

ထို့နောက် R တွင် ဤနည်းပညာနှစ်ခုကို မည်သို့အကောင်အထည်ဖော်ရမည်ကို ပြသပါမည်။

R တွင် ကိန်းရှင်များ (သို့မဟုတ် “ စကေး” ) ကို ပုံမှန်ဖြစ်အောင် လုပ်နည်း

အောက်ဖော်ပြပါ ဥပမာတစ်ခုစီအတွက်၊ R တွင် ကိန်းရှင်များကို ပုံမှန်ဖြစ်စေရန် သို့မဟုတ် အတိုင်းအတာကို မည်သို့ဖော်ပြရန် ကျွန်ုပ်တို့သည် built-in R dataset iris ကို အသုံးပြုပါမည်။

 #view first six rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

Min-Max Normalization

min-max normalization အတွက် ဖော်မြူလာမှာ-

(X – min(X))/(max(X) – min(X))

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

၎င်းကို R တွင် အကောင်အထည်ဖော်ရန်၊ ကျွန်ုပ်တို့သည် ရိုးရှင်းသောလုပ်ဆောင်ချက်ကို သတ်မှတ်ပြီးနောက် ကျွန်ုပ်တို့လိုချင်သော iris dataset ရှိ ကော်လံများတွင် ထိုလုပ်ဆောင်ချက်ကို အသုံးပြုရန် laply ကို အသုံးပြုနိုင်ပါသည်။

 #define Min-Max normalization function
min_max_norm <- function (x) {
    (x - min(x)) / (max(x) - min(x))
  }

#apply Min-Max normalization to first four columns in iris dataset
iris_norm <- as.data.frame(lapply(iris[1:4], min_max_norm))

#view first six rows of normalized iris dataset
head(iris_norm)

# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1 0.22222222 0.6250000 0.06779661 0.04166667
#2 0.16666667 0.4166667 0.06779661 0.04166667
#3 0.11111111 0.5000000 0.05084746 0.04166667
#4 0.08333333 0.4583333 0.08474576 0.04166667
#5 0.19444444 0.6666667 0.06779661 0.04166667
#6 0.30555556 0.7916667 0.11864407 0.12500000

ယခု ကော်လံတစ်ခုစီတွင် 0 နှင့် 1 အကြား တန်ဖိုးများ ရှိနေကြောင်း သတိပြုပါ။ ပဉ္စမကော်လံ “ မျိုးစိတ်” ကို ဤဒေတာဘောင်မှ ဖယ်ရှားလိုက်ကြောင်း သတိပြုပါ။ အောက်ပါကုဒ်ကို အသုံးပြု၍ ၎င်းကို အလွယ်တကူ ထည့်နိုင်သည်။

 #add back Species column
iris_norm$Species <- iris$Species

#view first six rows of iris_norm
head(iris_norm)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 0.22222222 0.6250000 0.06779661 0.04166667 setosa
#2 0.16666667 0.4166667 0.06779661 0.04166667 setosa
#3 0.11111111 0.5000000 0.05084746 0.04166667 setosa
#4 0.08333333 0.4583333 0.08474576 0.04166667 setosa
#5 0.19444444 0.6666667 0.06779661 0.04166667 setosa
#6 0.30555556 0.7916667 0.11864407 0.12500000 setosa

Z ရမှတ် စံသတ်မှတ်ခြင်း။

min-max normalization technique ၏ အားနည်းချက်မှာ ဒေတာတန်ဖိုးများကို ဆိုလိုရင်းနှင့် ပိုမိုနီးစပ်အောင် ရွေ့လျားစေခြင်း ဖြစ်သည်။ အစွန်းအထင်းများကို အခြားတန်ဖိုးများထက် ပို၍ ချိန်ဆထားကြောင်း သေချာလိုပါက z-score standardization သည် အကောင်အထည်ဖော်ရန် ပိုမိုကောင်းမွန်သော နည်းလမ်းတစ်ခုဖြစ်သည်။

z-score ကို စံသတ်မှတ်ခြင်းအတွက် ဖော်မြူလာမှာ အောက်ပါအတိုင်းဖြစ်သည်။

(X – μ) / σ

variable တစ်ခု၏တန်ဖိုးတစ်ခုစီအတွက်၊ ကျွန်ုပ်တို့သည် variable ၏ပျမ်းမျှတန်ဖိုးကို နုတ်ပြီး variable ၏စံသွေဖည်မှုဖြင့် ပိုင်းခြားပါသည်။

၎င်းကို R တွင်အကောင်အထည်ဖော်ရန်၊ ကျွန်ုပ်တို့တွင် ရွေးချယ်စရာများစွာရှိသည်။

1. ကိန်းရှင်တစ်ခုကို စံသတ်မှတ်ပါ။

iris dataset ရှိ Sepal.Width ကဲ့သို့ ဒေတာအတွဲတစ်ခုရှိ ကိန်းရှင်တစ်ခုကို စံသတ်မှတ်လိုပါက၊ အောက်ပါကုဒ်ကို သုံးနိုင်သည်-

 #standardize Sepal.Width
iris$Sepal.Width <- (iris$Sepal.Width - mean(iris$Sepal.Width)) / sd(iris$Sepal.Width)

head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 1.01560199 1.4 0.2 setosa
#2 4.9 -0.13153881 1.4 0.2 setosa
#3 4.7 0.32731751 1.3 0.2 setosa
#4 4.6 0.09788935 1.5 0.2 setosa
#5 5.0 1.24503015 1.4 0.2 setosa
#6 5.4 1.93331463 1.7 0.4 setosa

Sepal.Width တန်ဖိုးများကို ပျမ်းမျှသည် 0 ဖြစ်ပြီး စံသွေဖည်မှုမှာ 1 ဖြစ်သည့်အတွက် ယခုအခါ အတိုင်းအတာဖြင့် တိုင်းတာထားပါသည်။ ကျွန်ုပ်တို့ အလိုရှိပါက ဤအရာကိုပင် စစ်ဆေးနိုင်ပါသည်။

 #find mean of Sepal.Width
mean(iris$Sepal.Width)

#[1] 2.034094e-16 #basically zero

#find standard deviation of Sepal.Width
sd(iris$Sepal.Width)

#[1] 1

2. စကေးလုပ်ဆောင်ချက်ကို အသုံးပြု၍ ကိန်းရှင်များစွာကို စံသတ်မှတ်ပါ။

များစွာသော variable များကို ပုံမှန်ဖြစ်အောင်၊ အတိုင်းအတာ လုပ်ဆောင်ချက်ကို ရိုးရှင်းစွာ အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်၊ အောက်ပါကုဒ်သည် iris dataset ၏ ပထမကော်လံလေးခုကို အတိုင်းအတာမည်ကဲ့သို့ အတိုင်းအတာကိုပြသသည်-

 #standardize first four columns of iris dataset
iris_standardize <- as.data.frame(scale(iris[1:4]))

#view first six rows of standardized dataset
head(iris_standardize)

# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1 -0.8976739 1.01560199 -1.335752 -1.311052
#2 -1.1392005 -0.13153881 -1.335752 -1.311052
#3 -1.3807271 0.32731751 -1.392399 -1.311052
#4 -1.5014904 0.09788935 -1.279104 -1.311052
#5 -1.0184372 1.24503015 -1.335752 -1.311052
#6 -0.5353840 1.93331463 -1.165809 -1.048667

ပုံမှန်အားဖြင့် စကေး လုပ်ဆောင်ချက်သည် ဒေတာဘောင်တစ်ခုစီတွင် ကော်လံတစ်ခုစီကို ပုံမှန်ဖြစ်စေရန် ကြိုးစားသည်ကို သတိပြုပါ။ ထို့ကြောင့်၊ မျိုးစိတ် ကော်လံသည် ကိန်းဂဏာန်းမဟုတ်၍ စံချိန်စံညွှန်းမမီနိုင်သောကြောင့် စကေး(iris) ကို အသုံးပြုရန် ကြိုးပမ်းပါက ကျွန်ုပ်တို့ အမှားအယွင်းရှိပါမည်။

 scale(iris)

#Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

သို့သော်၊ dplyr ပက်ကေ့ချ်ကို အသုံးပြု၍ အခြားသော variable အားလုံးကို တူညီစွာ ထိန်းသိမ်းထားစဉ်တွင် အချို့သော ကိန်းရှင်များကိုသာ စံသတ်မှတ်ရန် ဖြစ်နိုင်သည်။ ဥပမာအားဖြင့်၊ အောက်ဖော်ပြပါ ကုဒ်သည် အခြားသော ကိန်းရှင်အားလုံးကို တူညီနေချိန်တွင် Sepal.Width နှင့် Sepal.Length ကိန်းရှင်များကို စံသတ်မှတ်ပေးသည်-

 #load dplyr package
library(dplyr)

#standardize Sepal.Width and Sepal.Length
iris_new <- iris %>% mutate_each_(list(~scale(.) %>% as.vector),
                                  vars = c("Sepal.Width","Sepal.Length"))

#view first six rows of new data frame
head(iris_new)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 -0.8976739 1.01560199 1.4 0.2 setosa
#2 -1.1392005 -0.13153881 1.4 0.2 setosa
#3 -1.3807271 0.32731751 1.3 0.2 setosa
#4 -1.5014904 0.09788935 1.5 0.2 setosa
#5 -1.0184372 1.24503015 1.4 0.2 setosa
#6 -0.5353840 1.93331463 1.7 0.4 setosa

Sepal.Length နှင့် Sepal.Width တို့သည် variable နှစ်ခုလုံးတွင် ပျမ်းမျှ 0 နှင့် 1 ၏ standard deviation ရှိသည်ဟူသော စံနှုန်းဖြင့် မှတ်သားထားရပြီး data frame ရှိ အခြားသော variable သုံးခုသည် မပြောင်းလဲသေးပါ။

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

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