プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

ホフディングツリーアルゴリズムとは?ストリームデータ分類の仕組みを解説

ホフディングツリー(Hoeffding Tree)アルゴリズムは、ストリーミングデータの分類に特化した決定木学習手法です。当初はWebクリックストリームの追跡に活用され、ユーザーがどのWebホストやサイトへアクセスする可能性が高いかを予測するモデルの構築に用いられていました。従来のバッチ学習とほぼ同等の決定木を生成しながら、準線形時間(サブリニア時間)で動作できる点が最大の特徴です。

ホフディング境界による分割属性の選択

このアルゴリズムの中核にあるのは、「少量のサンプルでも最適な分割属性を選択できることが多い」というアイデアです。この考え方は、ホフディング境界(Hoeffding bound、加法的チェルノフ境界とも呼ばれます)によって数学的に裏付けられています。

範囲Rを持つ確率変数rについてN回の独立な観測を行うことを考えます。ここでrは属性選択尺度です(確率であればR=1、情報利得であればlog c、cはクラス数)。ホフディングツリーでは、rとして情報利得が採用されます。この標本平均をr′とすると、ホフディング境界は、真の平均が少なくとも r′ − ε 以上になる確率が 1 − δ であることを示します。ここでδはユーザーが指定するパラメータであり、εは次式で計算されます。

$$\varepsilon=\sqrt{\frac{R^{2}ln\frac{1}{\delta}}{2N}} $$

アルゴリズムの入力と処理の流れ

ホフディングツリーアルゴリズムは、ホフディング境界を利用することで、ノードにおける分割属性の選択に必要な最小限の事例数Nを高い確率で特定します。多くの他の境界式と異なり、ホフディング境界は確率分布に依存しない点が重要です。使用する属性選択尺度(例えば情報利得)の確率分布を事前に知ることが困難な場合が多いため、この性質は非常に有用です。

アルゴリズムへの入力は、属性Aで記述された訓練事例のシーケンスSと、精度パラメータδです。また、評価関数G(Ai)が与えられ、情報利得、利得比、ジニ指数など、任意の属性選択尺度を使用できます。決定木の各ノードでは、残りの属性Aiの中からG(Ai)を最大化するものを選択する必要があります。目標は、ホフディング境界が満たされる最小のタプル数Nを見つけることです。

あるノードにおいて、Gが最も大きい属性をAa、2番目に大きい属性をAbとします。G(Aa) − G(Ab) > ε が成り立てば、Aaが真に最良の分割属性であることが高い確率で保証されるため、追加データを待つことなく、その時点でノードを分割できます。

維持すべき統計量とメモリ要件

ホフディングツリーアルゴリズムで保持が必要な統計量は、クラスラベルykを持つ属性Aiの値vjの出現回数nijkのみです。したがって、属性数をd、任意の属性が取りうる値の最大数をv、クラス数をc、木の最大深さ(レベル数)をlとすると、必要な総メモリ量はO(ldvc)で表されます。

  1. プリム法による最小全域木アルゴリズムの徹底解説

    はじめに重み付き連結グラフ G(V, E) のすべての辺にコストが与えられているとき、プリム法はこのグラフから最小全域木を見つけ出すアルゴリズムです。木を成長させるアプローチプリム法は、木を少しずつ成長させていく手法を採用しています。まず始点となる頂点を選び、そこから隣接する頂点の中で最もコストの低い辺を順番に選びながら、木を一つずつ拡張していきます。具体的には、次の図のようなグラフを例として考えます。基本的な考え方:2つの集合による管理この問題は、2つの集合を使って効率的に解くことができます。選択済み集合:すでに木に含まれた頂点を管理します。未考慮集合:まだ木に追加されていない頂点を管理しま

  2. JSPのimport属性とは?使い方と書き方をわかりやすく解説

    JSPのimport属性は、Javaのimport文とまったく同じ役割を果たし、同じように動作します。import属性に指定する値は、読み込みたいパッケージ名です。単一パッケージをインポートする方法例えば、java.sql.*をインポートしたい場合は、次のようにpageディレクティブを記述します。<%@ page import = "java.sql.*" %>複数のパッケージを同時にインポートする方法複数のパッケージを読み込みたい場合は、カンマ(,)で区切って指定できます。以下のように記述します。<%@ page import = "java.