「エントロピーと情報獲得」とは何ですか?


338

私はこの本(NLTK)を読んでいて、混乱しています。 エントロピー次のように定義されます。

エントロピーは、各ラベルの確率とその同じラベルの対数確率の合計です

テキストマイニングに関してエントロピー最大エントロピーをどのように適用できますか?誰かが私に簡単でシンプルな例(ビジュアル)を教えてくれますか?


1
素敵で直感的なソリューションmath.stackexchange.com/questions/331103/...
ラヴィG

thsi質問のための素晴らしいと直感的な答えmath.stackexchange.com/questions/331103/...
ラヴィG

回答:


1048

エントロピーは意思決定ツリーの構築のコンテキストで言及されたと思います

例として、名を男性/女性のグループに分類する学習のタスクを想像してください。これには、またはのいずれかでラベルが付けられた名前のリストが与えられ、データに適合するモデルを学習して、目に見えない新しい名の性別を予測するために使用できます。mf

name       gender
-----------------        Now we want to predict 
Ashley        f              the gender of "Amro" (my name)
Brian         m
Caroline      f
David         m

最初のステップは、予測したいターゲットクラスに関連するデータの特徴決定することです。特徴の例には、最初/最後の文字、長さ、母音の数、母音で終わるなどがあります。したがって、特徴を抽出すると、データは次のようになります。

# name    ends-vowel  num-vowels   length   gender
# ------------------------------------------------
Ashley        1         3           6        f
Brian         0         2           5        m
Caroline      1         4           8        f
David         0         2           5        m

目標は、決定木を構築することですツリーの例は次のとおりです。

length<7
|   num-vowels<3: male
|   num-vowels>=3
|   |   ends-vowel=1: female
|   |   ends-vowel=0: male
length>=7
|   length=5: male

基本的に各ノードは単一の属性で実行されるテストを表し、テストの結果に応じて左または右に行きます。クラス予測(mまたはf)を含む葉ノードに到達するまで、ツリーを走査し続けます

したがって、このツリーでAmroという名前を実行する場合、「is the length <7?というテストを開始し、答えはyesなので、そのブランチに進みます。分岐に続いて、次のテスト「is the number of vowels <3?」は再びtrueと評価されます。これはとラベル付けされた葉ノードにつながりm、したがって予測は男性です(たまたまそうなので、ツリーは結果を正しく予測しました)。

ディシジョンツリーはトップダウン方式で作成されますが、問題は、各ノードで分割する属性をどのように選択するかです。その答えは、ターゲットクラスを可能な限り純粋な子ノードに最適に分割する機能を見つけることです(つまり、クラスが1つだけの純粋なノードではなく、男性と女性の両方の混合を含まないノード)。

この純度の尺度は、情報と呼ばれます。これは、ノードに到達した例を考えると、新しいインスタンス(名)を男性または女性に分類する必要があるかどうかを指定するために必要となると予想される情報量を表します。ノードでの男性クラスと女性クラスの数に基づいて計算します。

一方、エントロピー不純物の測定値です(反対)。それはのために定義されたバイナリクラスの値を持つa/bのように:

Entropy = - p(a)*log(p(a)) - p(b)*log(p(b))

このバイナリエントロピー関数を下の図に示します(ランダム変数は2つの値のいずれかをとることができます)。確率がのときに最大に達しますp=1/2。つまり、p(X=a)=0.5または同様に、確率がp(X=b)=0.550%/ 50%であるか、aまたはb(不確実性が最大になります)。エントロピー関数は、確率がp=1またはp=0完全に確実である場合(p(X=a)=1またはp(X=a)=0それぞれ、後者が意味する場合p(X=b)=1)の最小ゼロになります。

https://en.wikipedia.org/wiki/File:Binary_entropy_plot.svg

もちろん、エントロピーの定義は、N個の結果(2つだけではない)を持つ離散確率変数Xに対して一般化できます。

エントロピー

log式のは通常、底を2とする対数と見なされます)


名前分類のタスクに戻り、例を見てみましょう。ツリーを構築するプロセスのある時点で、次の分割を検討していたとします。

     ends-vowel
      [9m,5f]          <--- the [..,..] notation represents the class
    /          \            distribution of instances that reached a node
   =1          =0
 -------     -------
 [3m,4f]     [6m,1f]

あなたが見ることができるように、分割前に私たちは、9人の男性と5人の女性、すなわち持っていたP(m)=9/14としますP(f)=5/14。エントロピーの定義によれば、

Entropy_before = - (5/14)*log2(5/14) - (9/14)*log2(9/14) = 0.9403

次に、2つの子ブランチを見て分割を検討した後に計算されたエントロピーと比較します。の左側のブランチにはends-vowel=1、次のものがあります。

Entropy_left = - (3/7)*log2(3/7) - (4/7)*log2(4/7) = 0.9852

との正しいブランチends-vowel=0、私たちは持っています:

Entropy_right = - (6/7)*log2(6/7) - (1/7)*log2(1/7) = 0.5917

各ブランチのインスタンス数を重み係数として使用して左/右のエントロピーを組み合わせ(7つのインスタンスが左に、7つのインスタンスが右に)、分割後の最終的なエントロピーを取得します。

Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885

ここで、分割の前後のエントロピーを比較することにより、情報ゲインの測定値、またはその特定の機能を使用して分割を行うことによって得られた情報量を取得します。

Information_Gain = Entropy_before - Entropy_after = 0.1518

上記の計算は次のように解釈できます。end-vowels機能を使用して分割を行うことにより、サブツリー予測結果の不確実性を0.1518(情報の単位としてビットで測定)だけ小さくすることができました。

ツリーの各ノードで、この計算はすべてのフィーチャに対して実行され、最大の情報ゲインを持つフィーチャが貪欲な方法で分割に選択されます(したがって、不確実性/エントロピーが低い純粋な分割を生成するフィーチャが優先されます)。このプロセスはルートノードから再帰的に適用され、リーフノードにすべて同じクラスのインスタンスが含まれる場合に停止します(さらに分割する必要はありません)。

数値機能の処理方法、欠損値、ツリーの過剰適合枝刈りなど、この投稿の範囲を超える詳細をスキップしたことに注意してください。


1
@ all3fox:これは最後の段落で説明されています。純粋なノード(すべてのインスタンスが同じクラスに属しているリーフノードであるため、それ以上分割できない)に到達すると、その特定のブランチのプロセスが停止します。ノードは、このように...それが含まれている唯一のクラスを予測
アムロ

3
@ all3fox:実際には、純粋なノードに至るまで、非常に深い決定木が生成されます。これは、過剰適合(トレーニングデータに適合しすぎるが、トレーニングセットに含まれていない他のデータに一般化されていない木)です。したがって、通常、リーフノードの特定の最小数のインスタンスに達したときに停止し(そして多数派クラスを予測するだけ)、および/またはある種のプルーニングを実行します(詳細については、上記のWikipediaのリンクを参照してください)。
Amro

3
@Jas:これはよくここで説明されていますen.wikipedia.org/wiki/...
アムロ

1
@Rami:そう、オーバーフィットのような問題を回避するために、大きなツリーよりも小さなツリーの方が好ましい(つまり、より少ないテストで決定に到達する)。分割機能が選択されるヒューリスティックは貪欲な検索アルゴリズムであるため、生成されたツリーは、可能なすべてのツリーの空間で可能な最小のツリーであるとは限りません(分類エラーに関するグローバルに最適な1つであるとは限りません)。 )。これは実際にはNP完全な問題です...
Amro

1
@Rami:興味深いことに、別のアプローチを取るアンサンブル学習方法があります。1つのアイデアは、各候補分割で特徴のランダムなサブセットを選択し、これらのランダムなツリーの束を構築してその結果を平均化することにより、学習アルゴリズムをランダム化することです。Random Forestsのようなアルゴリズムをチェックする価値もあります。
Amro、2015年

45

まず、理解するのが一番the measure of informationです。

どうやっmeasureて情報を?

起こりそうもないことが起こったとき、それは大きなニュースだと言います。また、私たちが予測可能なことを言うとき、それは本当に興味深いものではありません。したがって、これを定量化するinteresting-nessには、関数は

  • イベントの確率が1(予測可能)の場合、関数は0を返します
  • イベントの確率が0に近い場合、関数は高い数を与える必要があります
  • 確率0.5のイベントが発生するとone bit、情報が提供されます。

制約を満たす自然な方法の1つは、

I(X) = -log_2(p)

ここで、pはイベントの確率ですX。ユニットはにありbit、コンピュータと同じビットを使用しています。0または1。

例1

フェアコインフリップ:

1回のコイン投げからどのくらいの情報を取得できますか?

答え: -log(p) = -log(1/2) = 1 (bit)

例2

明日、隕石が地球に衝突すると、p=2^{-22}22ビットの情報を得ることができます。

太陽が明日昇る場合、p ~ 1それは0ビットの情報です。

エントロピー

つまりinteresting-ness、イベントの期待に応えればY、それはエントロピーです。つまり、エントロピーは、イベントの面白さの期待値です。

H(Y) = E[ I(Y)]

より正式には、エントロピーはイベントの予想されるビット数です。

Y = 1:確率pでイベントXが発生

Y = 0:イベントXは確率1-pで発生しません

H(Y) = E[I(Y)] = p I(Y==1) + (1-p) I(Y==0) 
     = - p log p - (1-p) log (1-p)

すべてのログのログベース2。


22

私はあなたにグラフィックを与えることはできませんが、多分私は明確な説明を与えることができます。

毎日赤または緑に点滅するライトなどの情報チャネルがあるとします。それはどのくらいの情報を伝えますか?最初の推測は、1日1ビットかもしれません。しかし、青を追加して、送信者に3つのオプションがある場合はどうでしょうか。2の累乗以外のものを処理できるが、それでも加法的(可能なメッセージの数に2を掛ける方法 1ビットを追加する方法)である情報の測定値が欲しいです。ログ2(可能なメッセージの数)を取ることでこれを行うことができますが、より一般的な方法があることがわかります。

赤/緑に戻ったが、ランプが常に緑色に点滅する必要があるように、赤い電球が切れた(これは一般的な知識です)とします。これでチャンネルは役に立たなくなりました。次のフラッシュがどうなるかはわかっています。フラッシュは情報もニュースも伝えません。ここで電球を修理しますが、赤い電球が2回続けて点滅しないようにするという規則を課します。ランプが赤く点滅すると、次のフラッシュが何になるかがわかります。このチャネルでビットストリームを送信しようとすると、ビット数よりも多くのフラッシュ(実際には50%多い)でエンコードする必要があることがわかります。また、フラッシュのシーケンスを記述したい場合は、少ないビット数で記述できます。同じことが各フラッシュが独立している(コンテキストフリー)場合にも当てはまりますが、緑のフラッシュは赤よりも一般的です。確率を歪めると、シーケンスを記述するために必要なビットが少なくなり、含まれる情報が少なくなります。全緑、電球切れの制限。

さまざまなシンボルの確率に基づいて、信号内の情報量を測定する方法があることがわかります。シンボルx iを受信する確率がp iの場合、数量を考慮

-log p i

p iが小さいほど、この値は大きくなります。x iが2倍になる可能性が低い場合、この値は一定量増加します(log(2))。これは、メッセージに1ビットを追加することを思い出させるはずです。

シンボルがわからない(確率はわかっている)場合は、さまざまな可能性を合計して、この値の平均を計算できます。

I =-Σp i log(p i

ワンフラッシュ内の情報内容です。

赤色の電球が切れた場合:p  = 0、p  = 1、I =-(0 + 0)= 0
赤と緑の確率:p  = 1/2、p 緑= 1/2、I =-(2 * 1/2 * log(1/2))= log(2)
3色、等確率:p i = 1/3、I =-(3 * 1/3 * log(1/3))= log(3)
緑と赤、緑は2倍の可能性:p  = 1/3、p  = 2/3、I =-(1/3 log(1/3)+ 2/3 log(2/3))= log( 3)-2/3ログ(2)

これは、メッセージの情報コンテンツ、つまりエントロピーです。異なるシンボルが等確率であるときに最大になります。物理学者であれば自然対数を使用し、コンピュータ科学者であれば対数2を使用してビットを取得します。


10

情報理論、ベイズ法、MaxEntについて読むことをお勧めします。開始する場所は、David Mackayによるこの(オンラインで無料で入手できる)本です。

http://www.inference.phy.cam.ac.uk/mackay/itila/

これらの推論方法はテキストマイニングよりもはるかに一般的であり、この本または機械学習とMaxEntベイジアンに関する他の入門書に含まれている一般的な基本のいくつかを学習せずに、これをNLPに適用する方法を学ぶ方法を実際に考案することはできませんメソッド。

エントロピーと確率理論の情報処理と保存への関係は、非常に深いものです。それを味わうために、ノイズのある通信チャネルを介してエラーなしに渡すことができる情報の最大量はノイズプロセスのエントロピーに等しいとシャノンによる定理があります。また、データを圧縮してコンピューターの最小メモリを占有できる量を、データを生成したプロセスのエントロピーに結び付ける定理もあります。

コミュニケーション理論の定理をすべて学ぶ必要はないと思いますが、エントロピーとは何か、計算方法、情報と推論との関係などについての基礎を学ばなければ、これを学ぶことはできません。 ...


同じ考えを持っていたラファエル。それは、スタックオーバーフローで量子物理学を尋ねるようなもので、単一の答えをうまく抽出できない非常に広い領域です。
マークエッセル2011

5

画像のエントロピーを計算するアルゴリズムを実装していたときに、これらのリンクが見つかりましここここを参照ください

これは私が使用した疑似コードであり、画像ではなくテキストで機能するように適応させる必要がありますが、原則は同じです。

//Loop over image array elements and count occurrences of each possible
//pixel to pixel difference value. Store these values in prob_array
for j = 0, ysize-1 do $
    for i = 0, xsize-2 do begin
       diff = array(i+1,j) - array(i,j)
       if diff lt (array_size+1)/2 and diff gt -(array_size+1)/2 then begin
            prob_array(diff+(array_size-1)/2) = prob_array(diff+(array_size-1)/2) + 1
       endif
     endfor

//Convert values in prob_array to probabilities and compute entropy
n = total(prob_array)

entrop = 0
for i = 0, array_size-1 do begin
    prob_array(i) = prob_array(i)/n

    //Base 2 log of x is Ln(x)/Ln(2). Take Ln of array element
    //here and divide final sum by Ln(2)
    if prob_array(i) ne 0 then begin
        entrop = entrop - prob_array(i)*alog(prob_array(i))
    endif
endfor

entrop = entrop/alog(2)

どこかからこのコードを入手しましたが、リンクを掘り出すことができません。


画像にはさまざまなentropy()関数がありますが、適切なプレビューはありませんか?どのように(Matlabの自身のエントロピーにあなたのコードを比較することができます)と、ここでコードにmathworks.com/matlabcentral/fileexchange/28692-entropy後者では、開発者は、1次元信号が、ユーザーが2Dにそれを拡大し続けることがあると言います。--エントロピー関数は、元の信号が2ビットであり、かなり単純化されていることを前提としています。MIT-BIH不整脈ECG信号(11ビット)であるが、2D画像用に生成されたと想定します。ここでは単純な2ビットベースは使用できないと思います。
レオ・レオポルド・ヘルツ준 영

5

非公式に

エントロピーは情報または知識の可用性であり、情報の欠如は高エントロピーである未来の予測を困難にし(テキストマイニングにおける次の単語の予測)、情報/知識の可用性は未来のより現実的な予測(低エントロピー)に役立ちます。

あらゆる種類の関連情報はエントロピーを減らし、より現実的な未来を予測するのに役立ちます。その情報は、「肉」という単語が文に存在するか、「肉」という単語が存在しない可能性があります。これは情報獲得と呼ばれます


正式に

エントロピーは予測可能性の順序の欠如です


0

NLTKについての本を読んでいるときに、MaxEnt Classifier Moduleについて読んでみると興味深いでしょう。http: //www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent

テキストマイニングの分類の手順は次のとおりです。前処理(トークン化、スチーミング、情報ゲインによる機能選択...)、数値への変換(頻度またはTF-IDF)(これは、使用するときに理解する重要な手順だと思います)数値のみを受け入れるアルゴリズムへの入力としてのテキスト)、次にMaxEntで分類します。これは単なる例です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.