1初期準備
環境を整える
clean up
rm(list=ls())
# load package arules to find rules
library(arules)
2ファイルを読みます
ファイルを読み、ファイルの内容を確認すると、指定する必要のある3つのテーブルは、トランザクション情報テーブル、商品リスト、および商品注文テーブルです
。PAフィールドによると、トランザクション情報テーブルと商品注文です。テーブルは互いに接続されています。
アイテムレベルで購入データを読み取る
trans <- read.csv('purchase.csv',header = TRUE,stringsAsFactors = FALSE )
RA_desc <- read.csv('RA_desc.csv',header = TRUE,stringsAsFactors = FALSE )
PA_desc <- read.csv('PA_desc.csv',header = TRUE,stringsAsFactors = FALSE )
dim(trans)
head(trans)
head(PA_desc)
names(trans) <- c("card","transaction_place","transaction_time","pos_id","transaction_number","invo_num","amt_aft","amt_bft","quantity","PA","RA","product_code")
# merge with descriptions
trans2 <- merge(trans,PA_desc, by="PA", all.x=TRUE)
#writetrans_isとアイテム
trans2$trans_id = paste(trans2$card, trans2$transaction_place, trans2$transaction_time,
trans2$pos_id, trans2$transaction_number, sep='_')
View(head(trans2))
write.csv(subset(trans2,select=c("trans_id","PA_desc")), file = 'purchase2.csv', row.names = F)
trans3 = read.transactions('purchase2.csv', format = "single", sep = ",",
cols = c("trans_id", "PA_desc"), rm.duplicates=TRUE,header = TRUE)
最後に、情報を注文番号とショッピングアイテムの詳細に整理します
trans3 = read.transactions('purchase2.csv'、format = "single"、sep = "、"、
cols = c( "trans_id"、 "PA_desc")、rm.duplicates = TRUE、header = TRUE)
このステップはアルゴリズム処理を容易にするために、データをトランザクションオーダー形式に変換します
3アプリオリアルゴリズム生成ルール
信頼水準の低いルールを見つける
rules.all = apriori(trans3,
parameter = list(minlen=2,
supp=0.008,
conf=0.5,
target = "rules"))
inspect(rules.all)
# find rules with reasonable confidence level
rules = apriori(trans3,
parameter = list(minlen=2,
supp=0.005,
conf=0.05,
target = "rules"))
inspect(rules)
write(rules,"rules.csv",row.names=FALSE,sep="|")
以前の関連付けアルゴリズムルールは、冗長なルールの可能性を処理していたため、ルールはプルーニングされます
結果の形式を調整する
quality(rules.all) <- round(quality(rules.all), digits=3)
rules.sorted <- sort(rules.all, by ='lift')
inspect(rules.sorted)
reules.pruned = rules.sorted
inspect(reules.pruned[1])
ターゲット:
マイニングされた関連付けのタイプを示す文字列。
「頻繁なアイテムセット」
「最大頻度のアイテムセット」「
閉じた頻繁なアイテムセット」
「ルール」(Aprioriでのみ使用可能。eclatにはruleInductionを使用)
「ハイパーエッジセット」(Aprioriでのみ使用可能。関連付けハイパーエッジセットの定義については、リファレンスを参照してください。 )。
4相関ルールの描画
散布図
# plot rules.all
png(file="rules_all.png", bg="white", width=1200, height=900)
plot(rules.all)
dev.off()
さまざまなルールの描画
plot(reules.pruned)
plot(reules.pruned, measure=c("support", "lift"), shading="confidence")
plot(reules.pruned, shading="order", control=list(main = "Two-key plot"))
inspect(reules.pruned)
他の図面
# sel <- plot(rules, measure=c("support", "lift"), shading="confidence", interactive=TRUE)
### matrix plots
plot(reules.pruned, method="matrix", measure="lift")
plot(reules.pruned, method="matrix", measure="lift", control=list(reorder=TRUE))
plot(reules.pruned, method="matrix", measure=c("lift", "confidence"))
plot(reules.pruned, method="matrix", measure=c("lift", "confidence"),control=list(reorder=TRUE))
### grouped matrix plots
# sel <- plot(reules.pruned, method="white", interactive=TRUE)
png(file="grouped_matrix.png", bg="transparent", width=1200, height=900)
plot(reules.pruned, method='grouped')
dev.off()
plot(reules.pruned, method='grouped',control=list(k=25))
### graph plots
subrules2 <- head(sort(reules.pruned, by="lift"), 25)
inspect(subrules2)
plot(subrules2, method="graph")
plot(subrules2, method="graph", control=list(type="items"))
plot(subrules2, method='graph', control = list(type="itemsets"))
平行座標
plot(subrules2、method ='paracoord'、control = list(reorder = T))
subrules3 <-head(sort(reules.pruned、by =“lift”)、3)
plot(subrules3、method ='paracoord'、control = list(reorder = T))
inspect(subrules3)