在apriori函数中,我希望结果只包含LHS HouseOwnerFlag=0和LHS中的这两个变量HouseOwnerFlag=1.RHS应仅包含列中的属性Product.例如:
# lhs rhs support confidence lift
# 1 {HouseOwnerFlag=0} => {Product=SV 16xDVD M360 Black} 0.2500000 0.2500000 1.000000
# 2 {HouseOwnerFlag=1} => {Product=Adventure Works 26" 720p} 0.2500000 0.2500000 1.000000
# 3 {HouseOwnerFlag=0} => {Product=Litware Wall Lamp E3015 Silver} 0.1666667 0.3333333 1.333333
# 4 {HouseOwnerFlag=1} => {Product=Contoso Coffee Maker 5C E0900} 0.1666667 0.3333333 1.333333
Run Code Online (Sandbox Code Playgroud)
部分答案在这个问题中得到了解决: R arules,我的唯一规则来自特定列
所以现在我使用以下内容:
rules <- apriori(sales, parameter=list(support =0.01, confidence =0.8, minlen=2), appearance = list(lhs=c("HouseOwnerFlag=0", "HouseOwnerFlag=1")))
然后我从其他SO问题中使用它来确保只有Product列在RHS上:
inspect( subset( rules, subset = rhs %pin% "Product=" ) )
结果是这样的:
# lhs rhs support confidence lift
# 1 {ProductKey=153, IncomeGroup=Moderate, BrandName=Adventure Works } => {Product=SV 16xDVD M360 Black} 0.2500000 0.2500000 1.000000
# 2 {ProductKey=176, MaritalStatus=M, ProductCategoryName=TV and Video } => {Product=Adventure Works 26" 720p} 0.2500000 0.2500000 1.000000
# 3 {BrandName=Southridge Video, NumberChildrenAtHome=0 } => {Product=Litware Wall Lamp E3015 Silver} 0.1666667 0.3333333 1.333333
# 4 {HouseOwnerFlag=1, BrandName=Southridge Video, ProductKey=170 } => {Product=Contoso Coffee Maker 5C E0900} 0.1666667 0.3333333 1.333333
Run Code Online (Sandbox Code Playgroud)
显然,LHS能够包含所有可能的列,而不仅仅是HouseOwnerFlag我指定的列.从其他stackoverflow问题,我看到我可以放入default="rhs"apriori函数,如下所示:
rules <- apriori(sales, parameter=list(support =0.001, confidence =0.5, minlen=2), appearance = list(lhs=c("HouseOwnerFlag=0", "HouseOwnerFlag=1"), default="rhs"))
然后在检查时(没有子集部分inspect(rules),规则(7)比以前少得多,但它确实只包含HouseOwnerFlag在LHS中:
# lhs rhs support confidence lift
# 1 {HouseOwnerFlag=0} => {MaritalStatus=S} 0.2500000 0.2500000 1.000000
# 2 {HouseOwnerFlag=1} => {Gender=M} 0.2500000 0.2500000 1.000000
# 3 {HouseOwnerFlag=0} => {NumberChildrenAtHome=0} 0.1666667 0.3333333 1.333333
# 4 {HouseOwnerFlag=1} => {Gender=M} 0.1666667 0.3333333 1.333333
Run Code Online (Sandbox Code Playgroud)
然而,在RHS中,RHS中的产品列没有任何内容.因此它没有任何用处inspect,subset因为它会返回null.我用不同的支持号码对它进行了多次测试,以便进行实验,看看产品是否会出现,但7个相同的规则保持不变.
所以我的问题是,如何指定LHS(HouseOwnerFlag)和RHS(产品)?我究竟做错了什么?
编辑:您可以通过从https://www.dropbox.com/s/tax5xalac5xgxtf/testdf.txt?dl=0下载此testdataset来重现此问题请
注意,我只从一个巨大的数据集中获取前20行,所以不幸的是,此处的输出与上面显示的示例不具有相同的产品名称.但问题仍然存在.我希望能够只获得HouseOwnerFlag=0和/或HouseOwnerFlag=1在ProductRHS 上的LHS和专栏上.
Ver*_*mid 11
似乎不能同时约束lhs和rhs(在使用你的数据之前我也没有).但你可以使用子集.编辑:我错了,你也可以立刻约束lhs和rhs,见下面的另一个解决方案.我保留解决方案1,因为在某些情况下,计算更大的集合然后由左侧分割可能是有用的.
解决方案1:
rules_sales <- apriori(sales,
parameter=list(support =0.001, confidence =0.5, minlen=2, maxlen=2),
appearance = list(lhs=c("HouseOwnerFlag=0", "HouseOwnerFlag=1"),
default="rhs"))
rules_subset <- subset(rules_sales, (rhs %in% paste0("Product=", unique(sales$Product))))
inspect(rules_subset)
Run Code Online (Sandbox Code Playgroud)
得到:
lhs rhs support confidence lift
1 {HouseOwnerFlag=0} => {Product=SV DVD Movies E100 Yellow} 0.05 0.5 10
2 {HouseOwnerFlag=0} => {Product=Fabrikam Refrigerator 4.6CuFt E2800 Grey} 0.05 0.5 5
3 {HouseOwnerFlag=1} => {Product=Contoso SLR Camera M144 Gold} 0.10 0.5 5
Run Code Online (Sandbox Code Playgroud)
但你应该小心你的低支持:
Warning in apriori(sales, parameter = list(support = 0.001, confidence = 0.5, :
You chose a very low absolute support count of 0. You might run out of memory! Increase minimum support.
Run Code Online (Sandbox Code Playgroud)
解决方案2:
我被参数默认的定义所欺骗.立即使用lhs和rhs告诉分配给其中一个的每个项目,它只能用于lhs/rhs.参数"default"自动设置为"both",并且lhs/rhs中未使用的所有其他项都可以用于两者(在R包中实现的appearence参数的说明:http://www.inside-r. org/node/86290,我意识到在阅读原始C实现的手册时必须有可能:http://www.borgelt.net/doc/apriori/apriori.html#appearin).你必须设置default="none"然后你可以在不使用子集的情况下约束lhs和rhs.
rules_sales <- apriori(sales,
parameter=list(support =0.001, confidence =0.5, minlen=2, maxlen=2),
appearance = list(lhs=c("HouseOwnerFlag=0", "HouseOwnerFlag=1"),
rhs=paste0("Product=", unique(sales$Product)), default="none"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16604 次 |
| 最近记录: |