I. コンセプト 関連性分析は、大規模なデータセットに隠された意味のあるつながりを発見するために使用されます。発見された関係は、関連ルールまたは頻繁なアイテムセットの形式で表現できます。 アイテムセット: 関連分析では、0 個以上のアイテムのセットをアイテムセットと呼びます。アイテムセットに k 個のアイテムが含まれている場合、それは k アイテムセットと呼ばれます。たとえば、{ビール、おむつ、牛乳、ピーナッツ} は 4 つのアイテムのセットです。空セットは、アイテムを含まないアイテムセットです。 相関ルール: X → Y という形式の含意式です。ここで、X と Y は互いに素な項目セット、つまり X∩Y=∅ です。関連ルールの強さは、そのサポートと信頼度によって測定できます。 サポート: アイテム セットまたはルールがすべてのものに出現する頻度。特定のデータ セットに対してルールを使用できる頻度を決定します。 σ(X): アイテムセットXのサポート数を表す アイテムセット X のサポート: s(X) = σ(X) / N; ルール X → Y のサポート: s(X → Y) = σ(X∪Y) / N 信頼性: X を含むトランザクションで Y が発生する頻度を決定します。 c(X → Y) = σ(X∪Y)/σ(X) サポートは重要な指標です。サポートが非常に低いルールは偶然にしか現れず、サポートが低いルールはおそらく無意味だからです。したがって、サポートは通常、それらの意味のないルールを削除するために使用されます。 信頼度尺度は、ルールによる推論の信頼性です。特定のルール X → Y の場合、信頼度が高いほど、X を含むものの集合に Y が出現する可能性が高くなります。つまり、X が与えられた場合の Y の条件付き確率 P(Y|X) は大きくなります。 2. R言語でのAprioriアルゴリズムの実装 R 言語での Apriori アルゴリズムの実装は、arules パッケージに含まれています。この記事では、アルゴリズムの実装については触れず、arules パッケージを適用して関連ルールのマイニングを実現することのみを説明します。 1. データ ソース: arules パッケージの Groceries データセットを使用します。このデータセットは、実際のスーパーマーケットの 1 か月間の買い物データで、9,835 件のトランザクションが含まれています。スーパーマーケットの1日12時間営業を基準に計算すると、1時間あたりの取引件数は約9835/30/12=27.3となり、中規模スーパーマーケットであることがわかります。
2. データの調査と準備: (1) トランザクションデータの各行は、単一のインスタンスを指定します。各レコードには、カンマで区切られた任意の数の製品のリストが含まれます。inspect() 関数を使用すると、スーパーマーケットのトランザクションレコードと各トランザクションの製品名を確認できます。summary() 関数を使用すると、データセットに関する基本的な情報を表示できます。
分析: ①密度値0.02609146(2.6%)は、非ゼロのマトリックスセルの割合を示します。 データ セットには、合計 9835 行 (取引記録) と 169 列 (取引されるすべての種類の商品) があります。したがって、マトリックスには 9835*169=1662115 の位置があります。合計 1662115*0.02609146=43367 個のアイテムが 30 日以内に購入されたと結論付けることができます。さらに、各トランザクションで 43367/9835=4.409 個のアイテムが購入されたと結論付けることができます。平均列から、(平均 = 4.409) 計算が正しいことがわかります。 ②最も頻繁に購入される商品:取引データの中で最も頻繁に購入される商品をリストします。全乳は 9835 件の取引のうち 2513 回購入されたため、全乳がすべての取引に出現する確率は 2513/9835 = 25.6% であると結論付けることができます。 ③要素(アイテムセット/トランザクション)の長さ分布:トランザクションのサイズに関する統計情報を表示します。合計2159のトランザクションに1つのアイテムが含まれ、1つのトランザクションに32のアイテムが含まれています。分位分布から、トランザクションの25%に2つ以下のアイテムが含まれ、約半数のトランザクションに3つのアイテムが含まれていることがわかります。 (2)製品サポートの可視化 - 製品頻度グラフ 統計を視覚化するには、itemFrequenctyPlot() 関数を使用して、含まれる特定のアイテムのトランザクション比率を示す棒グラフを生成できます。多くの種類の製品が含まれているため、一度にすべてを表示することはできません。そのため、support または topN パラメータを使用して、一部の製品を表示から除外することができます。 (3)取引データの可視化 - 疎行列の描画 スパース行列全体は、image() 関数を使用して視覚化できます。
上の図からわかるように、レコードの最初の行 (トランザクション) には 4 つの商品 (黒い四角) が含まれています。このような視覚化は、データ探索に非常に便利なツールです。これは、潜在的なデータの問題を特定するのに役立つ場合があります。たとえば、列は製品名を表しているため、列が上から下まで埋められている場合、この製品はすべてのトランザクションで購入されたことを意味します。一方、グラフのパターンは、特にデータが興味深い方法で並べ替えられている場合に、トランザクションまたは製品の興味深い部分を明らかにするのに役立ちます。たとえば、トランザクションが日付順に並べ替えられている場合、黒い四角のパターンは、人々が購入する製品の数量またはタイプが季節性によって影響を受けていることを明らかにする可能性があります。この視覚化は、セルが小さすぎて興味深いパターンを見つけられないため、非常に大きなトランザクション データセットでは意味がありません。 3. モデルのトレーニング
apriori() 関数の実行は簡単ですが、適切な数の関連ルールを生成するサポートおよび信頼度パラメータを見つけるには、かなりの試行錯誤が必要になる場合があります。 パラメータの設定が高すぎると、ルールがまったく生成されなかったり、ルールが一般的すぎてあまり役に立たなくなったりする可能性があります。一方、しきい値が低すぎると、ルールの数が多くなり、実行に長い時間がかかったり、学習フェーズ中にメモリが不足したりする可能性があります。 aprior() 関数は、デフォルトでサポート = 0.1、信頼度 = 0.8 を設定します。ただし、デフォルト設定ではルールを取得できません。
サポート設定問題を解決する 1 つの方法は、興味深いパターンを検討する前に、必要なトランザクションの最小数について考えることです。たとえば、製品が 1 日に 2 回購入される場合、1 か月で 60 件のトランザクション レコードがあると想定できます。これが、私たちが関心のあるものである可能性があります。これに基づいて、必要なサポートを計算できます。サポート = 60/9835 = 0.006。 信頼度について: 信頼度が低すぎると、信頼できないルールが多数出現して圧倒される可能性があります。信頼度が高すぎると、明らかなルールが多数出現して、興味深いパターンを見つけることが不可能になる可能性があります。適切な信頼度レベルの選択は、分析の目的によって異なります。保守的な値から始めることができます。実行可能なルールがないことがわかった場合は、信頼度を下げてルールの検索範囲を広げることができます。 この例では、信頼度レベル 0.25 から開始します。つまり、ルールが結果に含まれるためには、少なくとも 25% の確率で正しくなければなりません。これにより、最も信頼性の低いルールは除外されます。 minlen = 2 は、ルールに少なくとも 2 つの製品が含まれていることを意味します。これにより、特定の製品が頻繁に購入されるという理由だけで、役に立たないルールが作成されることを防ぐことができます。たとえば、上記の分析では、全乳の確率 (サポート) は 25.6% であることがわかりました。次のルールが出現する可能性があります: {}=>全乳、これは意味がありません。 最後に、上記の分析に基づいて、次のパラメータ設定を決定します。
4. モデルのパフォーマンスを評価する
ここで、一般的な購入率と比較して商品が購入される可能性を測る指標であるリフトについて説明する必要があります。簡単に言えば、たとえば、最初のルール {鉢植え} => {全乳}、リフト = 1.565 は、(鉢植えを購入した後に全乳を購入する確率) が (鉢植えを購入せずに全乳を購入する確率) の 1.565 倍であることを意味します。 最初のルールの解釈: 顧客が鉢植えを購入する場合、全乳も購入します。サポートは 0.0070、信頼度は 0.4000 です。このルールはトランザクションの約 0.7% をカバーし、鉢植えを購入した後に全乳を購入する確率は 40% であると判断できます。リフト値は 1.565 で、全乳を購入する確率は鉢植えを購入しない顧客の 1.565 倍高いことを示しています。上記の分析から、顧客の 25.6% が全乳を購入することがわかっているため、計算されたリフトは 0.40/0.256=1.56 となり、表示された結果と一致します。注: サポートでマークされた列はルールのサポートを表し、前提 (左辺) または結果 (右辺) のサポートを表しません。 揚力は、lift(X → Y) = P (Y| X) / P (Y)であり、lift(X → Y)はlift(Y → X)と同じです。 リフト値が 1 より大きい場合、2 つの商品カテゴリが、どちらか一方だけを購入するよりも、一緒に購入されることが多いことを意味します。リフト値が大きいということは、ルールが重要であり、項目間の実際のつながりを反映していることを示す重要な指標です。 5. モデルのパフォーマンスを向上させる (1)相関ルールセットのソート マーケット バスケット分析の目的に応じて、サポート、信頼度、リフトが高いルールが最も役立つ場合があります。 arules パッケージには、by パラメータを「support」、「confidence」、または「lift」として指定することでルールのリストを並べ替える sort() 関数が含まれています。 デフォルトでは、ソートは降順です。パラメータ decline=FALSE を指定すると、ソート順を逆にすることができます。
(2)関連ルールのサブセットの抽出:subset()関数を使用して、興味のあるルールを抽出できます。
上記は、R 言語アドオン パッケージ arules に実装されている apriori アルゴリズムを使用した関連ルール マイニングのアプリケーションです。ぜひご連絡ください。 |
<<: 18年経った今、マイクロソフトの自然言語処理技術はどうなっているのでしょうか?
>>: スタートアップにハイエンド AI を実装するにはどうすればよいでしょうか?
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
諺にあるように、何千冊もの本を読むことは何千マイルも旅をすることと同じです。休暇中に本を読まないわけ...
「知識が不足していると、心配しすぎてしまいます。」この文章は、賢明な投資アドバイスの良い注釈です。...
自動車メーカーは、施設を近代化し、事業運営をより持続可能にするために、スマート製造戦略を採用していま...
少し前、UIUC と南洋理工大学の 3 人の研究者が 20 か月かけて 673 本の論文を研究し、信...
BGRによると、PRX Quantum誌に最近発表された研究では、ブラックホール内部をさらに詳しく調...
パート1(25用語)ビッグデータに不慣れな場合、この分野を理解したり、どこから始めればよいのかわから...
デジタル革新が主流の時代において、ディープフェイク動画の増加は広く懸念されるようになっている。ディー...
近年、世界の人工知能産業は急速な発展の勢いを見せており、セキュリティ状況はますます複雑になっています...
[51CTO.comからのオリジナル記事] 「インターネット+」から「インテリジェンス+」まで、革新...
産業用ロボットの年間成長率は44.9%でしたが、累積成長率は月ごとに低下しました。 Windのデータ...
[[176814]]映画、ドラマ、テレビ番組、オンライン ビデオなどの配信チャネルのコンテンツ ワー...