Data Mining Exercise 1
An overview of Data Mining (DM), its techniques, applications, and challenges.
Warning
This article is a work in progress and may contain incomplete information or inaccuracies. Please verify details from reliable sources.
Data Mining Exercise 1
โจทย์: ทำนายว่า "ลูกค้าคนไหนมีแนวโน้มจะย้ายค่ายในเดือนหน้า?"
1. Data Selection (การคัดเลือกข้อมูล)
เราไม่จำเป็นต้องดึงข้อมูลทั้งหมดในจักรวาลบริษัท เราเลือกเฉพาะข้อมูลที่น่าจะส่งผลต่อการตัดสินใจย้ายค่าย
สิ่งที่เลือกมา:
- ประวัติการโทร
- ยอดค่าใช้จ่าย
- การโทรหา Call Center
- ประเภทโปรโมชั่น
สิ่งที่ไม่เลือก:
- ชื่อ-นามสกุล (ไม่เกี่ยวกับการตัดสินใจ)
- เลขบัตรประชาชน
- สีที่ชอบ
จำลองข้อมูลดิบ (Raw Data) ที่ดึงมา:
| ID | Monthly_Bill (บาท) | Data_Usage (GB) | Calls_to_Support (ครั้ง) | Contract (สัญญา) | Last_Month_Usage | Churn (Label) |
|---|---|---|---|---|---|---|
| 101 | 899 | 50 | 0 | 1 Year | 50 GB | No |
| 102 | 1200 | 10 | 5 | Monthly | NULL | Yes |
| 103 | 399 | 2 | 0 | Monthly | 2 GB | No |
| 104 | 2500 | 100 | 1 | 2 Years | 200 GB | Yes |
2. Data Preprocessing (เตรียมและทำความสะอาด)
ข้อมูลดิบมักสกปรก เราต้องจัดการก่อน
🔍 Missing Values
- ปัญหา: ลูกค้า 102 ข้อมูล
Last_Month_Usageหายไป (NULL) - วิธีแก้: เติมค่าเฉลี่ย (Mean Imputation) หรือตัดทิ้ง
- ในที่นี้สมมติเราเติมค่าเฉลี่ย = 40 GB
⚡ Noise/Outlier
- ปัญหา: สมมติลูกค้า 104 ยอดใช้เน็ตเดือนก่อน 200GB (สูงผิดปกติ)
- วิธีแก้: ตรวจสอบว่าเป็น error หรือใช้จริง
- ถ้าใช้จริง → เก็บไว้ เพราะอาจเป็นกลุ่ม VIP
ผลลัพธ์หลัง Clean:
- ID 102:
Last_Month_Usageเปลี่ยนจากNULL→40 GB
3. Data Transformation (แปลงสภาพข้อมูล)
ขั้นตอนนี้คือการแปลงข้อมูลให้ Algorithm เข้าใจและเรียนรู้ได้ง่ายขึ้น
🔨 Feature Construction (สร้างตัวแปรใหม่)
สร้าง Usage_Drop_Rate:
Usage_Drop_Rate = (เดือนก่อน - เดือนนี้) / เดือนก่อนเหตุผล: การที่ยอดใช้ฮวบลง อาจแปลว่าเขาเริ่มไปใช้ซิมค่ายอื่นแล้ว
📊 Normalization
ปัญหา: Monthly_Bill (หลักพัน) กับ Calls_to_Support (หลักหน่วย) สเกลต่างกันเกินไป
วิธีแก้: ปรับทุกอย่างให้เป็นช่วง 0-1 (Min-Max Scaling)
🔢 Encoding
| ID | Norm_Bill | Norm_Support_Calls | Usage_Drop_Rate | Is_Monthly_Contract | Churn (Target) |
|---|---|---|---|---|---|
| 101 | 0.3 | 0.0 | 0.0 (คงที่) | 0 | No |
| 102 | 0.5 | 1.0 (โทรบ่อย) | 0.6 (ลดลงเยอะ) | 1 | Yes |
| 103 | 0.1 | 0.0 | 0.0 | 1 | No |
| 104 | 1.0 | 0.2 | 0.5 (ลดลง) | 0 | Yes |
4. Data Mining (ขุดค้น Pattern)
ส่งข้อมูลตารางข้างบนเข้าไปใน Algorithm (เช่น Decision Tree หรือ Logistic Regression)
Goal: หาความสัมพันธ์ระหว่าง (Bill, Calls, Drop_rate) กับ (Churn)
จำลองการทำงานของ Algorithm (Decision Tree Learning)
5. Pattern Evaluation (ประเมินผล)
เราได้ "กฎ" มาแล้ว ต้องมาดูว่าเชื่อถือได้ไหม
🧪 Test
ลองเอากฎไปทายข้อมูลลูกค้าชุดใหม่ (Test Set)
Result:
- ✅ ทายถูก 90 คน
- ❌ ทายผิด 10 คน (เช่น ทายว่าจะย้าย แต่ดันไม่ย้าย)
- Accuracy = 90%
💡 Interpretation (แปลผล)
เราพบ Pattern ที่น่าสนใจ (Knowledge):
📌 Key Finding
"ลูกค้าที่มีโปรรายเดือน (Monthly) และมียอดการใช้งานลดลงเกิน 50% หรือโทรหา Call Center เกิน 3 ครั้งในเดือนเดียว มีโอกาสย้ายค่ายสูงถึง 85%"
จำลองการทำงานของ Algorithm (Decision Tree Learning)
โมเดลจะพยายามสร้างกฎแบบนี้:
- Node แรก: เช็ค Calls_to_Support ก่อนเลย → ถ้า > 0.8 (โทรบ่อย) → มีโอกาส Churn สูง
- Node สอง: เช็ค Usage_Drop_Rate → ถ้าลดลงเกิน 40% → มีโอกาส Churn สูง
5. Pattern Evaluation (ประเมินผล)
เราได้ "กฎ" มาแล้ว ต้องมาดูว่าเชื่อถือได้ไหม
🧪 Test
ลองเอากฎไปทายข้อมูลลูกค้าชุดใหม่ (Test Set)
Result:
- ✅ ทายถูก 90 คน
- ❌ ทายผิด 10 คน (เช่น ทายว่าจะย้าย แต่ดันไม่ย้าย)
- Accuracy = 90%
💡 Interpretation (แปลผล)
เราพบ Pattern ที่น่าสนใจ (Knowledge):
6. Knowledge Presentation & Action (นำไปใช้จริง)
ขั้นตอนนี้คือปลายทางของ KDD
🎯 สิ่งที่ทำ (Action)
ระบบจะดึงรายชื่อลูกค้าที่เข้าข่าย Pattern นี้ออกมาอัตโนมัติทุกเช้า
🎁 Retention Campaign
ส่ง SMS หรือให้พนักงานโทรไปเสนอ:
- "ส่วนลด 50% นาน 6 เดือน" ทันที
- ก่อนที่ลูกค้าจะเดินไปศูนย์บริการคู่แข่ง
📝 สรุปภาพรวม (Takeaway)
| ขั้นตอน | รายละเอียด |
|---|---|
| Input | ข้อมูลลูกค้าเป็นล้านบรรทัด |
| KDD Process | คัดกรอง → ทำความสะอาด → แปลงตัวเลข → สร้างโมเดล → คัดเลือกกฎ |
| Output | "รายชื่อลูกค้าเสี่ยง" และ "เงื่อนไข (Logic)" ที่บอกว่าทำไมเขาถึงเสี่ยง (เช่น โทรหา Call center บ่อย) |
🎯 เป้าหมาย: ให้ทีมการตลาดเข้าไปแก้ปัญหาได้ตรงจุด KDD Process: คัดกรอง -> ทำความสะอาด -> แปลงตัวเลข -> สร้างโมเดล -> คัดเลือกกฎ
Output: "รายชื่อลูกค้าเสี่ยง" และ "เงื่อนไข (Logic)" ที่บอกว่าทำไมเขาถึงเสี่ยง (เช่น โทรหา Call center บ่อย) เพื่อให้ทีมการตลาดเข้าไปแก้ปัญหาได้ตรงจุดครับ
📝 Edit this page on GitHub