কমান্ড ব্যবহার করে নতুন ডেটার জন্য উপযুক্ত নিয়ম সন্ধান করা


11

আমি সমিতির বিধিগুলির জন্য মাইনিং লেনদেনের জন্য আর (এবং আরিউলস প্যাকেজ) ব্যবহার করছি। আমি যা করতে চাই তা হল নিয়মগুলি তৈরি করা এবং তারপরে সেগুলি নতুন ডেটাতে প্রয়োগ করা।

উদাহরণস্বরূপ, বলুন আমার অনেক বিধি রয়েছে যার মধ্যে একটি হ'ল প্রথাগত {Beer=YES} -> {Diapers=YES}

তারপরে আমার কাছে নতুন ট্রানজেকশনাল ডেটা রয়েছে যেখানে রেকর্ডগুলির মধ্যে একটিতে বিয়ার কিনেছিল তবে ডায়াপার নয়। এলএইচএস পূরণ করা হলেও আমি এখনও কোনও আরএইচএস নয় এমন কোনও নিয়মকে কীভাবে সনাক্ত করতে পারি?

আর উদাহরণ:

install.packages("arules")
library(arules)

data("Groceries")
**#generate Rules omitting second record**

rules <- apriori(Groceries[-2],parameter = list(supp = 0.05, conf = 0.2,target = "rules"))

উত্পাদিত বিধিগুলি হ'ল:

> inspect(rules)
  lhs                   rhs                   support confidence     lift
1 {}                 => {whole milk}       0.25554200  0.2555420 1.000000
2 {yogurt}           => {whole milk}       0.05603010  0.4018964 1.572722
3 {whole milk}       => {yogurt}           0.05603010  0.2192598 1.572722
4 {rolls/buns}       => {whole milk}       0.05664023  0.3079049 1.204909
5 {whole milk}       => {rolls/buns}       0.05664023  0.2216474 1.204909
6 {other vegetables} => {whole milk}       0.07484238  0.3867578 1.513480
7 {whole milk}       => {other vegetables} 0.07484238  0.2928770 1.513480

দ্বিতীয় লেনদেনটি এই গ্রাহককে দেখায়, যেহেতু তাদের দই রয়েছে তবে পুরো দুধ নয়, সম্ভবত দুধের জন্য একটি কুপন পাঠানো উচিত। "লেনদেন" এর যে কোনও প্রযোজ্য বিধিগুলি নতুন লেনদেনের জন্য কীভাবে অবস্থিত হতে পারে?

> LIST(Groceries[2])
[[1]]
[1] "tropical fruit" "yogurt"         "coffee" 

উত্তর:


19

মূল প্যাকেজটি একই প্যাকেজে is.subset- ফাংশন

কোডটি এখানে ...

basket <- Groceries[2]
# find all rules, where the lhs is a subset of the current basket
rulesMatchLHS <- is.subset(rules@lhs,basket)
# and the rhs is NOT a subset of the current basket (so that some items are left as potential recommendation)
suitableRules <-  rulesMatchLHS & !(is.subset(rules@rhs,basket))

# here they are
inspect(rules[suitableRules])

# now extract the matching rhs ...
recommendations <- strsplit(LIST(rules[suitableRules]@rhs)[[1]],split=" ")
recommendations <- lapply(recommendations,function(x){paste(x,collapse=" ")})
recommendations <- as.character(recommendations)

# ... and remove all items which are already in the basket
recommendations <- recommendations[!sapply(recommendations,function(x){basket %in% x})]

print(recommendations)

এবং উত্পন্ন আউটপুট ...

> inspect(rules[suitableRules])
  lhs         rhs            support confidence     lift
1 {}       => {whole milk} 0.2555420  0.2555420 1.000000
2 {yogurt} => {whole milk} 0.0560301  0.4018964 1.572722

> print(recommendations)
[1] "whole milk"

স্টেফেন - কল্পিত! অনেক ধন্যবাদ, আমি এই ফাংশনটি দেখতে পাইনি। লিফট (বা অন্যান্য পরিমাপ) দ্বারা র‌্যাঙ্কিংটি দেখতে পেলাম যে কোনও নিয়মটি কখন রাখা সহজ হবে যখন নির্ধারণ করতে খুব সহজ হবে।
বি_মিনার

আমি জানি যে এটি বেশ পুরানো, তবে আশা করি কেউ সাড়া দেয়। যদি আমি সরাসরি রাখতে চান basket <- "tropical fruit" "yogurt" "coffee"?
হুনজাবি

@ হোঞ্জাবি, আমি মনে করি আপনার এটি সঠিক টাইপ করতে হবে, আলা:as(list(basket), "itemMatrix")
হারলান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.