R- 有没有办法通过电梯限制先验规则?

Tra*_*ter 2 r apriori

我正在查看这个数据集:https://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/crx.data

我对数据进行了预处理:

ca.1<-read.csv("CreditApproval.csv",T,",")

# From http://stackoverflow.com/q/4787332/
remove_outliers <- function(x, na.rm = TRUE, ...) {
  qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
  H <- 1.5 * IQR(x, na.rm = na.rm)
  y <- x
  y[x < (qnt[1] - H)] <- NA
  y[x > (qnt[2] + H)] <- NA
  y
}

ca.1$A2<-remove_outliers(ca$A2)
ca.1$A3<-remove_outliers(ca$A3)
ca.1$A8<-remove_outliers(ca$A8)
ca.1$A11<-remove_outliers(ca$A11)
ca.1$A14<-remove_outliers(ca$A14)
ca.1$A15<-remove_outliers(ca$A15)
ca.1$A2<-discretize(ca.1$A2,"frequency",categories = 6)
ca.1$A3<-discretize(ca.1$A3,"frequency",categories = 6)
ca.1$A8<-discretize(ca.1$A8,"frequency",categories = 6)
ca.1$A11<-discretize(ca.1$A11,"frequency",categories = 6)
ca.1$A14<-discretize(ca.1$A14,"frequency",categories = 6)
ca.1$A15<-discretize(ca.1$A15,"frequency",categories = 6)

ca.1<-na.omit(ca.1)
Run Code Online (Sandbox Code Playgroud)

微调支持、置信度、最小/最大长度后,我仍然得到 65 条规则:

> rules<-apriori(ca.1, parameter= list(supp=0.15, conf=0.89, minlen=3, maxlen=4), appearance=list(rhs=c("class=-", "class=+"), default="lhs"))
> rules.sorted <- sort(rules, by="lift")
> inspect(rules.sorted)
     lhs                     rhs       support   confidence lift    
[1]  {A5=g,A9=t,A10=t}    => {class=+} 0.1521739 0.8974359  2.770607
[2]  {A4=u,A9=t,A10=t}    => {class=+} 0.1521739 0.8974359  2.770607
[3]  {A1=a,A9=f}          => {class=-} 0.1717391 0.9753086  1.442579
[4]  {A1=a,A9=f,A13=g}    => {class=-} 0.1608696 0.9736842  1.440176
...[65]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,+规则比规则具有更大的提升力,但支持和信心却更少-。我一直在浏览文档,找不到任何限制电梯的参数。这可能吗?如果没有,遇到这种情况你会怎么做?

小智 5

arules包中定义了一个特殊函数来子集此对象类型。为了过滤掉提升值小于 2 的规则,您可以尝试以下操作:

subset(rules, subset = lift > 2)
Run Code Online (Sandbox Code Playgroud)