1. 程式人生 > >機器學習演算法(一)——關聯規則Apriori演算法及R語言實現方法

機器學習演算法(一)——關聯規則Apriori演算法及R語言實現方法

關聯規則演算法算是一種十分常用的機器學習演算法,無論是面試還是日後工作中都會經常出現,那麼本篇小博就記錄一下自己學習關聯規則經典演算法Apriori的筆記。

1、概述

Apriori演算法是用一種稱為逐層搜尋的迭代方法,從項集長度k=1開始,選出頻繁的k=1項集,根據先驗性質:頻繁項集的子集一定是頻繁的(逆否命題:非頻繁項集的超集一定是非頻繁的,通俗的說就是某件事發生的概率很低,比這件事發生條件更嚴苛的事情發生的概率會更低),篩選k=2項集中的頻繁項集,以此迭代k=3...。每迭代一次都要完整的掃描一次資料庫。

2、關聯規則三度:

支援度:佔比

置信度:條件概率

提升度:相關性

3、R語言示例程式碼如下:

(小眾語言的辛酸:選項裡沒有。。)

library(arules)
#從rattle包中讀入資料
dvdtrans <- read.csv(system.file("csv", "dvdtrans.csv",package="rattle"))
str(dvdtrans)
#將資料轉化為合適的格式
data <- as(split(dvdtrans$Item,dvdtrans$ID),"transactions")
data

#用 apriori命令生成頻繁項集,設其支援度為0.5,置信度為0.8
rules <- apriori(data, parameter=list(support=0.5,confidence=0.8,minlen = 2))

#用inspect命令檢視提取規則
inspect(rules)
常用資料形式有data.frame格式和list格式,前者即A項集為一列B項集為另一列,後者為A和B放在同一個購物籃中。

去除冗餘規則以及提取子規則程式碼如下:

redundant.rm <- function(rule,by="lift")
{
	#rule:需要進行簡化的規則
	#by:在清除的時候根據那個變數來選擇,
	#可能取值為"support","lift","confidence"
	a <- sort(rule,by=by)
	m<- is.subset(a,a,proper=TRUE)
	m[lower.tri(m, diag=TRUE)] <- NA
	r <- colSums(m, na.rm=TRUE) >= 1
	finall.rules <- a[!r]
	return(finall.rules) 
}
rules <- redundant.rm(rules)
rules.sub <- subset(rules, subset = lhs %in% "篩選項集名稱" & lift > 1)

關聯規則視覺化程式碼如下:
require(arulesViz)
plot(x = sort(finall.rule,by = "support")[1:20], method="graph", control=list(type="items"))

平時學東西不用急,你並不是用了它就好了,你得知道它是怎麼實現的?為什麼要用這個而不用另外一個?優越在哪?可不可以優化?多想,想深一點,養成這個習慣

恩,上面這句話是某面經裡面的。。。

4、演算法優化

韓家煒經典《資料探勘概念與技術》中提出了若干基於Apriori的提升效率方法:

① 基於雜湊的技術:由k=1頻繁項集生成所有k=2頻繁項集並對映計數,過濾支援度低於閾值的k=2項集,壓縮需要考慮的k=2項集

② 事物壓縮

③ 劃分:合併所有子集的頻繁項集,從中尋找全域性頻繁項集,只需要掃描兩次

④ 抽樣:犧牲精度,效率優先

⑤ 動態項集計數

5、Apriori演算法的缺點:

① 可能仍然需要產生大量候選項集

② 可能需要重複的掃描整個資料庫

相關推薦

機器學習演算法——關聯規則Apriori演算法R語言實現方法

關聯規則演算法算是一種十分常用的機器學習演算法,無論是面試還是日後工作中都會經常出現,那麼本篇小博就記錄一下自己學習關聯規則經典演算法Apriori的筆記。 1、概述 Apriori演算法是用一種稱為逐層搜尋的迭代方法,從項集長度k=1開始,選出頻繁的k=1項集,根據先驗性

機器學習筆記:梯度下降演算法,隨機梯度下降,正規方程

一、符號解釋 M 訓練樣本的數量 x 輸入變數,又稱特徵 y 輸出變數,又稱目標 (x, y) 訓練樣本,對應監督學習的輸入和輸出 表示第i組的x   表示第i組的y h(x)表示對應演算法的函式 是

機器學習筆記樸素貝葉斯的Python程式碼實現

上研究生的時候,一心想讀生物資訊學的方向,由此也選修了生物數學,計算生物學等相關課程。給我印象最深的是給我們計算生物學的主講老師,他北大數學系畢業,後來做起了生物和數學的交叉學科研究。課上講的一些演算法比如貝葉斯,馬爾科夫,EM等把我給深深折磨了一遍。由於那時候

Python3《機器學習實戰》學習筆記:k-近鄰演算法

**轉載:**http://blog.csdn.net/c406495762執行平臺: WindowsPython版本: Python3.xIDE: Sublime text3 他的個人網站:http://cuijiahua.com   文章目錄

演算法工程師修仙之路:吳恩達機器學習作業

吳恩達機器學習筆記及作業程式碼實現中文版 第一個程式設計作業:單變數線性迴歸(python程式碼實現) 一元線性迴歸 問題描述 在本練習的這一部分中,您將使用只有單變數的線性迴歸方法預測餐車的利潤。 假設你是一家連鎖餐廳的執行長,正在

機器學習實戰k-近鄰演算法kNNk-Nearest Neighbor

目錄 0. 前言 簡單案例 學習完機器學習實戰的k-近鄰演算法,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 0. 前言 k-近鄰演算法kNN(k-Neare

機器學習實戰》學習筆記:k-近鄰演算法

k-近鄰演算法 原書中程式碼為python2中語法,python3的語法參考連結:https://blog.csdn.net/c406495762/article/details/75172850 給出k-近鄰演算法的完整程式碼(海倫相親程式) import numpy a

python3.5《機器學習實戰》學習筆記:k近鄰演算法

轉載請註明作者和出處:http://blog.csdn.net/u013829973 系統版本:window 7 (64bit) python版本:python 3.5 IDE:Spyder (一個比較方便的辦法是安裝anaconda,那麼Spyder和

迴歸演算法python code----------機器學習系列

前面一篇把迴歸演算法的理論部分都大致講過了,這一篇主要就python程式碼部分做一些解釋,也就是怎麼用python寫回歸演算法,因為LZ也是剛剛入門,有一些理解不對的地方,歡迎大家指正,LZ也矯枉過正。 首先是python模組----numpy (設計用到的數學

機器學習實戰》學習筆記之使用Apriori演算法進行關聯

轉載請註明作者和出處:http://blog.csdn.net/john_bh/ 執行平臺: Windows Python版本: Python3.6 IDE: Sublime text3 背景 一、關聯分析 二、Apriori原理

機器學習筆記——基於單層決策樹的AdaBoost演算法實踐

                             基於單層決策樹的AdaBoost演算法實踐    最近一直在學習周志華老師的西瓜書,也就是《機器學習》,在第八章整合學習中學習了一個整合學習演算法,即AdaBoost演算法。AdaBoost是一種迭代演算法,其核心思想

Python3《機器學習實戰》學習筆記:k-近鄰演算法(史詩級乾貨長文)

#一 簡單k-近鄰演算法     本文將從k-鄰近演算法的思想開始講起,使用python3一步一步編寫程式碼進行實戰訓練。並且,我也提供了相應的資料集,對程式碼進行了詳細的註釋。除此之外,本文也對sklearn實現k-鄰近演算法的方法進行了講解。實戰例項:

機器學習實戰--k近鄰演算法

機器學習實戰(一)–k近鄰演算法 最近在學習機器學習,順便做個記錄,一方面給自己加深印象,另一方面與大家共勉,希望能給大家一些幫助,我也是剛入門的新手,有不對的地方還請多多指教。 我用的Python3.5,有些程式碼與書上不太一樣。 程式清單2-1 k-近

機器學習實戰—— 用線性回歸預測波士頓房價

-1 png 機器學習 mage 回歸 線性回歸 blog 分享 機器 機器學習實戰(一)—— 用線性回歸預測波士頓房價

機器學習理論——線性回歸

隨機 .cn 過程 小寫 找到 想想 每次 回歸 所在 (一)單變量線性回歸。 舉個例子來說,假如你要在北京的五環路租房,要預測房子的價格,其中一個比較顯著的特征就是房子的面積,根據不同的房間的面積來預測租金是多少。於是你就可以構建一個模型橫軸是房間面積,縱軸是租金

機器學習筆記

get 實現 mach 理論 怎樣 算法 分類 AI 結構 1、基礎概念   什麽是機器學習?   機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的

機器學習遊記

apple 機器學習 人類 規律 orm 訓練 border -h 方程式 機器學習是目前信息技術中最激動人心的方向之一,其應用已經深入到生活的各個層面且與普通人的日常生活密切相關. 一.定義 正如我們人類根據過去的經驗來判斷明天的天氣,購買適合自己的東西,做出有效的預

機器學習實戰k-近鄰kNNk-Nearest Neighbor

目錄 0. 前言 1. k-近鄰演算法kNN(k-Nearest Neighbor) 2. 實戰案例 2.1. 簡單案例 2.2. 約會網站案例 2.3. 手寫識別案例 學習完機器學習實戰的k-近鄰演算法,簡單的做個筆記。文中

模式識別與機器學習筆記

本系列博文是對研一課程《模式識別與機器學習》的隨堂筆記,希望將老師所講的與自己的見解記錄下來,方便加深自己的理解以及以後複習檢視,筆記完全按照老師所講順序,歡迎交流。 一、模式識別與機器學習的基本問題 機器學習主要解決以下四類問題: 1.監督學習:指的是訓練的資料既包括特徵(feat

機器學習筆記:最小二乘法和梯度下降

一、最小二乘法 1.一元線性擬合的最小二乘法 先選取最為簡單的一元線性函式擬合助於我們理解最小二乘法的原理。 要讓一條直接最好的擬合紅色的資料點,那麼我們希望每個點到直線的殘差都最小。 設擬合直線為