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) ที่ดึงมา:

IDMonthly_Bill (บาท)Data_Usage (GB)Calls_to_Support (ครั้ง)Contract (สัญญา)Last_Month_UsageChurn (Label)
1018995001 Year50 GBNo
1021200105MonthlyNULLYes
10339920Monthly2 GBNo
104250010012 Years200 GBYes

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 เปลี่ยนจาก NULL40 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

IDNorm_BillNorm_Support_CallsUsage_Drop_RateIs_Monthly_ContractChurn (Target)
1010.30.00.0 (คงที่)0No
1020.51.0 (โทรบ่อย)0.6 (ลดลงเยอะ)1Yes
1030.10.00.01No
1041.00.20.5 (ลดลง)0Yes

4. Data Mining (ขุดค้น Pattern)

ส่งข้อมูลตารางข้างบนเข้าไปใน Algorithm (เช่น Decision Tree หรือ Logistic Regression)

Goal: หาความสัมพันธ์ระหว่าง XX (Bill, Calls, Drop_rate) กับ YY (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