
C# を使用してアソシエーション ルール マイニング アルゴリズムを作成する方法
はじめに:
アソシエーション ルール マイニングはデータ マイニングにおける重要なタスクの 1 つであり、データ マイニングを検出するために使用されます。データセット内の要素 隠されたパターンと関係。一般的なアプリケーションには、マーケット バスケット分析、推奨システム、ネットワーク ユーザー行動分析などが含まれます。この記事では、C# を使用して相関ルール マイニング アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。
1. 相関ルール マイニング アルゴリズムの概要
相関ルール マイニング アルゴリズムの目標は、データ セット内で頻繁に使用されるアイテム セットと相関ルールを検出することです。頻繁に使用される項目セットは、データ セット内に頻繁に出現する項目の組み合わせを指します。一方、相関ルールは、頻繁に使用される項目セットから派生したパターンです。このアルゴリズムには主に 2 つのステップが含まれます: 1) 候補アイテム セットの生成; 2) 頻繁なアイテム セットのフィルタリングと相関ルールの生成。
2. 相関ルール マイニング アルゴリズムを実装する C# コード
- データの準備
まず、トランザクション データを含むデータ セットを準備する必要があります。これは C# の List 構造を使用して表すことができ、各 List はトランザクションを表し、各要素は項目を表します。
1 2 3 4 5 | List<List<string>> dataset = new List<List<string>>();
dataset.Add( new List<string> { "A" , "B" , "C" });
dataset.Add( new List<string> { "A" , "B" , "D" });
dataset.Add( new List<string> { "B" , "C" , "D" });
|
ログイン後にコピー
- 候補アイテム セットの生成
次に、データ セットに基づいて候補アイテム セットを生成する必要があります。候補アイテムセットとは、頻繁に使用されるアイテムセットとなる可能性のあるアイテムセットを指します。これは、C# の辞書構造を使用して表すことができます。キーは候補項目セットを表し、値は候補項目セットのサポート数を表します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Dictionary<List<string>, int> candidateItemsets = new Dictionary<List<string>, int>();
foreach (List<string> transaction in dataset)
{
foreach (string item in transaction)
{
List<string> candidate = new List<string> { item };
if (candidateItemsets.ContainsKey(candidate))
{
candidateItemsets[candidate]++;
}
else
{
candidateItemsets.Add(candidate, 1);
}
}
}
|
ログイン後にコピー
- 頻繁に使用されるアイテムセットのフィルタリング
このステップでは、頻繁に使用されるアイテムセットをフィルタリングして除外します。頻繁に使用されるアイテムセットとは、サポートがしきい値以上のアイテムセットを指します。これは C# の List 構造で表すことができ、各 List は頻繁に使用される項目セットを表します。
1 2 3 4 5 6 7 8 9 10 11 | List<List<string>> frequentItemsets = new List<List<string>>();
int supportThreshold = 2;
foreach ( var itemset in candidateItemsets)
{
if (itemset.Value >= supportThreshold)
{
frequentItemsets.Add(itemset.Key);
}
}
|
ログイン後にコピー
- 相関ルールの生成
最後に、頻度の高い項目セットに基づいて相関ルールを生成します。相関ルールとは、ある程度の信頼度を持った頻出項目セット間のルールを指します。これは、C# のリスト タプル構造を使用して表すことができます。各タプルは相関ルールを表します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | List<Tuple<List<string>, List<string>>> associationRules = new List<Tuple<List<string>, List<string>>>();
double confidenceThreshold = 0.5;
foreach ( var frequentItemset in frequentItemsets)
{
int itemsetLength = frequentItemset. Count ;
for (int i = 1; i < itemsetLength; i++)
{
List<List<string>> combinations = GetCombinations(frequentItemset, i);
foreach ( var combination in combinations)
{
List<string> remainingItems = frequentItemset.Except(combination).ToList();
double confidence = (double)candidateItemsets[frequentItemset] / candidateItemsets[combination];
if (confidence >= confidenceThreshold)
{
associationRules.Add( new Tuple<List<string>, List<string>>(combination, remainingItems));
}
}
}
}
|
ログイン後にコピー
- 補助関数
上記のコードでは、補助関数 GetCombinations を使用して項目セットの組み合わせを生成します。具体的なコードの実装を以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public List<List<string>> GetCombinations(List<string> items, int length)
{
List<List<string>> combinations = new List<List<string>>();
Combine(items, length, 0, new List<string>(), combinations);
return combinations;
}
private void Combine(List<string> items, int length, int start, List<string> currentCombination, List<List<string>> combinations)
{
if (length == 0)
{
combinations.Add( new List<string>(currentCombination));
return ;
}
if (start == items. Count )
{
return ;
}
currentCombination.Add(items[start]);
Combine(items, length - 1, start + 1, currentCombination, combinations);
currentCombination.RemoveAt(currentCombination. Count - 1);
Combine(items, length, start + 1, currentCombination, combinations);
}
|
ログイン後にコピー
3. 概要
この記事では、C# を使用して相関ルール マイニング アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。候補アイテム セットの生成、頻繁に使用されるアイテム セットのフィルタリング、および関連付けルールの生成の 3 つのステップを通じて、トランザクション データ セットから隠れたパターンと関連付けを発見できます。この記事が相関ルール マイニング アルゴリズムと C# プログラミングの理解に役立つことを願っています。
以上がC# を使用して相関ルール マイニング アルゴリズムを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。