關聯規則挖掘

2021-08-09 03:04:42 字數 3036 閱讀 9964

關聯規則反映事物之間的相互依存性和關聯性。如果事物之間存在一定的關聯,那麼我們就可以通過乙個事物去**另乙個事物。我們要挖掘大量資料中人們感興趣的,有價值的資訊,包括概念,規則,規律等。

關聯規則:發現資料中的規律

- 超市中什麼產品會⼀起購買? (組合推薦)

- 顧客在買了⼀臺pc之後下⼀步會購買?(搭配推薦)

- 哪種dna對這種藥物敏感?

- 我們如何⾃動對web⽂檔進⾏分類?

- 論⽂查重?

設i=為所有專案的集合, d為事務資料庫, 事務t是⼀個專案⼦集(t⊆i)。 每⼀個事務具有唯⼀的事務標識tid。 設a是⼀個由專案構成的集合, 稱為項集。 事務t包含項集a, 當且僅當a⊆t。 如果項集a中包含k個專案, 則稱其為k項集。

項集a在事務資料庫d中出現的次數佔d中總事務的百分⽐叫做項集的⽀持度。 如果項集的⽀持度超過⽤戶給定的最⼩⽀持度閾值, 就稱該項集是頻繁項集(或頻集)。

關聯規則是形如x⇒y的邏輯蘊含式, 其中x⊂i, y⊂i, 且x∩y=∅

如果事務資料庫d中有s%的事務包含x∪y, 則稱關聯規則x⇒y的⽀持度為s%

關聯規則的信任度為support (x∪y)/support (x)

也就是:

support (x⇒y)=p (x ∪y)

confidence (x⇒y)=p (y | x)

強關聯規則:⽀持度和信任度分別滿⾜⽤戶給定閾值的規則。

例: id 購買的商品

2000 a,b,c

1000 a,c

4000 a,d

5000 b,e,f

設最⼩⽀持度為50%, 最⼩可信度為 50%, 則可得到

解: 如上有四個事物,其中有兩個事物同時包含ac,則

support (a⇒c)=support (c⇒a)=p(a∪c)=2/4 * 100% = 50%

confidence(a⇒c) = p (c| a)=support (a∪c)/support (a)=2/3 * 100% = 66.6%

confidence(c⇒a) = p (a| c)=support (c∪a)/support (c)=2/2 * 100% = 100%

a ⇒ c (50%, 66.6%)

c ⇒ a (50%, 100%)

apriori演算法:apriori演算法命名源於演算法使⽤了頻繁項集性質的先驗(prior) 知識。

apriori演算法將發現關聯規則的過程分為兩個步驟:

通過迭代, 檢索出事務資料庫中的所有頻繁項集, 即⽀持度不低於⽤戶設定的閾值的項集;

利⽤頻繁項集構造出滿⾜⽤戶最⼩信任度的規則。

挖掘或識別出所有頻繁項集是該演算法的核⼼, 佔整個計算量的⼤部分。

apriori的性質:

性質1: 頻繁項集的所有⾮空⼦集必為頻繁項集。(頻繁項集的子集在專案集中所佔比例一定大於等於)

性質2: ⾮頻繁項集的超集⼀定是⾮頻繁的。(非頻繁項集的超集在專案集中所佔比例一定小於等於)

apriori的步驟:

連線步: 為找lk,通過將lk-1與⾃⾝連線產⽣候選k項集的集合

剪枝步: ck是lk 的超集, 也就是說, ck的成員可以是也可以不是頻繁的, 但所有的頻繁k項集都包含在ck中。任何⾮頻繁的(k-1) 項集都不是頻繁k項集的⼦集。

偽**:

l1=;

for(k=2;lk-1≠∅;k++) do begin

ck=apriori_gen(lk-1); //新的候選頻繁項集

for all transactions t∈d do begin //掃瞄計數

ct=subset(ck,t); //得到t的⼦集, 它們是候選

for all candidates c∈ct do

c.count++;

end;

lk=

end;

answer= uk lk

例: 現有a、 b、 c、 d、 e五種商品的交易記錄表, 試找出三種商品關聯銷售情況(k=3), 最小支援度=50%。

交易號 商品**

100 a c d

200 b c e

300 a b c e

400 b e

解: k=1 時 c1

項集 支援度

{a} 50%

{b} 75%

75%

{d} 25%

{e} 75%

去掉支援度小於50%的 得到l1

項集 支援度

{a} 50%

{b} 75%

75%

{e} 75%

k=2時 c2

項集 支援度

{a,b} 25%

{a,c} 50%

25%

{b,c} 50%

{b,e} 75%

{c,e} 50%

去掉支援度小於50%得到l2

項集 支援度

{a,c} 50%

{b,c} 50%

{b,e} 75%

{c,e} 50%

k=3時 從k2中求可用來計算的三項集

{a,c} +

{a,c} + 超過三項

{a,c} +

{b,c} +

{b,c} +

{b,e} +

c3 25%

25%

50%所以l3 50%

apriori演算法的不⾜:

ck中的項集是⽤來產⽣頻集的候選集.

最後的頻集lk必須是ck的⼀個⼦集。

ck中的每個元素需在交易資料庫中進⾏驗證來決定其是否加⼊lk

驗證過程是效能瓶頸

交易資料庫可能⾮常⼤

⽐如頻集最多包含10個項, 那麼就需要掃瞄交易資料庫10遍

需要很⼤的i/o負載。

關聯規則挖掘

直接用例項來解釋概念更清楚一些,加入資料庫中存在10條交易記錄 transaction 具體如下表所示 交易id tid 購買商品 items b bread c cream m milk t tea t01b c m t t02b c m t03c m t04m t t05b c m t06b t...

關聯規則挖掘

1.基本概念 關聯規則挖掘是指尋找給定資料集中項之間的有趣關聯或相關聯絡。可以幫助許多決策的制定,如分類設計 交叉購物和賤賣分析。典型的例子就是購物籃分析。2.關聯規則的步驟 1 找出所有的頻繁項集 這些項集出現的頻繁性至少和預定義的最小支援數一樣 2 由頻繁項集產生強關聯規則 這些規則必須滿足最小...

關聯規則挖掘

概念 支援度 某個商品組合出現的次數與總次數之間的比例 置信度 置信度是個條件概念,就是說在 a 發生的情況下,b 發生的概率是多少 提公升度 衡量 a 出現的情況下,是否會對 b 出現的概率有所提公升 提公升度 a b 置信度 a b 支援度 b 缺點 cba 演算法 gsp 演算法 aprior...