กลับมาดูข้อมูลขายส่ง: ค่า k ที่ "ดีที่สุด"
ใน บทที่ 2 คุณได้สำรวจข้อมูลผู้จัดจำหน่ายสินค้าขายส่ง customers_spend ด้วยการจัดกลุ่มแบบลำดับชั้น คราวนี้จะวิเคราะห์ข้อมูลชุดเดียวกันด้วยเครื่องมือ k-means clustering ที่ได้เรียนมาในบทนี้
ขั้นตอนแรกคือการหาค่า k ที่ "ดีที่สุด" โดยใช้ ความกว้างซิลูเอตเฉลี่ย (average silhouette width)
ทบทวนข้อมูลสั้น ๆ: ชุดข้อมูลนี้บันทึกยอดใช้จ่ายของลูกค้า 45 รายของผู้จัดจำหน่ายขายส่ง ในหมวดอาหาร Milk, Grocery และ Frozen ซึ่งเก็บอยู่ใน data frame customers_spend สำหรับแบบฝึกหัดนี้ เนื่องจากข้อมูลทั้งหมดเป็นประเภทเดียวกัน (ยอดใช้จ่าย) จึงไม่จำเป็นต้องสเกลข้อมูล
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์กลุ่มข้อมูลใน R
คำแนะนำการฝึกหัด
- ใช้
map_dbl()รันpam()กับข้อมูลcustomers_spendสำหรับค่า k ตั้งแต่ 2 ถึง 10 แล้วดึงค่า ความกว้างซิลูเอตเฉลี่ย จากแต่ละโมเดล:model$silinfo$avg.widthเก็บเวกเตอร์ผลลัพธ์ไว้ในตัวแปรsil_width - สร้าง data frame ใหม่ชื่อ
sil_dfที่ประกอบด้วยค่า k และเวกเตอร์ ความกว้างซิลูเอตเฉลี่ย - ใช้ข้อมูลใน
sil_dfสร้างกราฟเส้นที่แสดงความสัมพันธ์ระหว่าง k กับ ความกว้างซิลูเอตเฉลี่ย
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Use map_dbl to run many models with varying value of k
sil_width <- map_dbl(2:10, function(k){
model <- pam(x = ___, k = ___)
model$silinfo$avg.width
})
# Generate a data frame containing both k and sil_width
sil_df <- data.frame(
k = ___,
sil_width = ___
)
# Plot the relationship between k and sil_width
ggplot(___, aes(x = ___, y = ___)) +
geom_line() +
scale_x_continuous(breaks = 2:10)