先驗演算法(Apriori algorithm) - 機器學習演算法

來源:互聯網
上載者:User

標籤:單位   交易   這一   自底向上   技術   ack   超級   ext   演算法   

Apriori is an algorithm for frequent item set mining and association rule learning over transactional databases. It proceeds by identifying the frequent individual items in the database and extending them to larger and larger item sets as long as those item sets appear sufficiently often in the database. The frequent item sets determined by Apriori can be used to determine association rules which highlight general trends in the database: this has applications in domains such as market basket analysis.

 

在電腦科學以及資料採礦領域中, 先驗演算法是關聯式規則中的經典演算法之一。先驗演算法的設計目的是為了處理包含交易資訊內容的資料庫(例如,顧客購買的商品清單,或者網頁常訪清單。)而其他的演算法則是設計用來尋找無交易資訊(如Winepi演算法和Minepi演算法)或無時間標記(如DNA測序)的資料之間的聯絡規則。

在關聯式規則中,一般對於給定的項目集合(例如,零售交易集合,每個集合都列出的單個商品的購買資訊),演算法通常嘗試在項目集合中找出至少有C個相同的子集。先驗演算法採用自底向上的處理方法,即頻繁子集每次只擴充一個對象(該步驟被稱為候選集產生),並且候選集由資料進行檢驗。當不再產生合格擴充項物件時,演算法終止。

先驗演算法採用廣度優先搜尋演算法進行搜尋並採用樹結構來對候選項目集進行高效計數。它通過長度為{\displaystyle k-1}的候選項目集來產生長度為{\displaystyle k}的候選項目集,然後從中刪除包含不常見子模式的候選項。根據向下封閉性引理,該候選項目集包含所有長度為{\displaystyle k}的頻繁項目集。之後,就可以通過掃描交易資料庫來決定候選項目集中的頻繁項目集。

雖然先驗演算法具有顯著的曆史地位,但是其中的一些低效與權衡弊端也進而引致了許多其他的演算法的產生。候選集產生過程產生了大量的子集(先驗演算法在每次對資料庫進行掃描之前總是嘗試載入儘可能多的候選集)。並且自底而上的子集瀏覽過程(本質上為寬度優先的子集格遍曆)也直到遍曆完所有 {\displaystyle 2^{|S|}-1} 個可能的子集之後才尋找任意最大子集S。

 

例子

一個大型超級市場根據最小存貨單位(SKU)來追蹤每件物品的銷售資料。從而也可以得知哪裡物品通常被同時購買。通過採用先驗演算法來從這些銷售資料中建立頻繁購買商品組合的清單是一個效率適中的方法。假設交易資料庫包含以下子集{1,2,3,4},{1,2},{2,3,4},{2,3},{1,2,4},{3,4},{2,4}。每個標號表示一種商品,如“黃油”或“麵包”。先驗演算法首先要分別計算單個商品的購買頻率。下表解釋了先驗演算法得出的單個商品購買頻率。

商品編號 購買次數
1 3
2 6
3 4
4 5

然後我們可以定義一個最少購買次數來定義所謂的“頻繁”。在這個例子中,我們定義最少的購買次數為3。因此,所有的購買都為頻繁購買。接下來,就要產生頻繁購買商品的組合及購買頻率。先驗演算法通過修改樹結構中的所有可能子集來進行這一步驟。然後我們僅重新選擇頻繁購買的商品組合:

商品編號 購買次數
{1,2} 3
{2,3} 3
{2,4} 4
{3,4} 3

並且產生一個包含3件商品的頻繁組合列表(通過將頻繁購買商品組合與頻繁購買的單件商品聯絡起來得出)。在上述例子中,不存在包含3件商品組合的頻繁組合。最常見的3件商品組合為{1,2,4}和{2,3,4},但是他們的購買次數為2,低於我們設定的最低購買次數。

 

演算法的局限

因此Apriori演算法中的一些低效與權衡弊端也進而引致了許多其他的演算法的產生,例如FP-growth演算法。候選集產生過程產生了大量的子集(先驗演算法在每次對資料庫進行掃描之前總是嘗試載入儘可能多的候選集)。並且自底而上的子集瀏覽過程(本質上為寬度優先的子集格遍曆)也直到遍曆完所有 {\displaystyle 2^{|S|}-1} 個可能的子集之後才尋找任意最大子集S。

先驗演算法(Apriori algorithm) - 機器學習演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.