解讀關聯規則

2021-08-26 09:12:43 字數 4447 閱讀 1373

***

很久以前,研究資料探勘的康師傅告訴一種應用,叫做交叉銷售。它是用來向使用者推薦目標業務的。背後的原理是,通過分析現有使用者的業務使用組合,對於那些常常一同&172;出現的業務,這就是一種規則。譬如有一對業務總是出現,只要有其中一種業務的,70%的可能會有另一種業務。就可以對那些只使用一種業務的推薦另一種業務,因為&172;這個規則的緣故,照理來說,成功率是很高的。

聽起來很酷,我想這應當就是關聯規則唄,資料探勘似乎就是靠它被渲染起來的。那個經典的啤酒尿布的故事,可不也就是如此,發現買啤酒的和買尿布的同時出現的機率&172;很高。這種規則,通過人的大腦,還真的不容易分辨出來。

這不,眼前擺在我面前的是乙份產品關聯分析的結果,我要從中找出一些有意思的規則出來。這是我的第一次,雖然以前也跟人噴過關聯規則,但自己從未解讀過這種結果&172;。

雖然名稱叫做"產品關聯分析",但看起來,更應該叫做"業務屬性關聯分析"。上面的例子當中是兩項業務之間的關聯,或者是購買物品之間的。當然,我們也可以將"&172;訂購xx業務",或者"購買啤酒"當作使用者的屬性,不過屬性的含義太含糊。此處,我們的產品關聯分析中,將年齡、性別、客戶級別、主叫多(大於平均次數)等等。&172;可以看出來,這種和"購買啤酒"的屬性多少還是有些差別的,但差別在什麼地方,還真的難以用言語表達出來。

在關聯分析結果中,仍然用"業務"這個詞來表示上面提到的"屬性",將"年齡:19-26歲之間"作為一種業務多少有些奇怪。

既然是關聯,就得考慮兩種業務,業務

一、業務二。據說這種叫做單維關聯規則,還有一種多維關聯規則。單維的關聯規則表示為,如果a那麼b;而多維的可以表示為,&172;如果a並且b,那麼c。明顯,多維關聯分析的複雜度要高一些。看來我們的建模人員選擇了一種省事的做法。

每條關聯規則,都有一些指標來衡量是否有效,或者成為"強度"吧。這裡就是通過幾個指標來衡量的。支援度、置信度和lift。

支援度是指使用兩種業務(或稱具有兩種屬性,下面也都可以用"具有屬性"一詞代替"使用業務")的佔總分析人數的比例。

置信度是指使用業務一,有同時使用業務二的,佔使用業務一人數的比例。

lift,是指在業務一中使用業務二的比例,比在總分析人群中使用業務二的比例提公升了多少倍。

可見如果lift值高,那麼這個規則就真的是那麼回事。如果a,那麼b大多數情況是成立的。但也要考慮置信度阿,因為如果業務一和業務二關聯性本身就是非常強,&172;甚至是一種依賴關係的話,這個規則也就沒什麼意義。例如業務一為"使用gprs",業務二為"使用手機報紙",置信度=1,這條規則當然也就沒什麼意義。那麼是&172;否置信度越小約好呢?好像也不是這樣的,越小,說明業務

一、二關聯程度並不高。因此,恐怕這個置信度得取乙個合適的區間。當然,這個區間範圍是多少,我是沒有譜&172;的。另外還得考慮支援度,如果同時使用兩種業務的比例實在太小,那麼這條規則能不能說明問題?即便後面lift能夠達到10倍,甚至幾十倍,恐怕也是因為基數小&172;的原因。

將這幾個指標的含義弄明白,接下來就是要將有意義的規則挑選出來。可擺在面前的關聯數有幾千條之多,讓人頭大。

qing 20060724

上回書說到關聯規則的解讀中,幾項指標的含義。

要知道幾十種業務一和幾十種業務二進行兩兩關聯,會有多少種可能嗎?應該用中學的"組合"來計算吧。具體公式是怎麼回事已經遺忘,不過看看擺在面前的關聯分析結&172;果就知道這個量會多大了。

拖動滾動條,拖了很久,總共是八千多行,我的嗎呀,怎麼從中分辨出有意義的規則呢?

很自然地,我想到應該是過濾掉無意義的,可何謂無意義?要明確意義,就得明確目標。最後我們拿到這個結果是要用來指導營銷的,對什麼樣的人推薦什麼樣的業務。那&172;麼就將業務一當作是"什麼樣的人"使用的業務,而業務二,就是要推薦的業務。

顯然,如果是這樣的,某些"屬性"就不能作為業務二的。譬如年齡、性別、超常使用長途等屬性,這些屬性看起來是使用者固有的,不是通過推薦而改變的。因此,顯然可&172;以將這些屬性作為業務二的規則去掉。

為了區別,可以對每條規則增加乙個標籤,例如用"c1"表示剛才那種情況,表示業務二不適合推薦,去掉。這一步已經能夠忽略很多的規則。接著再考慮還有哪些是可&172;以忽略掉的。

作為業務一,是表示使用該業務或具備該屬性的目標人群。可是否有些屬性是強加給使用者,而不是自然選擇的結果呢?例如有一種"手機郵箱"的業務,很多營銷案中會將&172;它**進去,結果大部分使用者都有這個屬性。其實這種屬性並不能表明使用者的業務特性,應當去除。標記成"c2"吧。

第三步,再考慮lift值的情況。lift值是指在業務一中使用業務二的比例,比在總分析人群中使用業務二的比例提公升了多少倍。如果lift<1,意味著這條規&172;則沒有作用,業務二和業務一的關聯很弱,甚至不比平均水平高。不僅如此,我還狠了狠心,將lift<3的都忽略,認為這些規則都是不值一提的,標記成"c4"。

第四步,考慮confidence,它是指使用業務一,有同時使用業務二的,佔使用業務一人數的比例。其實可以如果業務

一、業務二對調一下,lift是不變的,&172;而confidence不同。如果confidence=1,表示業務一完全依賴業務二,沒有必要去根據業務一去推薦業務二。因此,可以設定乙個confide&172;nce的最高閥值,也是一狠心下,設定為0.6。要注意,上面將lift<3和confidence<6都是一種主觀的行為,沒什麼根據。

至於是否要為confidence設定乙個最小閥值,我不知道該不該設,但此時,有效的關聯規則似乎已經很少了,達到可以閱讀的情況,於是便住手。將剩下的規則&172;都看成有意義的。

不過最好還得分得再細一些,我想。

對於每種待推薦的業務,應該優先考慮再哪些目標人群呢?

對於某種目標人群,應該優先考慮推薦什麼業務呢?

這簡單,第一種情況。按照業務二公升序、lift降序排序,將每個業務二的規則,標記出前三名和前三名之外。例如"p0"表示前三名,"p1"表示之外的。同樣,&172;第二種情況,按照業務一公升序、lift降序排列,標記前三名和前三名之外。因為前面已經有"p0"/"p1"的標籤,因此對於前三的,在原有標籤後面加上"p2&172;",三名之外的,加上"p3"。如此,就會有四種組合的標籤。

如果要檢視最優先考慮的規則,就看"p0p2"的標籤好了,此時已經非常少,一屏一目了然。

似乎是次不賴的解讀,完美的第一次,我很得意地看著這份結果,有些沾沾自喜。

qing 20060725

上回書說到面對幾千條的規則,如何層層過濾,抓住重點。

不過是自以為抓住重點了。但只要和產品關聯分析最終目標一聯絡,就發現,上回的方法有些不實用。我們的目標是什麼,不是沒有駐牙,是要推薦業務。可經過一番過濾&172;,將自認為沒有意義的規則去掉,有些業務自然也就看不到。

在拿著這份結果跟人討論的時候,無法用標籤字段僅僅顯示"p?p?"的規則,這只是一小部分。別人還是要針對每種業務二,看那些業務一跟其關聯程度大。

可能一開始我就走錯了路。

抓住重點的想法是沒錯的。但既然是推薦某種業務,那就將他們作為業務二的規則挑選出來,這樣豈不是更能抓住重點?只是因為一開始並不知道使用者最關注的是哪些業務&172;,因此做了泛泛的過濾。特別是在對confidence和lift的過濾中。

上午在客戶處交流這份關聯分析結果。

預先設定的那個標籤字段幾乎沒有用上。倒是有位女士提出對這個欄位的疑問,也不想過多解釋,只是說標明了規則的強弱。最後還是取了大約三四種業務二,一一地分析&172;每條規則。

沒有辦法去給confidence或lift定義乙個閥值,以區別強規則和弱規則。因為,有很多屬性之間的是相似的,統計口徑可能也是相差無幾,譬如"使用wa&172;p"和"使用wap娛樂",這兩者有一種隸屬關係。最後和業務二關聯的lift很高,但顯然,只需要取乙個就作為選擇目標使用者的條件就可以了。但很多這樣的有些&172;重複的屬性會導致理解起來困難。

我想,在設計關聯分析的輸入變數時,是需要考慮一下變數之間的明顯關係,例如是否有依賴關係,甚至是否表示同乙個業務含義。

曾有個想法——對於業務

一、業務二看起來沒有任何關聯的,但資料反應出來的卻關聯很大,這種規則才是最有意義的。對於那種不用資料看就知道存在依賴關係的關聯,&172;沒有必要用資料探勘來做。因此,上回將confidence值太高的去掉也就是這個原因,因為明顯表現了一種依賴關係。經典案例中,啤酒和尿布看起來實在是關聯&172;不大,可這種規則才是吸引人的。

經過和客戶的討論,上回自認為不錯的方法實在不是個好點子。關聯規則的解讀不能只從資料結果看,必須得結合業務經驗來閱讀(不過這聽起來像是廢話)。

bi-season』s life 20060802

聯規則的解讀不能只從資料結果看,必須得結合業務經驗來閱讀.(雖然是大的廢話,但是這點我比較贊同.)我研究fp-growth演算法做關聯規則挖掘,後來試用&172;sqlserver

2005,當支援度置信度設定較低的時候,生成的關聯規則那個多啊,後來提高了這兩個變數的值,靠,挖掘出來的規則我都看不懂.慢慢研究發現,原來由於對業務理&172;解的不夠,在做etl的時候,沒有刪除重複資料.那個鬱悶啊.

現在看來,大多數的關聯規則挖掘都要牽扯到多維多層的概念,怎麼做?如何定義維度,層次?都要跟業務結合的比較緊密.還有,就是增量更新後的關聯規則挖掘問題(&172;這是個技術問題,不知道現在哪個工具支援關聯規則增量更新這個功能,慶兄知否?),都不容易.

關聯規則(一)

關聯規則的發現是指找出支援度大於等於最小支援度 minsup 並且置信度大於最小置信度 minconf 的所有 規則。對於關聯規則分析來說,主要分為兩個步驟 1.找出頻繁項集 找出滿足最小支援度閾值的所有項集。2.規則的產生 從第一步中找出置信度大於最小置信度閾值的規則。一 基本定義 1.支援度 s...

關聯規則挖掘

關聯規則反映事物之間的相互依存性和關聯性。如果事物之間存在一定的關聯,那麼我們就可以通過乙個事物去 另乙個事物。我們要挖掘大量資料中人們感興趣的,有價值的資訊,包括概念,規則,規律等。關聯規則 發現資料中的規律 超市中什麼產品會 起購買?組合推薦 顧客在買了 臺pc之後下 步會購買?搭配推薦 哪種d...

關聯規則Apriori

首先介紹的是啤酒和尿布的故事 上網自查 這是學習關聯規則必須知道的乙個故事。頻繁項集,關聯規則,支援度,置信度這四個概念貫穿apriori演算法的始終。如果乙個集合不是頻繁相集,那它的超集比然也不是頻繁相集。機器學習實戰例子 coding utf 8 from numpy import def lo...