C# を使用してアソシエーション ルール マイニング アルゴリズムを作成する方法
はじめに:
アソシエーション ルール マイニングはデータ マイニングにおける重要なタスクの 1 つであり、データ マイニングを検出するために使用されます。データセット内の要素 隠されたパターンと関係。一般的なアプリケーションには、マーケット バスケット分析、推奨システム、ネットワーク ユーザー行動分析などが含まれます。この記事では、C# を使用して相関ルール マイニング アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。
1. 相関ルール マイニング アルゴリズムの概要
相関ルール マイニング アルゴリズムの目標は、データ セット内で頻繁に使用されるアイテム セットと相関ルールを検出することです。頻繁に使用される項目セットは、データ セット内に頻繁に出現する項目の組み合わせを指します。一方、相関ルールは、頻繁に使用される項目セットから派生したパターンです。このアルゴリズムには主に 2 つのステップが含まれます: 1) 候補アイテム セットの生成; 2) 頻繁なアイテム セットのフィルタリングと相関ルールの生成。
2. 相関ルール マイニング アルゴリズムを実装する C# コード
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" }); // ...
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); } } }
List<List<string>> frequentItemsets = new List<List<string>>(); int supportThreshold = 2; // 设置支持度阈值 // 筛选频繁项集 foreach (var itemset in candidateItemsets) { if (itemset.Value >= supportThreshold) { frequentItemsets.Add(itemset.Key); } }
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)); } } } }
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 サイトの他の関連記事を参照してください。