跳到主要內容

關聯規則|除了 Apriori 之外還有什麼?

圖源:Seq2Pat: Sequence-to-pattern generation to bridge patternmining with machine learning. |  AI Magazine Volume 44, Issue 1, Mar 2023, Pages1-130.

 # 前言

筆者在前一篇文章當中提到了關聯規則分析在製造業當中的相關應用場景,而在本篇文章當中,筆者提到一些關聯規則的變體。正如標題的提問:「關聯規則分析,除了 Apriori  之外還有什麼?」,不外乎正是因為 Apriori 演算法的地位就相當於迴歸分析當中的簡單線性迴歸 。因為它實在太經典,理論簡單清晰且樸實無華,談到關聯規則分析的演算法不外乎一定會想到 Apriori。但也因為如此,其實用性必定然不如後續各種改良版的演算法。本篇文章依舊不討論理論細節,只聊聊若考量了更多分析要素的情況下,關聯規則演算法可以怎麼玩?

# 階層與類別

Multidimensional and Multilevel Association Rules。這是資料分析實務上幾乎會存在的議題,以超市商品銷售分析為例,商品的用途分類、品牌、價位、供應商、是否有打折?是否為當季商品?這些類別屬性本身就是重要的統計資訊來源,而有了類別屬性就能夠依此來賦予階層的資料劃分。經典的購物籃分析當中只到啤酒跟尿布,但若我們將上述屬性給納入分析當中,那麼可能資料本身就要經過更嚴謹的標記處理,甚至是調整演算法本身,才能使分析結果更具詮釋性。

相關參考文獻:

# 加權

Weighted Association Rules。另一項資料分析的常見議題,每個 item 的重要性可能不同。例如在制定銷售計劃的時候,高價品、奢侈品、與平價日用品的重要性差異可能很大,故在進行運算的關聯規則分析的時候,會將每個 item 的權重納入考量。這項要素經常也會與階層與類別相互搭配,以使分析結果更貼近實務需求。然而,納入更多的運算要素,同時也意味著更高的運算成本。在資料數量龐大的情況下,需要審慎考慮這些要素。


# 連續數值型資料

Quantitative Association Rules。在簡單的購物籃分析範例當中,我們看到的銷售紀錄可能是「麵包, 鮮奶」,假設某一位消費者一口氣買了兩人份,那麼這筆記錄在關聯規則當中就會表示為:「麵包,  麵包,  鮮奶,  鮮奶」,要馬是「有」或「無」,即程式邏輯當中的二元變數。實際上,我們要處理的原始資料本身可能一個連續的數值區間,例如醫學檢驗的議題上,脈搏、血壓、或者其他的儀器檢測數值。正如前述提到的階層與加權要素一樣,原始資料本身得經過適當地轉換,或者改良演算法本身,才能將關聯規則分析應用在這類資料上。

相關參考文獻:

# 先後次序

Sequential Pattern Mining。單來說就是將 item 集合發生的時間或者先後順序納入分析當中。一樣以超商銷售分析的應用為例,某些商品的銷售記錄本身可能與時間有著高度的關聯,例如熟食、便當,類的商品,會在靠近三餐的時段拉高,這是經典的啤酒與尿布的案例當中沒有提到的重要因素。而許多的資料分析應用當中,一旦把時間或者次序這個要素納進去,複雜度就會急遽性地拉高。好消息是,已經有許多學者針對這項任務提出了對應改良版本的演算法。

相關參考文獻:

# 限制條件

Association Rules with Constraints。在資料探勘方法的子分類上也稱為「序列式特徵探勘」。是指分析實務上,資料當中可能出於某些因素,而包含了一些不合業務邏輯或者物理法則的情況。例如我們知道一般情況下,年齡、價格等等資料的值域範圍應該大於 0、某些的材料實驗數據應該符合其對應的物理與化學法則。通常這一類議題就是在資料前處理階段,就會將不符合限制的資料濾除掉,但也可以將限制條件納入演算法流程當中。

相關參考文獻:

# 其他輔助分析方法

從資料探勘的角度,關聯規則分析只是作為其中一項方法論。實務上,我們通常會交互搭配許多不同的分析方法,以使分析結果更具說服力。例如搭配基於相似度計算的 k-NN 演算法,找出與每一個 item 最相似的前三個 item。或者搭配統計學的相關性分析(Correlation Analysis),展出所有 item 的相關係數矩陣,藉以進一步確認這些分析結果當中的 item 彼此之間是正相關還是負相關。
關聯規則只依照 item 之間共同出現的頻繁程度來找出其是否是否有高度相關性,但不會告訴使用者這些 item 之間的關聯性是正還是負;相反地,統計學上常見的相關係數矩陣,雖然可以明瞭地看出不同變數(item)之間關連性是正還是負,但不會顯示這兩個變數(item)同時有多頻繁同時出現在資料集當中。

相關參考文獻:

# 程式實作工具

講了一堆關聯規則分析如何變形,當然也要提一下實作工具的部分,筆者本身是以Python 作為主要開發程式語言,故以下僅整理幾個較熱門、或者方法論上較新穎的套件工具。

# 尾聲

本文快速導覽過幾個關聯規則分析十,可能會需要考量到的分析要素,並且提到有哪些程式實作工具能夠使用。單就理論而言,上述所提到的分析要素,都可以透過適當地資料前處理流程後,通通透過 apriori 來實作。但正是因為 apriori 本身的運算效率不好,而納入更多的分析要素之後,必然又會使運算成本增加,且可能使分析結果不是那麼值觀,反而造成使用上的困難。
例如:
如果你把所有的類別、階層、時間次序等因素通通扁平化處理,你其實有機會透過 apriori 來找長得像以下這樣的分析結果 🎃:
「食品_泡麵_維力_五包一袋裝_未促銷用品_衛生紙_五月花_十包入_促銷折扣」
或者
「用品_個人衛生_保險套_岡本_001,食品_酒類_啤酒_SUNMAI_晃晃橘啤」
想必這種直接將資料維度扁平化來跑 
apriori 的結果太不利於分析使用了,才要有一些改良版的演算法,來更適當地處理對應的資料分析需求!

# 題外話

讀者們可能會問(假設各位有看到這邊的話):「在這個全民都在生程式 AI、全民都在 LLM 的時代,大家都希望一些簡單的資料或指令餵進去,一鍵就能產出棒棒的結果,怎麼還有人在談關聯規則這種老東西?」正是因為,即便是在強大的人工智慧模型,也不太可能只透過一些簡單的指令或沒處理過的資料,一鍵就能產出可用的結果。這不僅是筆者本身在電子製造業從事資料科學應用開發的實際體悟,更是許多產業趨勢分析機構的調查結果。
  1. 2023 台灣產業 AI 化調查結果出爐!企業員工整體理解程度偏低、企業 AI 化指數拉大|Meet 創業小聚
  2. IBM 發布《2023 全球企業 AI 科技使用現況》調查結果 - Mar 15, 2024
  3. 人工智慧應用觀察及展望 - KPMG Taiwan | 12 三月 2024
若能完好地將業務邏輯轉換到資料與求解架構當中,結合多種不同基礎方法的方案架構,其實用性可能還比所謂最新、最炫砲、開箱即用的演算法更好,建構與維護成本也可能也更低 畢竟又不是所有公司都買得起一堆 Nvidia 工業伺服器
就算真的要以「一些簡單的資料或指令餵進去,一鍵就能產出棒棒的結果」這個目標邁進,那麼也是需要我們這些相關技術從業人員,花時間花功夫把一些軟硬體基礎給建立起來,才有機會慢慢地朝向這個夢幻的目標邁進 雖然筆者覺得這樣的使用者認知原本就太過不切實際了


# 其他參考資料