AI時代系列(3) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
48/100 第五週:非監督學習
48. 關聯規則學習(Apriori, FP-Growth) 🛍 「買了 A,可能會買 B」,用來做市場籃分析!
🛍 關聯規則學習(Apriori, FP-Growth)
「買了 A,可能會買 B」── 探索購物習慣,應用於市場籃分析!
________________________________________
🔎 一、什麼是關聯規則學習(Association Rule Learning)?
• 一種典型的非監督學習技術
• 從大量交易或行為資料中挖掘「物品間的關聯性」
• 核心目標:找出「如果 A 發生,B 也可能發生」的潛在規則
________________________________________
🧠 二、關鍵名詞解釋(務必理解)
支持度(Support): 同時購買 A 與 B 的機率,出現頻率高才值得關注
信賴度(Confidence): 購買 A 的顧客中,有多少比例會買 B(條件機率)
提升度(Lift): A 發生後購買 B 的可能性提升了多少(>1 表示正相關)
✅ 範例:{牛奶} → {麵包}
• Support = 15%
• Confidence = 75%(買牛奶的人 75% 會買麵包)
• Lift = 1.8(正相關)
________________________________________
📈 三、經典應用場景
✅ 超商、電商購物分析(Market Basket Analysis)
✅ 推薦系統(Buy Together)
✅ 保險理賠詐欺偵測
✅ 醫療診斷(症狀關聯分析)
✅ 網路點擊流分析(哪些頁面常一起被看)
________________________________________
🛠 四、Apriori 演算法介紹
• 1970 年代提出的經典關聯規則演算法
• 核心邏輯:若一個集合是頻繁的,則其子集也必定頻繁(逐層遞增)
• 步驟:
1️⃣ 產生頻繁項目集(Frequent Itemsets)
2️⃣ 計算支持度
3️⃣ 過濾低支持度的項目
4️⃣ 生成關聯規則並計算 Confidence 和 Lift
________________________________________
🪄 五、FP-Growth(Frequent Pattern Growth)優化版
✅ 解決 Apriori 需要反覆掃描資料的效率問題
✅ 利用 壓縮的 FP-Tree 結構 儲存資料
✅ 遞迴地產生頻繁項目集,速度大幅提升
✅ 適用於資料量大或商品項目多的場景
_______________________________________
_
💻 六、Python 簡易範例(mlxtend 套件)
python
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
# 假設一份簡單的購物交易紀錄
dataset = pd.DataFrame([
['牛奶', '麵包', '尿布'],
['可樂', '尿布', '啤酒'],
['牛奶', '尿布', '啤酒', '可樂'],
['麵包', '牛奶', '尿布'],
['麵包', '牛奶', '可樂']
])
# One-hot 編碼
oht = pd.get_dummies(dataset.apply(pd.Series).stack()).sum(level=0)
# Apriori 挖掘
frequent_items = apriori(oht, min_support=0.4, use_colnames=True)
rules = association_rules(frequent_items, metric="lift", min_threshold=1)
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])
這段程式碼展示了如何使用 mlxtend 套件對購物交易資料進行 關聯規則分析,具體流程如下:
首先,利用 pandas 建立了一份交易紀錄,每列代表一筆購物行為,接著透過 apply + stack 將每筆交易攤平成一欄,再用 get_dummies() 將商品轉換為 one-hot 編碼,並用 sum(level=0)(或 groupby(level=0).sum() 替代)彙總為每筆交易對各商品的有無紀錄。
接下來,使用 apriori() 函數以最小支持度 0.4(表示商品組合至少出現在 40% 的交易中)找出頻繁項目集,再透過 association_rules() 函數挖掘出這些項目集之間的關聯規則,並以 lift >= 1 為條件篩選。
最後,輸出包含前件 (antecedents)、後件 (consequents)、支持度 (support)、信賴度 (confidence) 與提升度 (lift) 的結果,用於判斷哪些商品有強關聯性,適合應用於行銷推薦或購物籃分析。
✅ 分析結果:
第 0 筆交易:牛奶、麵包、咖啡 ✅
第 1 筆交易:牛奶、尿布 ✅
第 2 筆交易:啤酒、尿布、麵包 ✅
________________________________________
📊 七、Apriori vs. FP-Growth 比較
Apriori 與 FP-Growth 是兩種常見的關聯規則挖掘演算法。Apriori 採用逐層擴展的方式,不斷重複掃描資料庫以找出頻繁項目集,邏輯簡單但效率較低,較適合處理小型資料;相對地,FP-Growth 則透過構建壓縮結構的 FP-Tree,利用遞迴方式快速生成模式,運算效率高,更適合大規模資料分析。然而,Apriori 的主要缺點是需大量計算與多次掃描資料,而 FP-Growth 雖快,但其樹狀結構較複雜,記憶體需求也較高。
________________________________________
🧠 八、關聯規則應用亮點
✅ 商品組合推薦(如蝦皮/淘寶「常一起買」)
✅ 廣告投放組合優化
✅ 跨品類行為分析(買嬰兒用品→買啤酒)
✅ 健康醫療決策輔助(症狀、藥品關聯)
________________________________________
📌 九、結論與精華
✔ 關聯規則學習是電商、零售、行銷的核心技術之一
✔ 幫助企業精準洞察消費者購物習慣,設計更有效的行銷策略
✔ FP-Growth 解決大數據下效率瓶頸,成為產業實務主流
________________________________________
📌 一句話精華
🛍 關聯規則學習 = 讓 AI 幫你找出「買了A,也會買B」的黃金組合,全面提升銷售力!
________________________________________
如果你需要: