先驗算法

在計算機科學以及數據挖掘領域中 ， 先驗算法 （ Apriori Algorithm ） 是關聯規則學習的經典算法之一 。 先驗算法的設計目的是爲了處理包含交易信息內容的數據庫 （ 例如, 顧客購買的商品清單 ， 或者網頁常訪清單 。 ） 而其他的算法則是設計用來尋找無交易信息 （ 如Winepi算法和Minepi算法 ） 或無時間標記 （ 如DNA測序 ） 的數據之間的聯繫規則 。 在關聯式規則中, 一般對於給定的項目集合 （ 例如 ， 零售交易集合 ， 每個集合都列出的單個商品的購買信息 ） ， 算法通常嘗試在項目集合中找出至少有C個相同的子集 。 先驗算法採用自底向上的處理方法 ， 即頻繁子集每次只擴展一個對象 （ 該步驟被稱爲候選集產生 ） ， 並且候選集由數據進行檢驗 。 當不再產生符合條件的擴展對象時 ， 算法終止 。 先驗算法採用廣度優先搜索算法進行搜索並採用樹結構來對候選項目集進行高效計數 。 它通過長度爲的候選項目集來產生長度爲的候選項目集 ， 然後從中刪除包含不常見子模式的候選項 。 根據向下封閉性引理, 該候選項目集包含所有長度爲的頻繁項目集 。 之後 ， 就可以通過掃描交易數據庫來決定候選項目集中的頻繁項目集 。 雖然先驗算法具有顯著的歷史地位 ， 但是其中的一些低效與權衡弊端也進而引致了許多其他的算法的產生 。 候選集產生過程生成了大量的子集 （ 先驗算法在每次對數據庫進行掃描之前總是嘗試加載儘可能多的候選集 ） 。 並且自底而上的子集瀏覽過程 （ 本質上爲寬度優先的子集格遍歷 ） 也直到遍歷完所有 個可能的子集之後才尋找任意最大子集S 。