← Back to list

วิเคราะห์พฤติกรรมลูกค้าด้วย Association Rules แบบ Step-by-Step ด้วย Python

การเข้าใจพฤติกรรมของลูกค้าไม่ใช่แค่เรื่องของสัญชาตญาณหรือความรู้สึกอีกต่อไป ในยุคที่ธุรกิจมีข้อมูลมากมาย การใช้ เทคนิควิเคราะห์ข้อมูล (Data…

Nattawut Chayauam · 2025-06-07 16:13 · 0 claps · 2.7 min read
#market-basket-analysis #data-mining #data-analysis #apriori
Open on Medium ↗
Wiki topics: CRY · Crypto & Web3 ECO · Economy · General 🔒 · Cybersecurity

วิเคราะห์พฤติกรรมลูกค้าด้วย Association Rules แบบ Step-by-Step ด้วย Python

การเข้าใจพฤติกรรมของลูกค้าไม่ใช่แค่เรื่องของสัญชาตญาณหรือความรู้สึกอีกต่อไป ในยุคที่ธุรกิจมีข้อมูลมากมาย การใช้ เทคนิควิเคราะห์ข้อมูล (Data Analytics) เพื่อหาความเชื่อมโยงระหว่างสินค้าแต่ละชิ้นในตะกร้าของลูกค้า จึงกลายเป็นเครื่องมือที่ทรงพลัง โดยเฉพาะเทคนิคที่เรียกว่า Market Basket Analysis หรือ Association Rule Mining

ในบทความก่อนหน้านี้ เราได้ปูพื้นฐานไปแล้วว่า Market Basket Analysis คืออะไร และมันช่วยให้เรารู้ว่าลูกค้ามักจะซื้ออะไรคู่กับอะไรได้อย่างไรบ้าง ซึ่งในบทความนี้ เราจะพาทุกคนลงมือทำจริง เรียนรู้การวิเคราะห์ Association Rules แบบ Step-by-Step ด้วย Python ตั้งแต่

  • เตรียมข้อมูล
  • ใช้อัลกอริธึม Apriori
  • หา Frequent Itemsets
  • สร้างกฎความสัมพันธ์ (Rules)

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

Step 1 : เริ่มต้นด้วยการเตรียมข้อมูล (Data Preparation)

ก่อนที่เราจะใช้เทคนิควิเคราะห์ใดๆ ข้อมูลของเราต้องอยู่ในรูปแบบที่ถูกต้องเสียก่อน ในไฟล์ Notebook นี้ เราเริ่มต้นด้วยการใช้ pandas ซึ่งเป็น Library ยอดนิยมในการจัดการข้อมูลเพื่ออ่านไฟล์ orders_data_market_basket_analysis.csv

ข้อมูลดิบของเราเป็นรายการสั่งซื้อยาวๆ แต่หัวใจของ Market Basket Analysis คือ ตะกร้า หรือ Transaction ดังนั้นขั้นตอนที่สำคัญที่สุดคือการจัดกลุ่มข้อมูลตาม Order ID เดียวกัน จากนั้นรวมรายการสินค้า (Product Subcategory) ทั้งหมดในคำสั่งซื้อนั้นๆ ให้มาอยู่ในรูปแบบของลิสต์ หรือ "ตะกร้า" หนึ่งใบนั่นเอง

raw data ของ orders_data_market_basket_analysis.csv

raw data ของ orders_data_market_basket_analysis.csv

แปลงข้อมูลจากในรูปของ transaction ให้อยู่ในรูปของ basket

แปลงข้อมูลจากในรูปของ transaction ให้อยู่ในรูปของ basket

เมื่อเราได้ข้อมูลตะกร้าสินค้ามาแล้ว เราต้องแปลงมันให้อยู่ในรูปแบบที่อัลกอริธึมจะเข้าใจได้ นั่นคือตารางที่แต่ละแถว(row)แทน 1 ตะกร้า และแต่ละคอลัมน์แทนสินค้า 1 ชนิด ซึ่งในโค้ดจะใช้ TransactionEncoder จาก mlxtend เพื่อทำสิ่งนี้ โดยผลลัพธ์จะเหมือนกับตารางเช็กลิสต์ขนาดใหญ่ที่บอกว่าในแต่ละตะกร้ามีสินค้าอะไรอยู่บ้าง (True) หรือไม่มี (False) นั่นเองครับ

ข้อมูลแต่ละ basket โดยแบ่งตามชนิดของสินค้า

ข้อมูลแต่ละ basket โดยแบ่งตามชนิดของสินค้า

Step 2 : Apriori Algorithm (เฟ้นหาสินค้าที่มักถูกซื้อพร้อมกัน)

เมื่อข้อมูลพร้อมแล้ว ก็ถึงหน้าที่ของ Apriori Algorithm ที่จะมาช่วยเราค้นหา “ชุดสินค้าที่ถูกซื้อพร้อมกันบ่อยๆ หรือที่เรียกกันว่า (Frequent Itemsets) กันครับ

โดยหลักการทำงานของ Apriori คือการใช้ค่าที่เรียกว่า Support ซึ่งเปรียบเสมือน “คะแนนความนิยม” ของชุดสินค้านั้นๆ

  • Support : คือสัดส่วนของจำนวนตะกร้าที่มีชุดสินค้านั้นๆ อยู่ ต่อจำนวนตะกร้าทั้งหมด เช่น ถ้ามี Support ของ {ขนมปัง, นม} เท่ากับ 0.1 หมายความว่า 10% ของตะกร้าทั้งหมดมีการซื้อขนมปังและนมพร้อมกัน

ในโค้ด เรากำหนด min_support=0.01 (หรือ 1%) เป็นการบอกอัลกอริธึมว่าเราสนใจเฉพาะชุดสินค้าที่ฮิตจริงๆ คือต้องปรากฏในตะกร้าอย่างน้อย 1% ขึ้นไปเท่านั้น ชุดสินค้าที่ไม่ค่อยมีคนซื้อพร้อมกัน เราจะยังไม่ให้ความสำคัญ

Apriori alogorithm to find freq itemmsets (min_sup = 1%)

Apriori alogorithm to find freq itemmsets (min_sup = 1%)

ค่า support ที่ได้จากการวัด 2-pair itemset

ค่า support ที่ได้จากการวัด 2-pair itemset

Top 10 Frequent 1-Itemsets by Support

Top 10 Frequent 1-Itemsets by Support

Top 10 Frequent 2-Itemsets by Support

Top 10 Frequent 2-Itemsets by Support

Top 3 Frequent 3-Itemsets by Support

Top 3 Frequent 3-Itemsets by Support

Step 3 : สร้างกฎความสัมพันธ์ (Generating Association Rules)

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

  1. Support : ความนิยมรวมๆ ของชุดสินค้า
  2. Confidence : ความน่าจะเป็นที่ลูกค้าซื้อ A แล้วจะซื้อ B ด้วย เช่น Confidence(A → B) = 0.6 หมายถึง 60% ของลูกค้าที่ซื้อ A จะซื้อ B ด้วย
  3. Lift : คือค่าที่สำคัญที่สุดในการวิเคราะห์นี้โดย Lift จะบอกเราว่า การที่ลูกค้าซื้อสินค้า B หลังจากซื้อ A ไปแล้วนั้น สูงกว่าโอกาสที่ลูกค้าจะซื้อสินค้า B แบบปกติ (โดยไม่สนใจ A) กี่เท่า โดยที่
  • Lift > 1: หมายความว่าการซื้อ A ช่วยส่งเสริมการซื้อ B จริงๆ (น่าสนใจ)
  • Lift = 1: หมายความว่าการซื้อ A และ B ไม่เกี่ยวข้องกันเลย (อาจเป็นแค่เรื่องบังเอิญ)
  • Lift < 1: หมายความว่าการซื้อ A อาจลดโอกาสการซื้อ B (อาจเป็นสินค้าทดแทนกัน)

association_rules โดยการตั้ง lifi > 1

association_rules โดยการตั้ง lifi > 1

ในโค้ด เราจะใช้ฟังก์ชัน association_rules โดยกำหนดให้กรองเฉพาะกฎที่มีค่า lift มากกว่า 1 ขึ้นไป เพื่อให้ได้เฉพาะกฎที่มีความสัมพันธ์กันจริงๆ

Step 4 : ตีความผลลัพธ์และนำไปใช้จริง (Interpreting the Results)

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

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

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

ตัวอย่าง association rules

  • Rule : {Storage} -> {Binders, Paper}
  • Lift : 1.24

ซึ่งสามารถตีความได้ว่า : ถ้าลูกค้าซื้อสินค้าหมวดที่เก็บเอกสาร (Storage) แล้ว พวกเขามีแนวโน้มที่จะซื้อสินค้าหมวดแฟ้ม (Binders) และกระดาษ (Paper) พร้อมกันไปด้วย สูงกว่าปกติถึง 24%” (มาจากค่า Lift 1.24 คือสูงกว่าปกติ 0.24 หรือ 24%)

top 10 rules by lift

top 10 rules by lift

กล่าวโดยสรุปแล้วนั้น การทำ Market Basket Analysis ด้วย Python ไม่ใช่แค่เรื่องของการวิเคราะห์ข้อมูล แต่คือการเปลี่ยนลิสต์รายการสั่งซื้อธรรมดาให้กลายเป็นข้อมูลเชิงลึกที่ธุรกิจนำไปใช้ได้จริง ไม่ว่าจะเป็นการออกแบบโปรโมชัน ระบบแนะนำสินค้า หรือกลยุทธ์การจัดร้าน ทุกอย่างเริ่มต้นจากการเข้าใจว่าลูกค้าซื้ออะไรพร้อมกับอะไรและซื้อทำไมนั่นเองครับ ;>

Source


메타데이터
post_id
9d0bfbbd3bd2
slug
วิเคราะห์พฤติกรรมลูกค้าด้วย-association-rules-แบบ-step-by-step-ด้วย-python-9d0bfbbd3bd2
url
https://medium.com/@4ommyx/%E0%B8%A7%E0%B8%B4%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%B2%E0%B8%B0%E0%B8%AB%E0%B9%8C%E0%B8%9E%E0%B8%A4%E0%B8%95%E0%B8%B4%E0%B8%81%E0%B8%A3%E0%B8%A3%E0%B8%A1%E0%B8%A5%E0%B8%B9%E0%B8%81%E0%B8%84%E0%B9%89%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-association-rules-%E0%B9%81%E0%B8%9A%E0%B8%9A-step-by-step-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-python-9d0bfbbd3bd2
canonical_url
https://medium.com/@4ommyx/%E0%B8%A7%E0%B8%B4%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%B2%E0%B8%B0%E0%B8%AB%E0%B9%8C%E0%B8%9E%E0%B8%A4%E0%B8%95%E0%B8%B4%E0%B8%81%E0%B8%A3%E0%B8%A3%E0%B8%A1%E0%B8%A5%E0%B8%B9%E0%B8%81%E0%B8%84%E0%B9%89%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-association-rules-%E0%B9%81%E0%B8%9A%E0%B8%9A-step-by-step-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-python-9d0bfbbd3bd2
author_url
https://medium.com/@4ommyx
status
ok
fetched_at
2026-06-13 07:35:29