1. 程式人生 > >機器學習(十八)——關聯規則挖掘

機器學習(十八)——關聯規則挖掘

關聯規則挖掘

基本概念(續)

定義一:設I={i1,i2,,im},是m個不同的專案的集合,每個ik稱為一個專案。專案的集合I稱為項集。其元素的個數稱為項集的長度,長度為k的項集稱為k-項集。引例中每個商品就是一個專案,項集為I={bread,beer,cake,cream,milk,tea},I的長度為6。

定義二:每筆交易T是項集I的一個子集。對應每一個交易有一個唯一標識交易號,記作TID。交易全體構成了交易資料庫D|D|等於D中交易的個數。引例中包含10筆交易,因此|D|=10

定義三:對於項集X,設定count(XT)為交易集D中包含X的交易的數量,則項集X的支援度為:

support(X)=count(XT)|D|

引例中X={bread,milk}出現在T1,T2,T5,T9和T10中,所以支援度為0.5。

定義四最小支援度是項集的最小支援閥值,記為SUPmin,代表了使用者關心的關聯規則的最低重要性。支援度不小於SUPmin的項集稱為頻繁集,長度為k的頻繁集稱為k-頻繁集。如果設定SUPmin為0.3,引例中{bread,milk}的支援度是0.5,所以是2-頻繁集。

定義五關聯規則是一個蘊含式:

RXY

其中XIYI,並且XY=。表示項集X在某一交易中出現,則導致Y以某一概率也會出現。使用者關心的關聯規則,可以用兩個標準來衡量:支援度和可信度。

定義六:關聯規則R的支援度是交易集同時包含X和Y的交易數與|D|之比。即:

support(XY)=count(XY)|D|

支援度反映了X、Y同時出現的概率。關聯規則的支援度等於頻繁集的支援度。

定義七:對於關聯規則R,可信度是指包含X和Y的交易數與包含X的交易數之比。即:

confidence(XY)=support(XY)support(X)

可信度反映瞭如果交易中包含X,則交易包含Y的概率。一般來說,只有支援度和可信度較高的關聯規則才是使用者感興趣的。

定義八:設定關聯規則的最小支援度和最小可信度為SUPminCONFmin。規則R的支援度和可信度均不小於S

UPminCONFmin,則稱為強關聯規則。關聯規則挖掘的目的就是找出強關聯規則,從而指導商家的決策。

這八個定義包含了關聯規則相關的幾個重要基本概念,關聯規則挖掘主要有兩個問題:

1.找出交易資料庫中所有大於或等於使用者指定的最小支援度的頻繁項集。

2.利用頻繁項集生成所需要的關聯規則,根據使用者設定的最小可信度篩選出強關聯規則。

其中,步驟1是關聯規則挖掘演算法的難點,下文介紹的Apriori演算法和FP-growth演算法,都是解決步驟1問題的演算法。

參考:

Apriori演算法

Apriori演算法的思路如下:

1.第一次掃描交易資料庫D時,產生1-頻繁集。在此基礎上經過連線、修剪產生2-頻繁集。以此類推,直到無法產生更高階的頻繁集為止。

2.在第k次迴圈中,也就是產生k-頻繁集的時候,首先產生k-候選集,k-候選集中每一個項集都是對兩個只有一個項不同的屬於k-1頻繁集的項集連線產生的。

3.k-候選集經過篩選後產生k-頻繁集。

從頻繁集的定義,我們可以很容易的推匯出如下結論:

如果專案集X是頻繁集,那麼它的非空子集都是頻繁集。

如果k-候選集中的項集Y,包含有某個k-1階子集不屬於k-1頻繁集,那麼Y就不可能是頻繁集,應該從候選集中裁剪掉。Apriori演算法就是利用了頻繁集的這個性質。

參考:

FP-growth演算法

Aprori演算法利用頻繁集的兩個特性,過濾了很多無關的集合,效率提高不少,但是我們發現Apriori演算法是一個候選消除演算法,每一次消除都需要掃描一次所有資料記錄,造成整個演算法在面臨大資料集時顯得無能為力。

FP-Growth演算法是韓家煒等人在2000年提出的關聯分析演算法。它通過構造一個樹結構來壓縮資料記錄,使得挖掘頻繁項集只需要掃描兩次資料記錄,而且該演算法不需要生成候選集合,所以效率會比較高。

注:韓家煒,中國科學技術大學本科(1979)+中科院碩士+威斯康辛大學博士(1985)。美國伊利諾伊大學香檳分校計算機系教授,IEEE和ACM院士。

FpGrowth演算法的平均效率遠高於Apriori演算法,但是它並不能保證高效率,它的效率依賴於資料集,當資料集中的頻繁項集的沒有公共項時,所有的項集都掛在根結點上,不能實現壓縮儲存,而且Fptree還需要其他的開銷,需要儲存空間更大,使用FpGrowth演算法前,對資料分析一下,看是否適合用FpGrowth演算法。

參考:

倖存者偏差

二戰期間,盟軍需要對戰鬥機進行裝甲加厚,以提高生還率,但由於軍費有限,只能進行區域性升級。那麼問題來了,究竟哪個部位最關鍵,最值得把裝甲加厚來抵禦敵方炮火呢?人們眾口不一,最後一致決定採用統計調查的方式來解決,即:仔細檢查每一駕戰鬥機返回時受到的損傷程度,計算出飛機整體的受彈狀況,然後根據大資料分析決定。

不久,統計資料很快出爐:盟軍飛機普遍受彈最嚴重的地方是機翼,有的幾乎被打成了篩子;相反,受彈最輕的地方是駕駛艙及尾部發動機,許多飛機的駕駛艙甚至連擦傷都沒有。

這裡寫圖片描述

正當所有人拿著這份確鑿無疑的報告準備給機翼加厚裝甲時,統計學家Abraham Wald阻攔了他們,同時提出了一個完全相反的方案:加厚駕駛艙與尾部。理由非常簡單:這兩個位置中彈的飛機,都沒有回來。換言之,它們是一份沉默的資料——“死人不會說話”。

最後,盟軍高層紛紛聽取了這個建議,加固了駕駛艙與尾部,果然空中戰場局勢得以好轉,駕駛員生還率也大大提高。事實證明,這是一個無比英明的措施。

這個事例也被稱作“倖存者偏差”(Survivorship bias)。它是一種典型的由於模型不當,導致的“資料說謊”。

注:Abraham Wald,1902~1950,生於奧匈帝國,維也納大學博士。1938年為躲避納粹,移民美國,哥倫比亞大學教授。Herman Chernoff的導師。其子Robert M. Wald,為著名理論物理學家,芝加哥大學教授,黑洞理論的提出者之一。

關聯規則評價

“資料說謊”的問題很普遍。再看這樣一個例子,我們分析一個購物籃資料中購買遊戲光碟和購買影片光碟之間的關聯關係。交易資料集共有10,000條記錄,如表1所示:

表1 買遊戲 不買遊戲 行總計
買影片 4000 3500 7500
不買影片 2000 500 2500
列總計 6000 4000 10000

假設我們設定得最小支援度為30%,最小自信度為60%。從上面的表中,可以得到:

support()=4000/10000=40% confidence()=4000/6000=66%

這條規則的支援度和自信度都滿足要求,因此我們很興奮,我們找到了一條強規則,於是我們建議超市把影片光碟和遊戲光碟放在一起,可以提高銷量。

可是我們想想,一個喜歡的玩遊戲的人會有時間看影片麼,這個規則是不是有問題,事實上這條規則誤導了我們。在整個資料集中買影片光碟的概率p(買影片)=7500/10000=75%,而買遊戲的人也買影片的概率只有66%,66%<75%恰恰說明了買遊戲光碟抑制了影片光碟的購買,也就是說買了遊戲光碟的人更傾向於不買影片光碟,這才是符合現實的。

從上面的例子我們看到,支援度和自信度並不總能成功濾掉那些我們不感興趣的規則,因此我們需要一些新的評價標準,下面介紹幾種評價標準:

相關性係數

相關性係數的英文名是Lift,這就是一個單詞,而不是縮寫。

lift(XY)=

相關推薦

機器學習——關聯規則挖掘

關聯規則挖掘 基本概念(續) 定義一:設I={i1,i2,…,im},是m個不同的專案的集合,每個ik稱為一個專案。專案的集合I稱為項集。其元素的個數稱為項集的長度,長度為k的項集稱為k-項集。引例中每個商品就是一個專案,項集為I={bread,beer

機器學習 關聯分析之Apriori演算法

前言        目前隨著資料量迅速增多,從海量資料中尋找有價值的資訊帶來的成本也在不斷增加,傳統的搜尋資料方式已經不能滿足我們的需要,我們先來通過一個演算法看一下演算法時間複雜度快慢帶來的影響,通過計算耗時我們會有個感性

機器學習與深度學習系列連載: 第一部分 機器學習模型評估

模型評估 模型評估中有三個關鍵問題:  如何獲得測試結果? 評估方法  如何評估效能優劣? 效能度量  如何判斷實質差別? 比較檢驗 2. 效能度量(performance measure)是衡量模型泛化能力的 評價標準,反映了任務需求 (1

機器學習之python學習

今天來學習python中的資料結構dict, 這個用的也是相對的較少!!! 你們也可以參考廖雪峰大神的python教學快速入門。 總結下來 dict與和list比較,dict有以下幾個特點: (1)查詢和插入的速度極快,不會隨著key的增加而增加; (2)需要佔用大量的記憶體

【轉】JMeter學習JMeter測試Java

sets interval permsize int 文件 不同 時間 結果 argument 實例: 服務為:將輸入的兩個參數通過IO存入文件; 1、打開MyEclipse,編寫Java代碼 服務: package test; import java.io.F

C++語言學習——異常處理

right data ges cal 修飾符 當前 ins 最終 cati C++語言學習(十八)——異常處理 一、C語言異常處理 異常是指程序在運行過程中產生可預料的執行分支。如除0操作,數組訪問越界、要打開的文件不存在。Bug是指程序中的錯誤,是不被預期的運行方式。如野

GO語言學習Go 語言接口

結構 數據 ble 語言 print 一起 實例 ... class Go 語言接口 Go 語言提供了另外一種數據類型即接口,它把所有的具有共性的方法定義在一起,任何其他類型只要實現了這些方法就是實現了這個接口。 實例 /* 定義接口 */ type inter

吳恩達機器學習機器學習流水線、上限分析

目錄 0. 前言 1. 流水線 2. 上限分析(Ceiling analysis) 學習完吳恩達老師機器學習課程的照片OCR,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注

JMeter學習JMeter測試Java

例項: 服務為:將輸入的兩個引數通過IO存入檔案;   1、開啟MyEclipse,編寫Java程式碼 服務: package test; import java.io.File; import java.io.PrintWriter; public c

機器學習 電商O2O優惠券使用預測-2

介紹        這篇文章是想繼續總結一遍優惠券預測,寫寫感受並進行一個記錄總結,零零散散以作為記錄整理之用。 本篇是選了三點本人覺得專案中重要的寫了一下,其它內容暫時略過 第一部分:資料清洗資料分析程式碼

機器學習 kaggle競賽之泰坦尼克號專案實戰-2

導航        想寫這篇部落格的由衷是做完幾個專案,有時對於圖的畫法和模型融合演算法原理理解還很膚淺,特此加深一下印象。 內容概覽 圖 pandas、matplotlib、seaborn 餅圖 直方圖

機器學習 輕鬆理解模型評價指標

篇首語        相信大家都知道下面的圖片是啥意思,每個無論在啥公司、無論哪個行業都有自己的KPI評價指標,公司會根據公司情況設定公司戰略KPI、部門KPI、以及每個人的指標,對於員工也是比較關心自己的KPI因為關係著你

機器學習 讓你輕鬆理解K-means 聚類演算法

前言        你還記得菜市場賣菜的嗎?書店賣書的或者是平時去超市買東西時的物品,它們是不是都根據相似性擺放在一起了呢,飲料、啤酒、零食分佈在各自區域,像這樣各級事物的相似特點或特性組織在一起的方法,在機器學習裡面即成為

機器學習 SVM-支援向量機

春夜喜雨 好雨知時節,當春乃發生。 隨風潛入夜,潤物細無聲。 野徑雲俱黑,江船火獨明。 曉看紅溼處,花重錦官城。 前言         週末很多城市下開了雨,下雨中也不乏忙忙碌碌的人們,有的天不亮已經忙碌匆

opencv學習:影象梯度

程式程式碼: #匯入cv模組 # -*- coding=utf-8 -*- import cv2 as cv import numpy as np #lapalian運算元 def lapalian_demo(image): # dst=cv.Laplacian(image,cv.CV

機器學習與深度學習系列連載: 第一部分 機器學習決策樹2Decision Tree

決策樹2 決策樹很容易出現過擬合問題,針對過擬合問題,我們採用以下幾種方法 劃分選擇 vs 剪枝 剪枝 (pruning) 是決策樹對付“過擬合”的 主要手段! 基本策略: 預剪枝 (pre-pruning): 提前終止某些分支的生長 後剪枝 (post-pr

機器學習與深度學習系列連載: 第一部分 機器學習非監督度學習-1 Unsupervised Learning-1

非監督度學習-1 Unsupervised Learning-1(K-means,HAC,PCA) 非監督學習方法主要分為兩大類 Dimension Reduction (化繁為簡) Generation (無中生有) 目前我們僅專注化繁為簡,降維的方法,

機器學習與深度學習系列連載: 第一部分 機器學習非監督度學習-2 Unsupervised Learning-2Neighbor Embedding

臨近編碼 Neighbor Embedding 在非監督學習降維演算法中,高緯度的資料,在他附近的資料我們可以看做是低緯度的,例如地球是三維度的,但是地圖可以是二維的。 那我們就開始上演算法 1. Locally Linear Embedding (LLE) 我

機器學習與深度學習系列連載: 第一部分 機器學習非監督度學習-2 Unsupervised Learning-4Generative Models

生成模型 Generative Models 用非監督學習生成結構化資料,是非監督模型的一個重要分支,本節重點介紹三個演算法: Pixel RNN ,VAE 和GAN(以後會重點講解原理) 1. Pixel RNN RNN目前還沒有介紹,,以後會重點講解,大家

吳恩達機器學習K-means無監督學習、聚類演算法

目錄 0. 前言 學習完吳恩達老師機器學習課程的無監督學習,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心