R တွင် k-means clustering- အဆင့်ဆင့် ဥပမာ


Clustering သည် ဒေတာအတွဲတစ်ခုအတွင်း လေ့လာတွေ့ရှိချက် အုပ်စုများ ကို ရှာဖွေရန် ကြိုးစားသည့် စက်သင်ယူမှုနည်းပညာတစ်ခုဖြစ်သည်။

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

Clustering သည် တုံ့ပြန်မှုကိန်းရှင် ၏တန်ဖိုးကို ခန့်မှန်းမည့်အစား ဒေတာအတွဲတစ်ခုအတွင်း ဖွဲ့စည်းပုံကိုရှာဖွေရန် ရိုးရိုးရှင်းရှင်းကြိုးစားနေသောကြောင့် ကြီးကြပ်ခြင်းမရှိသော သင်ယူမှု ပုံစံတစ်ခုဖြစ်သည်။

လုပ်ငန်းများသည် အောက်ပါကဲ့သို့သော အချက်အလက်များကို ရယူသည့်အခါတွင် စျေးကွက်ရှာဖွေရေးတွင် Clustering ကို အသုံးများပါသည်။

  • အိမ်ထောင်စုဝင်ငွေ
  • အိမ်ထောင်စု အရွယ်အစား
  • အိမ်ထောင်ဦးစီး အတတ်ပညာ
  • အနီးဆုံးမြို့ပြဧရိယာအကွာအဝေး

ဤအချက်အလက်ကို ရနိုင်သည့်အခါ၊ အလားတူအိမ်ထောင်စုများကို ခွဲခြားသတ်မှတ်ရန် အစုလိုက်အပြုံလိုက်ကို အသုံးပြုနိုင်ပြီး အချို့သောထုတ်ကုန်များကို ဝယ်ယူရန် သို့မဟုတ် ကြော်ငြာအမျိုးအစားကို ပိုမိုကောင်းမွန်စွာ တုံ့ပြန်နိုင်ခြေပိုများနိုင်သည်။

အစုလိုက်ဖွဲ့ခြင်း၏ အသုံးအများဆုံးပုံစံများထဲမှ တစ်ခုမှာ k-means အစုအဝေး ဟု ခေါ်သည်။

K-Means Clustering ဆိုတာ ဘာလဲ။

K ဆိုသည်မှာ အစုအဝေးတစ်ခုစီကို K အစုအဝေးတစ်ခုသို့ ဒေတာအတွဲတစ်ခုမှ စူးစမ်းလေ့လာမှုတစ်ခုစီကို ထားရှိပေးသည့် နည်းလမ်းတစ်ခုဖြစ်သည်။

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

လက်တွေ့တွင်၊ ကျွန်ုပ်တို့သည် K-Means အစုအဝေးပြုလုပ်ရန် အောက်ပါအဆင့်များကို အသုံးပြုသည်-

1. K အတွက် တန်ဖိုးတစ်ခုကို ရွေးပါ။

  • ပထမဦးစွာ၊ ကျွန်ုပ်တို့သည် ဒေတာတွင် ကျွန်ုပ်တို့သတ်မှတ်လိုသည့် အစုအဝေးမည်မျှရှိသည်ကို ဆုံးဖြတ်ရန် လိုအပ်သည်။ မကြာခဏဆိုသလို ကျွန်ုပ်တို့သည် K အတွက် မတူညီသောတန်ဖိုးများစွာကို စမ်းသပ်ပြီး ပေးထားသောပြဿနာတစ်ခုအတွက် အသင့်လျော်ဆုံးဖြစ်ဟန်ရှိသည့် အစုအဝေးအရေအတွက်ကို သိရှိနိုင်ရန် ရလဒ်များကို ခွဲခြမ်းစိတ်ဖြာရန် လိုအပ်ပါသည်။

2. စောင့်ကြည့်မှုတစ်ခုစီကို 1 မှ K မှ ကနဦးအစုအဝေးတစ်ခုသို့ ကျပန်းသတ်မှတ်ပါ။

3. အစုအဖွဲ့တာဝန်များ မပြောင်းလဲမချင်း အောက်ပါလုပ်ငန်းစဉ်များကို လုပ်ဆောင်ပါ။

  • K အစုအဝေးတစ်ခုစီအတွက်၊ အစုအဝေး၏ ဆွဲငင်အားဗဟိုကို တွက်ချက်ပါ။ ဤသည်မှာ kth အစုအဝေး၏ လေ့လာတွေ့ရှိချက်များအတွက် p- mean features ၏ vector မျှသာဖြစ်သည်။
  • စောင့်ကြည့်မှုတစ်ခုစီကို အနီးစပ်ဆုံး အလယ်ဗဟိုဖြင့် အစုအဝေးသို့ သတ်မှတ်ပေးပါ။ ဤတွင်၊ အနီးစပ်ဆုံး ကို Euclidean အကွာအဝေးကို အသုံးပြု၍ သတ်မှတ်သည်။

R တွင် K-Means Clustering

အောက်ဖော်ပြပါ သင်ခန်းစာသည် R တွင် k-Means အစုအဝေးကို လုပ်ဆောင်ပုံအဆင့်ဆင့်ကို ဥပမာပေးထားပါသည်။

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

ဦးစွာ၊ R တွင် k-means အစုအဝေးအတွက် အသုံးဝင်သောလုပ်ဆောင်ချက်များစွာပါရှိသော ပက်ကေ့ခ်ျနှစ်ခုကို ကျွန်ုပ်တို့ တင်ပါမည်။

 library (factoextra)
library (cluster)

အဆင့် 2: ဒေတာကိုတင်ပြီး ပြင်ဆင်ပါ။

ဤဥပမာအတွက်၊ လူသတ်မှုချေမှုန်းရေး နှင့် မုဒိမ်းမှုများ အတွက် 1973 ခုနှစ်တွင် အမေရိကန်ပြည်နယ်တစ်ခုစီရှိ လူ 100,000 တစ်ဦးလျှင် ဖမ်းဆီးခံရမှု အရေအတွက်ပါဝင်သည့် R တွင်တည်ဆောက်ထားသော USArrests ဒေတာအစုံကို ကျွန်ုပ်တို့အသုံးပြုမည်ဖြစ်ပြီး၊ မြို့ပြတွင်နေထိုင်သော ပြည်နယ်တစ်ခုစီ၏ လူဦးရေရာခိုင်နှုန်း ဒေသများ။ ၊ UrbanPop

အောက်ပါ ကုဒ်သည် အောက်ပါအတိုင်း ပြုလုပ်နည်းကို ပြသသည် ။

  • USArrests ဒေတာအတွဲကို တင်ပါ။
  • ပျောက်ဆုံးနေသောတန်ဖိုးများဖြင့် အတန်းအားလုံးကို ဖယ်ရှားပါ။
  • 0 mean of 0 နှင့် standard deviation ကို 1 ရှိရန် dataset အတွင်းရှိ variable တစ်ခုစီကို အတိုင်းအတာ
 #load data
df <-USArrests

#remove rows with missing values
df <- na. omitted (df)

#scale each variable to have a mean of 0 and sd of 1
df <- scale(df)

#view first six rows of dataset
head(df)

               Murder Assault UrbanPop Rape
Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
Alaska 0.50786248 1.1068225 -1.2117642 2.484202941
Arizona 0.07163341 1.4788032 0.9989801 1.042878388
Arkansas 0.23234938 0.2308680 -1.0735927 -0.184916602
California 0.27826823 1.2628144 1.7589234 2.067820292
Colorado 0.02571456 0.3988593 0.8608085 1.864967207

အဆင့် 3- အကောင်းဆုံးအစုအဝေးအရေအတွက်ကို ရှာပါ။

R တွင် k-means အစုအဝေးကို လုပ်ဆောင်ရန်၊ အောက်ပါ syntax ကိုအသုံးပြုသည့် built-in kmeans() လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်ပါသည်။

kmeans (ဒေတာ၊ စင်တာများ၊ nstart)

ရွှေ-

  • ဒေတာ- ဒေတာအတွဲအမည်။
  • စင်တာများ- အစုအရေအတွက်၊ k ကို ရည်ညွှန်းသည်။
  • nstart- က နဦးဖွဲ့စည်းပုံများ အရေအတွက်။ မတူညီသော ကနဦးအစပြုအစုများသည် မတူညီသောရလဒ်များဆီသို့ ဦးတည်သွားနိုင်သောကြောင့်၊ မတူညီသော ကနဦးဖွဲ့စည်းပုံများစွာကို အသုံးပြုရန် အကြံပြုအပ်ပါသည်။ k-means algorithm သည် အစုအဝေးအတွင်း အသေးငယ်ဆုံးသော ကွဲလွဲမှုကို ဖြစ်ပေါ်စေသည့် ကနဦးဖွဲ့စည်းပုံများကို ရှာဖွေမည်ဖြစ်သည်။

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

1. စတုရန်းများပေါင်းစုခြင်း စုစုပေါင်းနှင့် ဆက်စပ်သော အစုအဝေးအရေအတွက်

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

 fviz_nbclust(df, kmeans, method = “ wss ”) 

k-ဆိုလိုသည်မှာ အစုလိုက်အပြုံလိုက်တွင် အကောင်းဆုံးအစုအရေအတွက်

ပုံမှန်အားဖြင့်၊ ကျွန်ုပ်တို့သည် ဤဇာတ်ကွက်အမျိုးအစားကို ဖန်တီးသောအခါ၊ စတုရန်းများပေါင်းလဒ်သည် “ကွေးသည်” သို့မဟုတ် အဆင့်မှစတင်သွားသည့် “ ဒူး” ကို ရှာသည်။ ၎င်းသည် ယေဘုယျအားဖြင့် အကောင်းဆုံးအစုအဝေးများဖြစ်သည်။

ဤဂရပ်အတွက်၊ k = 4 အစုအဝေးတွင် သေးငယ်သော အကွေးအကောက်တစ်ခု သို့မဟုတ် “ ကွေး” ရှိသည်ကို တွေ့ရပါသည်။

2. အစုအဝေးအရေအတွက်နှင့် ကွာဟချက်စာရင်းဇယား

အစုအဝေးများ၏ အကောင်းဆုံးအရေအတွက်ကို ဆုံးဖြတ်ရန် အခြားနည်းလမ်းမှာ ကွဲပြားမှုမရှိဘဲ ဖြန့်ဖြူးမှုအတွက် ၎င်းတို့၏မျှော်လင့်ထားသည့်တန်ဖိုးများနှင့် ကွဲပြားသော k ၏ စုစုပေါင်းအတွင်းအစုအစည်းအကွဲကွဲကွဲပြားမှုကို နှိုင်းယှဉ်သည့် deviation statistic ဟုခေါ်သော မက်ထရစ်ကိုအသုံးပြုခြင်းဖြစ်သည်။

အစု အစည်းမှ clusGap() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ အစုအဝေးတစ်ခုစီ၏ ကိန်းဂဏာန်းကိန်းဂဏန်းများကို တွက်ချက်နိုင်ပြီး fviz_gap_stat() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ ကွက်လပ်စာရင်းဇယားများနှင့် အစုအဝေးများကို တွက်ချက်နိုင်သည်-

 #calculate gap statistic based on number of clusters
gap_stat <- clusGap(df,
                    FUN = kmeans,
                    nstart = 25,
                    K.max = 10,
                    B = 50)

#plot number of clusters vs. gap statistic
fviz_gap_stat(gap_stat) 

အကောင်းဆုံးအစုအဝေးအရေအတွက်အတွက် သွေဖည်သောကိန်းဂဏန်း

ဂရပ်ဖ်မှ၊ ကွာဟချက်စာရင်းဇယားသည် k = 4 အစုအဝေးတွင် အမြင့်ဆုံးဖြစ်သည်၊ ၎င်းသည် ယခင်က ကျွန်ုပ်တို့အသုံးပြုခဲ့သော တံတောင်ဆစ်နည်းလမ်းနှင့် ကိုက်ညီကြောင်း ကျွန်ုပ်တို့တွေ့နိုင်သည်။

အဆင့် 4- Optimal K ဖြင့် K-Means အစုအဝေးကို လုပ်ဆောင်ပါ။

နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် k ၏ အကောင်းဆုံးတန်ဖိုးကို အသုံးပြု၍ ဒေတာအတွဲပေါ်တွင် k-Means အစုအဝေးကို လုပ်ဆောင်နိုင်သည်-

 #make this example reproducible
set.seed(1)

#perform k-means clustering with k = 4 clusters
km <- kmeans(df, centers = 4, nstart = 25)

#view results
km

K-means clustering with 4 clusters of sizes 16, 13, 13, 8

Cluster means:
      Murder Assault UrbanPop Rape
1 -0.4894375 -0.3826001 0.5758298 -0.26165379
2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
3 0.6950701 1.0394414 0.7226370 1.27693964
4 1.4118898 0.8743346 -0.8145211 0.01927104

Vector clustering:
       Alabama Alaska Arizona Arkansas California Colorado 
             4 3 3 4 3 3 
   Connecticut Delaware Florida Georgia Hawaii Idaho 
             1 1 3 4 1 2 
      Illinois Indiana Iowa Kansas Kentucky Louisiana 
             3 1 2 1 2 4 
         Maine Maryland Massachusetts Michigan Minnesota Mississippi 
             2 3 1 3 2 4 
      Missouri Montana Nebraska Nevada New Hampshire New Jersey 
             3 2 2 3 2 1 
    New Mexico New York North Carolina North Dakota Ohio Oklahoma 
             3 3 4 2 1 1 
        Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee 
             1 1 1 4 2 4 
         Texas Utah Vermont Virginia Washington West Virginia 
             3 1 2 1 1 2 
     Wisconsin Wyoming 
             2 1 

Within cluster sum of squares by cluster:
[1] 16.212213 11.952463 19.922437 8.316061
 (between_SS / total_SS = 71.2%)

Available components:

[1] "cluster" "centers" "totss" "withinss" "tot.withinss" "betweenss"   
[7] "size" "iter" "ifault"         

ရလဒ်များမှ ကျွန်ုပ်တို့ မြင်နိုင်သည်-

  • ပြည်နယ် ၁၆ ခုကို ပထမအစုအဖွဲ့တွင် တာဝန်ပေးအပ်ခဲ့သည်။
  • ပြည်နယ် 13 ခုကို ဒုတိယအစုအဖွဲ့တွင် တာဝန်ပေးအပ်ထားသည်။
  • ပြည်နယ် 13 ခုကို တတိယအစုအဖွဲ့တွင် တာဝန်ပေးအပ်ထားသည်။
  • စတုတ္ထအစုအဖွဲ့တွင် ပြည်နယ် ခုကို တာဝန်ပေးအပ်ထားသည်။

fivz_cluster() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ axes ပေါ်ရှိ ပထမအဓိကအစိတ်အပိုင်းနှစ်ခုကိုပြသသည့် scatterplot တွင် အစုအဝေးများကို မြင်ယောင်နိုင်သည်-

 #plot results of final k-means model
fviz_cluster(km, data = df)

K ဆိုသည်မှာ R တွင် ကွက်ကွက်များ အစုအဝေးကို ဆိုလိုသည်။

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

 #find means of each cluster
aggregate(USArrests, by= list (cluster=km$cluster), mean)

cluster Murder Assault UrbanPop Rape
				
1 3.60000 78.53846 52.07692 12.17692
2 10.81538 257.38462 76.00000 33.19231
3 5.65625 138.87500 73.87500 18.78125
4 13.93750 243.62500 53.75000 21.41250

ဤအထွက်ကို အောက်ပါအတိုင်း ကျွန်ုပ်တို့ ဘာသာပြန်ဆိုပါသည်။

  • အုပ်စု 1 ပြည်နယ်များအကြား နိုင်ငံသား 100,000 တစ်ဦးလျှင် ပျမ်းမျှ လူသတ်မှု အရေအတွက်မှာ 3.6 ဖြစ်သည်။
  • အုပ်စု 1 ပြည်နယ်များအကြား နိုင်ငံသား 100,000 တစ်ဦးလျှင် ပျမ်းမျှ တိုက်ခိုက်မှု အရေအတွက်မှာ 78.5 ဖြစ်သည်။
  • အုပ်စု 1 ပြည်နယ်များအကြား မြို့ပြဧရိယာတွင် နေထိုင်သူ၏ ပျမ်းမျှရာခိုင်နှုန်းမှာ 52.1% ဖြစ်သည်။
  • အုပ်စု 1 ပြည်နယ်များကြားတွင် နိုင်ငံသား 100,000 တစ်ဦးလျှင် မုဒိမ်းမှု ပျမ်းမျှ အရေအတွက်မှာ 12.2 ဖြစ်သည်

နောက် … ပြီးတော့။

ပြည်နယ်တစ်ခုစီ၏ အစုအဝေးတာဝန်များကို မူရင်းဒေတာအတွဲသို့လည်း ထည့်နိုင်သည်။

 #add cluster assignment to original data
final_data <- cbind(USArrests, cluster = km$cluster)

#view final data
head(final_data)

	Murder Assault UrbanPop Rape cluster
				
Alabama 13.2 236 58 21.2 4
Alaska 10.0 263 48 44.5 2
Arizona 8.1 294 80 31.0 2
Arkansas 8.8 190 50 19.5 4
California 9.0 276 91 40.6 2
Colorado 7.9 204 78 38.7 2

K-Means Clustering ၏ အားသာချက်များနှင့် အားနည်းချက်များ

K-Means အစုလိုက်ဖွဲ့ခြင်းသည် အောက်ပါ အကျိုးကျေးဇူးများကို ပေးဆောင်သည်-

  • ၎င်းသည် မြန်ဆန်သော အယ်လဂိုရီသမ်တစ်ခုဖြစ်သည်။
  • ၎င်းသည် ကြီးမားသောဒေတာအတွဲများကို ကောင်းမွန်စွာကိုင်တွယ်နိုင်သည်။

သို့သော်၊ ၎င်းတွင်အောက်ပါအလားအလာအားနည်းချက်များရှိသည်။

  • ၎င်းသည် algorithm ကိုမလုပ်ဆောင်မီ အစုအဝေးအရေအတွက်ကို သတ်မှတ်ရန် ကျွန်ုပ်တို့အား လိုအပ်သည်။
  • ၎င်းသည် ပြင်ပလူများအတွက် အကဲဆတ်သည်။

k-means အစုအဝေးအတွက် အခြားရွေးချယ်စရာနှစ်ခုမှာ k-အဓိပ္ပာယ် အစုအဝေး နှင့် အထက်အောက် အစုအဝေးများဖြစ်သည်။


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

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

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