2017-11-08 5 views
1

私は大きなデータセットを持っており、変数間の関連ルールをマイニングしようとしています。多くの連続変数間の関連ルール

私の問題は、私が関連ルールを探す必要がある160の変数と、1800を超えるアイテムセットがあることです。

さらに、私の変数は連続変数です。関連ルールをマイニングするために、私は通常aprioriアルゴリズムを使用しましたが、よく知られているように、このアルゴリズムではカテゴリ変数を使用する必要があります。

私はこの場合どのような種類のアルゴリズムを使用することができますか?

私のデータセットの制限された例は以下の通りです:

ID_Order Model  ordered quantity 
A.1  typeX  20 
A.1  typeZ  10 
A.1  typeY  5 
B.2  typeX  16 
B.2  typeW  12 
C.3  typeZ  1 
D.4  typeX  8 
D.4  typeG  4 
... 

私の目標は、誰がどのように上の任意の提案を持っています多分Rでニューラルネットワークアルゴリズムで、相関ルールと異なる製品間の相関関係をマイニングすることでしょうこの問題を解決します?事前

+0

外観arules](https://cran.r-project.org/web/packages/arules/index.ht ml) – mtoto

答えて

1

ありがとうございます。このようなあなたのデータセットからのトランザクションを作成することができます。

library(dplyr) 

をこの関数はID_OrderID_Order

concat <- function(x) { 
    return(list(as.character(x))) 

} 

グループdfあたりのトランザクションを取得するために使用され、連結する。 pull()は、連結されたModelをリストに返します。 ID_Order

a_list <- df %>% 
    group_by(ID_Order) %>% 
    summarise(concat = concat(Model)) %>% 
    pull(concat) 

セット名:

names(a_list) <- unique(df$ID_Order) 

次に、あなたがパッケージarules使用することができます。transactionsクラスの

のGetオブジェクト:

transactions <- as(a_list, "transactions") 

抽出ルールを。 suppconf respに最小サポートと最小信頼を設定できます。

inspect(rules) 

をそして、これはあなたが得るものです::

 lhs    rhs  support confidence lift  count 
[1] {}   => {typeZ} 0.50 0.50  1.0000000 2  
[2] {}   => {typeX} 0.75 0.75  1.0000000 3  
[3] {typeW}  => {typeX} 0.25 1.00  1.3333333 1  
[4] {typeG}  => {typeX} 0.25 1.00  1.3333333 1  
[5] {typeY}  => {typeZ} 0.25 1.00  2.0000000 1  
[6] {typeZ}  => {typeY} 0.25 0.50  2.0000000 1  
[7] {typeY}  => {typeX} 0.25 1.00  1.3333333 1  
[8] {typeZ}  => {typeX} 0.25 0.50  0.6666667 1  
[9] {typeY,typeZ} => {typeX} 0.25 1.00  1.3333333 1  
[10] {typeX,typeY} => {typeZ} 0.25 1.00  2.0000000 1  
[11] {typeX,typeZ} => {typeY} 0.25 1.00  4.0000000 1 
+0

こんにちは@clemens、あなたの答えのおかげで非常に詳細ですが、私はスクリプトを実行しようとしたときにエラーが発生します。私はコード 'a_list <- df %>% GROUP_BY(ID_Order)%>% まとめたもの(CONCAT = CONCAT(モデル))%>% プル(連結)のこの部分を実行すると は'私はこのエラーを取得:(関数内 'エラー(クラス、fdef、mtable): 署名 'tbl_df "'の'関数 'の引き継ぎメソッドを見つけることができません パッケージ間の競合のため、おそらくgit2rとdplyrの があることがわかりましたありがとうございました –

+0

エラーを再現できませんが、 'pull(concat)'の代わりに 'dplyr :: pull(concat)'を明示的に使用することができます。 1とdplyr 0.7.4 – clemens

+0

ありがとう!非常に役に立ちました! –

1

? transactionsの例のセクションから:使用するルールを検査する

rules <- apriori(transactions, 
       parameter = list(supp = 0.1, conf = 0.5, target = "rules")) 

[にて

## example 4: creating transactions from a data.frame with 
## transaction IDs and items (by converting it into a list of transactions first) 
a_df3 <- data.frame(
    TID = c(1,1,2,2,2,3), 
    item=c("a","b","a","b","c","b") 
) 
a_df3 
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions") 
trans4 
inspect(trans4) 
関連する問題