ปรึกษา Data Mining
Data Mining 4124305 • Chapter 05

บทที่ 5 กฎความสัมพันธ์ (Association Rules)

เรียนรู้การค้นหารูปแบบ “สิ่งใดมักเกิดร่วมกับสิ่งใด” จากข้อมูลธุรกรรม พร้อมสูตร Support, Confidence, Lift, อัลกอริทึม Apriori, FP-Growth, Eclat และตัวอย่าง Python ด้วย mlxtend

Market Basket Support Confidence Lift Apriori Python mlxtend

ผลลัพธ์การเรียนรู้

  • อธิบายกฎ A → B และส่วนประกอบของกฎได้
  • คำนวณและตีความ Support, Confidence และ Lift ได้
  • เข้าใจหลักการของ Apriori, FP-Growth และ Eclat
  • ใช้ Python วิเคราะห์ Market Basket Analysis ได้
เนื้อหาต่อเนื่องบทที่ 1–9
มีสูตรและตัวอย่างคำนวณ
มีตัวอย่าง Python
เชื่อมโยงงานธุรกิจจริง

5.1 บทนำ: กฎความสัมพันธ์คืออะไร?

กฎความสัมพันธ์ (Association Rules) เป็นเทคนิคหนึ่งในงานเหมืองข้อมูลที่ใช้ค้นหารูปแบบความสัมพันธ์ที่ซ่อนอยู่ระหว่างรายการข้อมูลในชุดข้อมูลขนาดใหญ่ โดยเฉพาะข้อมูลที่มีลักษณะเป็นธุรกรรม เช่น ใบเสร็จการซื้อสินค้า ประวัติการใช้บริการ พฤติกรรมผู้ใช้เว็บไซต์ หรือเหตุการณ์ที่เกิดร่วมกัน

แนวคิดหลักของบทนี้คือการค้นหาว่า “รายการใดมักเกิดขึ้นร่วมกับรายการใด” และความสัมพันธ์นั้นเกิดขึ้นบ่อย น่าเชื่อถือ และน่าสนใจเพียงใด ตัวอย่างที่นิยมที่สุดคือ Market Basket Analysis หรือการวิเคราะห์ตะกร้าสินค้า เพื่อดูว่าสินค้าใดมักถูกซื้อพร้อมกัน

Learning Objectives

หลังเรียนบทนี้ ผู้เรียนควรสามารถอธิบายแนวคิดกฎความสัมพันธ์ เลือกตัววัดที่เหมาะสม และนำผลลัพธ์ไปประยุกต์ใช้กับข้อมูลธุรกรรมได้อย่างถูกต้อง

แยกความหมายของ Transaction, Item, Itemset, Antecedent และ Consequent ได้
คำนวณ Support, Confidence และ Lift จากข้อมูลตัวอย่างได้
อธิบายขั้นตอน Apriori และการค้นหา Frequent Itemsets ได้
วิเคราะห์กฎความสัมพันธ์ด้วย Python และแปลผลเชิงธุรกิจได้
ภาพประกอบ: แนวคิด A → B ในกฎความสัมพันธ์
Antecedent {ขนมปัง} เงื่อนไขด้านซ้าย A → B Consequent {นม} ผลลัพธ์ด้านขวา ถ้าลูกค้าซื้อขนมปัง มีแนวโน้มที่จะซื้อนมร่วมด้วย
ภาพนี้สรุปโครงสร้างของกฎความสัมพันธ์ในรูปแบบ Antecedent → Consequent

รูปแบบของกฎความสัมพันธ์

A → B

อ่านว่า “ถ้ามี A เกิดขึ้น มักจะมี B เกิดขึ้นตามมาหรือเกิดร่วมกัน” เช่น {ขนมปัง} → {นม} หมายถึง ลูกค้าที่ซื้อขนมปังมีแนวโน้มที่จะซื้อนมร่วมด้วย

ส่วนประกอบความหมายตัวอย่าง
Antecedentเงื่อนไขหรือรายการด้านซ้ายของกฎ{ขนมปัง}
Consequentผลลัพธ์หรือรายการด้านขวาของกฎ{นม}
Association Ruleกฎที่อธิบายความสัมพันธ์ระหว่างรายการ{ขนมปัง} → {นม}

กฎความสัมพันธ์ไม่ได้หมายความว่า A เป็นสาเหตุทำให้ B เกิดขึ้นเสมอ แต่หมายถึง A และ B มีแนวโน้มเกิดร่วมกัน ดังนั้นควรใช้คำว่า “มีแนวโน้ม”, “มักเกิดร่วมกัน” หรือ “มีความสัมพันธ์ในการเกิดร่วมกัน” มากกว่าการสรุปว่า “เป็นสาเหตุของกันและกัน”

ความสำคัญของกฎความสัมพันธ์

ค้นหารูปแบบที่ซ่อนอยู่

ค้นพบความสัมพันธ์ที่ไม่เห็นได้ชัด เช่น ลูกค้าที่ซื้อโทรศัพท์มือถือมักซื้อเคสและฟิล์มกันรอย

สนับสนุนการตัดสินใจ

ใช้ประกอบการจัดโปรโมชัน การแนะนำสินค้า การวางสินค้า และการวางแผนสต็อก

เพิ่มยอดขายและลดต้นทุน

ช่วยจัดชุดสินค้า แนะนำสินค้าเสริม และเตรียมสินค้าที่มักขายร่วมกันให้เพียงพอ

เข้าใจพฤติกรรมลูกค้า

ช่วยให้ธุรกิจรู้ว่าลูกค้าสนใจสินค้า บริการ หรือคอนเทนต์ใดร่วมกัน

5.2 พื้นฐานของกฎความสัมพันธ์

ก่อนวิเคราะห์กฎความสัมพันธ์ ผู้เรียนควรเข้าใจคำศัพท์พื้นฐาน ได้แก่ Transaction Data, Item, Itemset, Association Rule, Antecedent และ Consequent เพราะเป็นองค์ประกอบหลักที่ใช้สร้างกฎและตีความผลลัพธ์

ภาพประกอบ: Transaction Data → Itemset
ตัวอย่างข้อมูลธุรกรรมและ Itemset Transaction Data T001: ขนมปัง, นม, ไข่ T002: ขนมปัง, นม T003: นม, กาแฟ T004: ขนมปัง, ไข่ T005: กาแฟ, น้ำผลไม้ Itemset 1-itemset: {ขนมปัง} 2-itemset: {ขนมปัง, นม} 3-itemset: {ขนมปัง, นม, ไข่} ใช้คำนวณ Support และสร้างกฎ
ธุรกรรมแต่ละรายการประกอบด้วยหลาย Item เมื่อนำ Item มารวมกันจะเกิด Itemset หลายขนาด

5.2.1 Transaction Data

Transaction Data คือข้อมูลที่บันทึกรายการต่าง ๆ ที่เกิดขึ้นในแต่ละธุรกรรม โดยหนึ่งธุรกรรมอาจประกอบด้วยหลายรายการ เช่น ใบเสร็จหนึ่งใบมีสินค้าหลายรายการ

Transaction IDรายการสินค้า
T001ขนมปัง, นม, ไข่
T002ขนมปัง, นม
T003นม, กาแฟ
T004ขนมปัง, ไข่, น้ำผลไม้
T005กาแฟ, น้ำผลไม้

5.2.2 Item และ Itemset

Item คือรายการข้อมูลเดี่ยว เช่น ขนมปัง นม ไข่ หรือพฤติกรรมหนึ่งอย่างของผู้ใช้ ส่วน Itemset คือกลุ่มของ Item ตั้งแต่หนึ่งรายการขึ้นไปที่ปรากฏอยู่ร่วมกันในธุรกรรมเดียวกัน

ประเภทตัวอย่าง
1-itemset{ขนมปัง}, {นม}, {ไข่}
2-itemset{ขนมปัง, นม}, {ขนมปัง, ไข่}, {นม, ไข่}
3-itemset{ขนมปัง, นม, ไข่}

5.2.3 One-hot Encoding สำหรับ Transaction Data

ก่อนนำข้อมูลธุรกรรมไปวิเคราะห์ด้วย Python มักต้องแปลงข้อมูลเป็นรูปแบบ One-hot Encoding โดยแต่ละคอลัมน์แทนสินค้าแต่ละชนิด และแต่ละแถวแทนธุรกรรม หากธุรกรรมมีสินค้านั้นให้เป็น True หรือ 1 หากไม่มีให้เป็น False หรือ 0

Transactionขนมปังนมไข่กาแฟ
T0011110
T0021100
T0030101

5.3 ตัววัดสำคัญของกฎความสัมพันธ์

การค้นพบกฎจำนวนมากไม่ได้หมายความว่าทุกกฎจะมีประโยชน์ ผู้วิเคราะห์จึงต้องใช้ตัววัดเพื่อประเมินว่ากฎใดเกิดขึ้นบ่อย น่าเชื่อถือ และน่าสนใจเพียงพอ ได้แก่ Support, Minimum Support, Confidence, Minimum Confidence และ Lift

ภาพประกอบ: Support, Confidence และ Lift
ตัววัดคุณภาพของกฎ {ขนมปัง} → {นม} Support เกิด A และ B ในธุรกรรมทั้งหมด 2 / 5 = 40% Confidence ถ้าเกิด A แล้ว B เกิดด้วยกี่ครั้ง 0.40 / 0.60 Lift ความสัมพันธ์เด่นกว่า การเกิดตามปกติหรือไม่ > 1 = น่าสนใจ ควรพิจารณาทั้ง 3 ค่าไปพร้อมกัน ไม่ควรดู Confidence เพียงอย่างเดียว
Support วัดความถี่ Confidence วัดความน่าเชื่อถือ และ Lift วัดความสัมพันธ์ที่เด่นกว่าการเกิดตามปกติ

5.3.1 Support

Support ใช้วัดว่า Itemset หนึ่ง ๆ ปรากฏอยู่ในธุรกรรมทั้งหมดบ่อยเพียงใด ตอบคำถามว่า “รายการนี้เกิดขึ้นบ่อยแค่ไหนในข้อมูลทั้งหมด”

Support(A ∪ B) = Count(A ∪ B) / Total Transactions

ตัวอย่าง หากมีธุรกรรม 5 รายการ และ {ขนมปัง, นม} ปรากฏร่วมกัน 2 รายการ

Support({ขนมปัง, นม}) = 2 / 5 = 0.40 = 40%

5.3.2 Minimum Support

Minimum Support คือค่าขั้นต่ำที่ผู้วิเคราะห์กำหนดเพื่อคัดเลือก Itemset ที่เกิดขึ้นบ่อยพอจะนำไปวิเคราะห์ต่อ หาก Itemset มีค่า Support มากกว่าหรือเท่ากับ Minimum Support จะถือว่าเป็น Frequent Itemset

การกำหนดค่าผลที่เกิดขึ้น
Minimum Support สูงได้ Itemset น้อยลง แต่เป็นรายการที่เกิดขึ้นบ่อยมาก
Minimum Support ต่ำได้ Itemset มากขึ้น แต่อาจมีรายการที่เกิดขึ้นน้อยและไม่สำคัญปะปน
ต่ำเกินไปอาจได้กฎจำนวนมากเกินไปและตีความยาก
สูงเกินไปอาจพลาดความสัมพันธ์ที่น่าสนใจแต่เกิดไม่บ่อย

5.3.3 Confidence

Confidence ใช้วัดความน่าจะเป็นที่ Consequent จะเกิดขึ้นเมื่อ Antecedent เกิดขึ้นแล้ว ตอบคำถามว่า “ถ้าเกิด A แล้ว B มีโอกาสเกิดตามมากี่เปอร์เซ็นต์”

Confidence(A → B) = Support(A ∪ B) / Support(A)

ตัวอย่าง หาก Support({ขนมปัง, นม}) = 0.40 และ Support({ขนมปัง}) = 0.60

Confidence({ขนมปัง} → {นม}) = 0.40 / 0.60 = 0.667 = 66.7%

แปลว่า ในบรรดาลูกค้าที่ซื้อขนมปัง มีประมาณ 66.7% ที่ซื้อนมร่วมด้วย

5.3.4 Lift

Lift ใช้วัดว่าการเกิด Antecedent เพิ่มโอกาสการเกิด Consequent มากกว่าปกติหรือไม่ ช่วยแก้ข้อจำกัดของ Confidence เพราะบางครั้ง Consequent เป็นรายการที่เกิดบ่อยอยู่แล้ว ทำให้ Confidence สูงโดยไม่จำเป็นต้องมีความสัมพันธ์พิเศษ

Lift(A → B) = Confidence(A → B) / Support(B)
ค่า Liftการตีความ
Lift > 1A และ B มีความสัมพันธ์เชิงบวก เกิดร่วมกันมากกว่าปกติ
Lift = 1A และ B เป็นอิสระต่อกันหรือไม่มีความสัมพันธ์เด่นชัด
Lift < 1A อาจลดโอกาสการเกิด B หรือเกิดร่วมกันน้อยกว่าปกติ

ข้อควรระวังในการตีความ

Confidence สูงไม่ได้หมายความว่ากฎนั้นดีที่สุดเสมอ ควรพิจารณาร่วมกับ Support และ Lift รวมถึงความหมายทางธุรกิจ เช่น สินค้าบางรายการขายดีมากอยู่แล้ว กฎที่มีสินค้านั้นเป็น Consequent อาจมี Confidence สูงโดยธรรมชาติ

5.4 ขั้นตอนการค้นหากฎความสัมพันธ์

กระบวนการค้นหากฎความสัมพันธ์โดยทั่วไปประกอบด้วยหลายขั้นตอน ตั้งแต่การเตรียมข้อมูลไปจนถึงการประเมินและปรับค่าเกณฑ์ให้เหมาะสม

ภาพประกอบ: Workflow การค้นหากฎความสัมพันธ์
เตรียมข้อมูลTransaction FrequentItemsets สร้างกฎA → B ประเมินLift / Conf. ปรับ Minimum Support / Confidence จนได้กฎที่เหมาะสมและตีความได้
Workflow นี้ช่วยให้ผู้เรียนเห็นลำดับการทำงานตั้งแต่ข้อมูลดิบจนถึงกฎที่พร้อมนำไปใช้

เตรียมข้อมูล

จัดข้อมูลให้อยู่ในรูปแบบ Transaction Data หรือ One-hot Encoding ตรวจสอบค่าว่าง ข้อมูลซ้ำ และรายการผิดปกติ

ค้นหา Frequent Itemsets

หา Itemset ที่มีค่า Support ผ่านเกณฑ์ Minimum Support

สร้าง Association Rules

สร้างกฎ A → B จาก Frequent Itemsets โดย A และ B ต้องไม่ซ้ำกัน

คัดเลือกกฎที่น่าสนใจ

ใช้ Support, Confidence และ Lift เพื่อเลือกกฎที่มีคุณภาพ

จัดลำดับกฎ

เรียงตาม Confidence, Support, Lift หรือเป้าหมายทางธุรกิจ

ประเมินและปรับค่าเกณฑ์

ปรับ Minimum Support และ Minimum Confidence หากกฎมากหรือน้อยเกินไป

ตัวอย่างการเลือกค่าเกณฑ์เบื้องต้น

ลักษณะข้อมูลMinimum Support ที่แนะนำMinimum Confidence ที่แนะนำ
ข้อมูลขนาดเล็ก0.20 – 0.400.60 – 0.80
ข้อมูลขนาดกลาง0.05 – 0.200.50 – 0.80
ข้อมูลขนาดใหญ่0.01 – 0.100.50 – 0.80
สินค้ามีจำนวนมากใช้ Support ต่ำลงใช้ Confidence ร่วมกับ Lift

5.5 อัลกอริทึมสำหรับกฎความสัมพันธ์

การค้นหากฎความสัมพันธ์จำเป็นต้องใช้อัลกอริทึมเพื่อค้นหา Frequent Itemsets จากข้อมูลธุรกรรม อัลกอริทึมที่นิยม ได้แก่ Apriori, FP-Growth และ Eclat โดยในระดับพื้นฐานควรเริ่มจาก Apriori เพราะเข้าใจง่ายและเห็นขั้นตอนชัดเจน

ภาพประกอบ: Apriori สร้าง Itemset จากเล็กไปใหญ่
Apriori Algorithm: Frequent Itemsets จาก 1-itemset → k-itemset L1: Frequent 1-itemset {ขนมปัง}, {นม}, {ไข่} L2: Frequent 2-itemset {ขนมปัง, นม}, {ขนมปัง, ไข่} L3 {A,B,C} Apriori Property ถ้า Itemset ไม่ผ่าน Minimum Support จะตัด Itemset ที่ใหญ่กว่าซึ่งมีรายการนั้นทิ้งได้ทันที
Apriori ลดจำนวน Candidate ด้วยหลักการว่า Itemset ใหญ่จะเป็น Frequent ได้ ก็ต่อเมื่อ Subset ของมันต้อง Frequent ด้วย

5.5.1 แนวคิดของ Apriori Algorithm

Apriori Algorithm อาศัยหลักการที่เรียกว่า Apriori Property คือ หาก Itemset ใดเป็น Frequent Itemset แล้ว Subset ของ Itemset นั้นต้องเป็น Frequent Itemset ด้วย และหาก Itemset ใดไม่ผ่าน Minimum Support ก็ไม่จำเป็นต้องพิจารณา Itemset ที่ใหญ่กว่าซึ่งมี Itemset นั้นเป็นส่วนประกอบ

ตัวอย่าง: ถ้า {ขนมปัง, กาแฟ} ไม่ผ่าน Minimum Support ก็ไม่จำเป็นต้องพิจารณา {ขนมปัง, กาแฟ, นม} หรือ {ขนมปัง, กาแฟ, ไข่} เพราะมี {ขนมปัง, กาแฟ} เป็นส่วนย่อย

5.5.2 ขั้นตอนของ Apriori

กำหนด Minimum Support

เช่น 40% หมายถึง Itemset ต้องปรากฏอย่างน้อย 40% ของธุรกรรมทั้งหมด

สร้าง Candidate 1-itemset

นับจำนวน Item เดี่ยว เช่น {ขนมปัง}, {นม}, {ไข่}

คัดเลือก Frequent 1-itemset

เลือกเฉพาะ Item ที่ Support ผ่านเกณฑ์

สร้าง Candidate 2-itemset

นำ Frequent 1-itemset มาจับคู่ เช่น {ขนมปัง, นม}

ทำซ้ำกับ k-itemset

ขยายขนาด Itemset จนไม่พบ Frequent Itemset ใหม่

สร้าง Association Rules

นำ Frequent Itemsets มาสร้างกฎและคำนวณ Confidence/Lift

5.5.3 เปรียบเทียบ Apriori, FP-Growth และ Eclat

อัลกอริทึมแนวคิดจุดเด่นข้อจำกัด
Aprioriสร้าง Candidate Itemsets จากเล็กไปใหญ่เข้าใจง่าย เหมาะกับผู้เริ่มต้นช้าเมื่อข้อมูลใหญ่ เพราะสแกนข้อมูลหลายรอบ
FP-Growthสร้างโครงสร้าง FP-Tree เพื่อลดการสร้าง Candidateเร็วกว่า Apriori ในข้อมูลใหญ่อธิบายยากกว่าเล็กน้อย
Eclatใช้แนวคิดแนวตั้งของ Transaction ID Setเร็วเมื่อข้อมูลเหมาะสมและมีหน่วยความจำพออาจใช้หน่วยความจำมาก

5.5.4 ตัวอย่างคำนวณ Apriori แบบง่าย

กำหนดข้อมูล 5 ธุรกรรม และ Minimum Support = 40% ดังนั้น Itemset ต้องปรากฏอย่างน้อย 2 ครั้งจึงจะผ่านเกณฑ์

Itemsetจำนวนครั้งที่พบSupportผล
{ขนมปัง}360%ผ่าน
{นม}360%ผ่าน
{ไข่}240%ผ่าน
{กาแฟ}240%ผ่าน
{น้ำผลไม้}120%ไม่ผ่าน

เมื่อนำ Frequent 1-itemset มาจับคู่ จะได้ Frequent 2-itemset เช่น {ขนมปัง, นม} และ {ขนมปัง, ไข่} จากนั้นสามารถสร้างกฎได้ เช่น

{ขนมปัง} → {นม}
{นม} → {ขนมปัง}
{ขนมปัง} → {ไข่}
{ไข่} → {ขนมปัง}

5.6 การวิเคราะห์กฎความสัมพันธ์ด้วย Python

การวิเคราะห์กฎความสัมพันธ์ด้วย Python นิยมใช้ไลบรารี mlxtend โดยใช้ TransactionEncoder เพื่อแปลงข้อมูลธุรกรรมเป็น One-hot Encoding ใช้ apriori() เพื่อหา Frequent Itemsets และใช้ association_rules() เพื่อสร้างกฎความสัมพันธ์

ภาพประกอบ: Python Association Rules Pipeline
Python + mlxtend Pipeline Transactions list of baskets One-hot TransactionEncoder Apriori frequent itemsets association_rules(): support / confidence / lift
ภาพนี้แสดงลำดับการใช้ mlxtend ตั้งแต่ข้อมูลธุรกรรมจนถึงกฎความสัมพันธ์

ติดตั้งไลบรารีที่จำเป็น

pip install pandas mlxtend

ตัวอย่างโค้ดวิเคราะห์ Association Rules ด้วย mlxtend

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules

transactions = [
    ['Milk', 'Bread', 'Eggs'],
    ['Bread', 'Eggs'],
    ['Milk', 'Bread', 'Cookies'],
    ['Milk', 'Eggs'],
    ['Bread', 'Cookies']
]

# 1) แปลงข้อมูลธุรกรรมเป็น One-hot Encoding
te = TransactionEncoder()
te_array = te.fit(transactions).transform(transactions)
df = pd.DataFrame(te_array, columns=te.columns_)

# 2) หา Frequent Itemsets
frequent_itemsets = apriori(df, min_support=0.2, use_colnames=True)

# 3) สร้างกฎความสัมพันธ์
rules = association_rules(
    frequent_itemsets,
    metric="confidence",
    min_threshold=0.7
)

print("Frequent Itemsets")
print(frequent_itemsets)
print("\nAssociation Rules")
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

การแปลผลตาราง Rules

คอลัมน์ความหมาย
antecedentsรายการด้านซ้ายของกฎ หรือเงื่อนไขเริ่มต้น
consequentsรายการด้านขวาของกฎ หรือผลลัพธ์ที่คาดว่าจะเกิดร่วมกัน
supportสัดส่วนธุรกรรมทั้งหมดที่มี Antecedent และ Consequent ร่วมกัน
confidenceโอกาสที่ Consequent เกิด เมื่อ Antecedent เกิด
liftระดับความสัมพันธ์เชิงบวกเมื่อเทียบกับการเกิดแบบปกติ

ตัวอย่างโจทย์ด้านสุขภาพ

นอกจากข้อมูลสินค้า Association Rules ยังประยุกต์กับข้อมูลสุขภาพได้ เช่น วิเคราะห์ความสัมพันธ์ระหว่างความดันสูง ไขมันสูง การสูบบุหรี่ และโรคหัวใจ

import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules

data = pd.DataFrame({
    'ความดันสูง': [True, True, True, False, True],
    'ไขมันสูง': [True, True, False, True, True],
    'สูบบุหรี่': [False, True, True, True, False],
    'โรคหัวใจ': [True, True, False, True, True]
})

frequent_itemsets = apriori(data, min_support=0.4, use_colnames=True)
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.7)

rule_target = rules[
    (rules['antecedents'] == frozenset({'ความดันสูง', 'ไขมันสูง'})) &
    (rules['consequents'] == frozenset({'โรคหัวใจ'}))
]

print(rule_target[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

ต้องการนำ Association Rules ไปใช้กับข้อมูลจริง?

Siam2Dev ช่วยออกแบบชุดข้อมูลธุรกรรม วิเคราะห์ Market Basket สร้าง Dashboard และพัฒนาโมเดลแนะนำสินค้า/คอนเทนต์สำหรับธุรกิจ งานวิจัย และการเรียนการสอน

5.7 การประยุกต์ใช้กฎความสัมพันธ์

กฎความสัมพันธ์สามารถใช้ได้มากกว่าร้านค้าปลีก เพราะแกนหลักคือการค้นหาความสัมพันธ์ของเหตุการณ์หรือรายการที่เกิดร่วมกัน ดังนั้นจึงนำไปประยุกต์ได้ในธุรกิจ การแพทย์ การศึกษา การตลาด เว็บไซต์ และระบบแนะนำสินค้า

Market Basket Analysis

ค้นหาว่าสินค้าใดมักถูกซื้อร่วมกัน เช่น ขนมปังกับนม กาแฟกับน้ำตาล

Promotion

จัดโปรโมชันซื้อคู่ ส่วนลดสินค้าเสริม หรือ Bundle Set

Recommendation

แนะนำสินค้า บทเรียน หรือคอนเทนต์ที่ผู้ใช้มีแนวโน้มสนใจ

Inventory Planning

เตรียมสต็อกสินค้าที่มักขายร่วมกันให้เพียงพอ

การศึกษา

วิเคราะห์พฤติกรรมผู้เรียน เช่น ดูวิดีโอแล้วทำแบบทดสอบ

การแพทย์

ศึกษาความสัมพันธ์ระหว่างอาการ ปัจจัยเสี่ยง และโรค

5.8 กรณีศึกษา

กรณีศึกษา 1: ร้านขายโทรศัพท์มือถือ

ร้านโทรศัพท์มือถือสามารถใช้ Association Rules เพื่อวิเคราะห์ว่าลูกค้าที่ซื้อโทรศัพท์มือถือมักซื้ออะไรเพิ่มเติม เช่น เคส ฟิล์มกันรอย หรือประกันเครื่อง

กฎตัวอย่าง: {โทรศัพท์มือถือ} → {ฟิล์มกันรอย}

  • Support = 35% หมายถึง 35% ของธุรกรรมทั้งหมดซื้อโทรศัพท์และฟิล์มกันรอยร่วมกัน
  • Confidence = 80% หมายถึง ลูกค้าที่ซื้อโทรศัพท์มือถือ 80% ซื้อฟิล์มกันรอยร่วมด้วย
  • Lift = 1.5 หมายถึง การซื้อโทรศัพท์เพิ่มโอกาสซื้อฟิล์มกันรอยมากกว่าปกติ 1.5 เท่า

กรณีศึกษา 2: ร้านค้าปลีกขนาดใหญ่

ธุรกิจค้าปลีกสามารถใช้กฎความสัมพันธ์เพื่อวิเคราะห์พฤติกรรมการซื้อสินค้า ปรับปรุงประสบการณ์ลูกค้า เพิ่มยอดขาย และลดต้นทุน เช่น แนะนำสินค้าที่เกี่ยวข้อง จัดโปรโมชันสินค้าร่วมกัน หรือวางสินค้าให้อยู่ในตำแหน่งที่เหมาะสม

กรณีศึกษา 3: เว็บไซต์และ E-commerce

เว็บไซต์สามารถใช้กฎความสัมพันธ์เพื่อวิเคราะห์เส้นทางการใช้งาน เช่น ผู้ใช้ที่เข้าหน้าสินค้าอาจเพิ่มสินค้าลงตะกร้า หรือผู้เรียนที่เปิดวิดีโอบทเรียนหนึ่งมีแนวโน้มทำแบบทดสอบต่อ จากนั้นระบบสามารถนำผลลัพธ์ไปใช้แนะนำเนื้อหาหรือออกแบบ UX ให้ดีขึ้น

5.9 ข้อจำกัดและแนวทางการตีความ

ไม่ใช่เหตุและผล

กฎ A → B หมายถึงเกิดร่วมกัน ไม่ได้พิสูจน์ว่า A ทำให้ B เกิด

กฎมากเกินไป

หากตั้งค่า Support ต่ำเกินไป อาจได้กฎจำนวนมากและตีความยาก

ข้อมูลไม่สมดุล

Item ที่พบมากอาจทำให้ Confidence สูงโดยไม่สะท้อนความสัมพันธ์พิเศษ

ต้องใช้ความรู้บริบท

ควรเลือกกฎที่นำไปใช้ได้จริงและสอดคล้องกับธุรกิจหรือโจทย์วิจัย

5.10 แบบฝึกปฏิบัติท้ายบท

ให้ผู้เรียนฝึกวิเคราะห์กฎความสัมพันธ์จากข้อมูลธุรกรรมตัวอย่าง โดยทำตามขั้นตอนต่อไปนี้

สร้างชุดข้อมูลตัวอย่าง

กำหนดรายการธุรกรรมอย่างน้อย 10 รายการ เช่น ขนมปัง นม ไข่ กาแฟ น้ำผลไม้

แปลงข้อมูลด้วย TransactionEncoder

แปลง Transaction List เป็น One-hot Encoding

หา Frequent Itemsets

ทดลองปรับค่า Minimum Support เช่น 0.2, 0.3, 0.4 แล้วเปรียบเทียบผลลัพธ์

สร้าง Association Rules

ใช้ metric="confidence" และ min_threshold หลายระดับ เช่น 0.5, 0.7, 0.8

แปลผล Support, Confidence, Lift

เลือกกฎที่น่าสนใจ 3 กฎ และอธิบายว่านำไปใช้เชิงธุรกิจได้อย่างไร

คำถามทบทวน

  1. Association Rules แตกต่างจาก Classification อย่างไร?
  2. ทำไม Confidence สูงอย่างเดียวจึงอาจไม่เพียงพอในการเลือกกฎ?
  3. ค่า Lift มากกว่า 1 มีความหมายอย่างไร?
  4. ถ้ากำหนด Minimum Support ต่ำเกินไป จะเกิดผลอย่างไร?
  5. จงยกตัวอย่างการใช้ Association Rules ในการศึกษา การแพทย์ หรือเว็บไซต์
  6. จงเปรียบเทียบ Apriori, FP-Growth และ Eclat โดยสรุป

5.11 สรุปบทเรียน

กฎความสัมพันธ์เป็นเทคนิคสำคัญในงานเหมืองข้อมูลที่ใช้ค้นหารูปแบบการเกิดร่วมกันของรายการข้อมูล โดยเฉพาะข้อมูลธุรกรรม เช่น ใบเสร็จการซื้อสินค้า ข้อมูลการใช้บริการ หรือพฤติกรรมผู้ใช้ในระบบออนไลน์

สรุปแนวคิดสำคัญ

  • กฎความสัมพันธ์เขียนในรูปแบบ A → B โดย A คือ Antecedent และ B คือ Consequent
  • Support ใช้วัดความถี่ของการเกิดร่วมกันในข้อมูลทั้งหมด
  • Confidence ใช้วัดโอกาสที่ B เกิดเมื่อ A เกิด
  • Lift ใช้วัดว่าความสัมพันธ์นั้นเด่นกว่าการเกิดแบบปกติหรือไม่
  • Apriori Algorithm ใช้ค้นหา Frequent Itemsets จากขนาดเล็กไปใหญ่
  • Python สามารถใช้ mlxtend เพื่อวิเคราะห์ Frequent Itemsets และ Association Rules ได้สะดวก

ข้อควรจำ

Association Rules ไม่ใช่การพิสูจน์เหตุและผล แต่เป็นการค้นหาความสัมพันธ์หรือแนวโน้มการเกิดร่วมกัน ผู้วิเคราะห์ควรใช้ผลลัพธ์ร่วมกับความรู้ด้านธุรกิจ บริบทข้อมูล และการตรวจสอบคุณภาพของกฎก่อนนำไปใช้จริง

คำถามที่พบบ่อยเกี่ยวกับกฎความสัมพันธ์

Association Rules ใช้ค้นหาความสัมพันธ์ของรายการที่เกิดร่วมกัน เช่น สินค้าที่มักซื้อคู่กัน ส่วน Classification ใช้สร้างโมเดลเพื่อจำแนกข้อมูลใหม่ให้อยู่ในกลุ่มที่กำหนดไว้ล่วงหน้า

เพราะ Consequent บางรายการอาจเกิดบ่อยอยู่แล้ว ทำให้ Confidence สูงโดยธรรมชาติ จึงควรดู Lift ร่วมด้วย เพื่อดูว่าความสัมพันธ์นั้นเด่นกว่าการเกิดแบบปกติหรือไม่

Lift มากกว่า 1 หมายถึง Antecedent และ Consequent มีแนวโน้มเกิดร่วมกันมากกว่าการเกิดแบบอิสระ จึงเป็นกฎที่ควรพิจารณาต่อในเชิงธุรกิจหรือการวิจัย

เหมาะกับข้อมูลธุรกรรมหรือข้อมูลเหตุการณ์ที่มีหลายรายการในหนึ่งแถว เช่น ใบเสร็จสินค้า รายการคอร์สที่เรียนร่วมกัน อาการที่พบร่วมกัน หรือพฤติกรรมผู้ใช้เว็บไซต์
อ่านต่อ

เรียนต่อเนื้อหาเหมืองข้อมูลตามลำดับ

เชื่อมโยงบทเรียนบทที่ 1–9 เพื่อให้ผู้เรียนต่อยอดจากพื้นฐานไปสู่ Machine Learning และ Deep Learning