apriori 関数内で、LHSHouseOwnerFlag=0
とにこれら 2 つの変数のみが結果に含まれるようにし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
答えの一部はこの質問で解決されます: R arules, mine only rules from specific column
だから今私は以下を使用します:
rules <- apriori(sales, parameter=list(support =0.01, confidence =0.8, minlen=2), appearance = list(lhs=c("HouseOwnerFlag=0", "HouseOwnerFlag=1")))
次に、他の SO の質問からこれを使用して、製品列のみが 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
したがって、LHS には、HouseOwnerFlag
私が指定しただけでなく、考えられるすべての列を含めることができるようです。default="rhs"
他のスタックオーバーフローの質問から、次のようにアプリオリ関数を入れることができることがわかりました。
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
ただし、RHS には、RHS の Product 列からは何もありません。もちろん、nullを返すので、それは役に立ちinspect
ません。subset
製品が表示されるかどうかを実験するために、さまざまなサポート番号で何度かテストしましたが、7 つの同じルールは同じままです。
私の質問は、LHS (HouseOwnerFlag) と RHS (Product) の両方を指定するにはどうすればよいですか? 私は何を間違っていますか?
編集: https://www.dropbox.com/s/tax5xalac5xgxtf/testdf.txt?dl=0からこのテスト
データセットをダウンロードすることで、この問題を再現できます。残念ながら、ここでの出力には、上に表示した例と同じ製品名はありません。しかし、問題は依然として同じままです。HouseOwnerFlag=0
LHS のみおよび/またはRHSHouseOwnerFlag=1
の列を取得できるようにしたいです。Product