Tweet 共有

Last Updated on December 10, 2020

情報利得は、データセットを何らかの方法で変換することによるエントロピーの減少や驚きを計算するものである。

これは一般的に、学習データセットから決定木を構築する際に使用され、各変数の情報利得を評価し、情報利得を最大化する変数を選択し、それによってエントロピーを最小化し、データセットを効果的に分類するグループに分割することができます。 この少し異なる使用法では、計算は 2 つの確率変数間の相互情報と呼ばれます。

この投稿では、機械学習における情報利得と相互情報を発見します。

After reading this post, you will know:

  • Information gain is the reduction in entropy or surprise by transforming a dataset and is often used in training decision trees.
  • Information gain is calculated by comparing the entropy of the dataset before and after a transformation.The information gainはデータセットを変換する前と後のエントロピーを比較することによって計算されます。
  • 相互情報は、2つの変数間の統計的依存関係を計算し、変数選択に適用する場合の情報利得に与えられる名前である。

Kickstart your project with my new book Probability for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.

Let’s get started.

  • Update Nov/2019: Improved the description of info/entropy basics (thanks HR).
  • Update Aug/2020.Net.info.info.info.info の基本を改善。 式に足りない括弧を追加(Davidさんありがとうございます)

機械学習における情報利得と相互情報とは
Photo by Giuseppe Milo, some rights reserved.を追加しました。

概要

このチュートリアルは5つのパートに分かれています:

  1. 情報利得とは何か
  2. 情報利得を計算する実例
  3. 機械学習の情報利得例
  4. 相互情報とは何か 相互情報とは何か
  5. 相互情報とは何か
  6. 相互情報とは何か 相互情報とは何か 相互情報とは何か

    相互情報とは何か

    相互情報とは何か

  7. 情報利得と相互情報はどのように関係しているのか?
  8. 情報利得とは?

    情報利得(IG)は、ある確率変数の値に従ってデータセットを分割したときに、エントロピーや驚きがどれだけ減少するかを測定する。

    情報利得が大きいと、サンプルのグループまたはグループが低エントロピーであり、したがって驚きが少ないことを示唆します。 低い確率の事象はより多くの情報を持ち、高い確率の事象はより少ない情報を持ちます。 エントロピーは、ランダム変数、より具体的にはその確率分布にどれだけの情報があるかを定量化します。 歪んだ分布はエントロピーが小さく、事象が等しい確率を持つ分布はエントロピーが大きい。

    情報理論では、事象の「驚き」を表現したい。 低確率の事象はより驚くべきものであり、したがってより多くの情報量を持つ。 1345>

    • 傾いた確率分布(意外性がない)。 5233>
    • バランスのとれた確率分布(意外性がある):エントロピーが大きい。

    情報とエントロピーの基本については、チュートリアル:

    • A Gentle Introduction to Information Entropy

    さて、データセットのエントロピーを考えて見ましょう。

    データセットのエントロピーは、データセット内の観測値が1クラスまたは別のクラス(例えば2分類データセットの場合は2クラス)に属する確率分布で考えることができる。

    情報理論からのエントロピーの一つの解釈は、Sの任意のメンバー(すなわち.)の分類を符号化するために必要な情報の最小ビット数を規定するというものである。

    – Page 58, Machine Learning, 1997.

    たとえば、2 値分類問題(2 クラス)では、次のようにデータ サンプルのエントロピーを計算できます:

    • Entropy = -(p(0) * log(P(0))) + p(1) * log(P(1)))

    2つのクラスのサンプルが50/50に分かれているデータセットは、1ビットの最大エントロピー(最大驚き)を持ちますが、10/90に分かれている不均衡なデータセットは、データセットからランダムに抽出された例に対する驚きが少なくなるためエントロピーが小さくなります。

    これを、この不均衡データセットに対するエントロピー計算例をPythonで実証してみましょう。 完全な例を以下に示します。

    この例を実行すると、2値分類のデータセットのエントロピーは1ビット未満であることがわかります。 つまり、データセットから任意の例のクラスラベルを符号化するために、1ビット未満の情報が必要である。

    1
    entropy: 0.469ビット

    このように、エントロピーはデータセットの純度の計算として使用することができます。1345>

    0 ビットのエントロピーは 1 つのクラスを含むデータセットを示し、1 ビット以上のエントロピーはバランスのとれたデータセット (クラスの数による) の最大エントロピーを示し、その間の値はこれらの極値の間のレベルを示す。

    Information Gain は、データセットへの変更がデータセットの純度、たとえばクラスの分布にどう影響するかを計算するのにエントロピーを使用する方法を提供している。 エントロピーが小さいほど純度が高い、または驚きが少ないことを示唆する。

    … 情報利得は、単にこの属性に従って例を分割することによって生じるエントロピーの予想減少である。

    – Page 57, Machine Learning, 1997.

    例えば、値の範囲を持つランダム変数によってデータセットSを分割して純度に影響を評価したい場合がある。

    これは次のように計算できる:

    • IG(S, a) = H(S) – H(S | a)

    ここで IG(S, a) はランダム変数の変数aに対するデータセットSの情報、H(S)は変更前のデータセットに対するエントロピー(上述)、H(S | a)は変数aを与えられたデータセットに対する条件付きエントロピーである。

    この計算は、変数aに対するデータセットSのゲインを記述する。これは、データセットを変換する際に保存されたビット数である。

    条件付きエントロピーは、データセットをaの各観測値についてグループに分割し、データセット全体のうち各グループ内の例の比率の合計に各グループのエントロピーを乗じたものを計算することによって、計算することができる。

    • H(S | a) = sum v in a Sa(v)/S * H(Sa(v))

    ここでSa(v)/Sは変数aが値vを持つデータセット中の例の数の比率、H(Sa(v))は変数aが値vを持つサンプル群のエントロピーである。

    これは少しわかりにくいかもしれません。

    情報利得の計算を具体的にするために、作業例を示します。

    Want to learn Probability for Machine Learning

    Take my free 7-day email crash course now (with sample code).(無料サンプルコード付き)。

    Click to sign-up and also get a free PDF Ebook version of the course.

    Download Your FREE Mini-Course

    情報利得の計算の実例

    このセクションでは、作業例で情報利得の計算を具体化することになります。

    クラス0とクラス1に属するサンプルの比率からサンプル群のエントロピーを計算する関数を定義することができます。

    ここで、クラス0が13、クラス1が7で、20例のデータセットを考えます。 このデータセットのエントロピーを計算すると、1ビット未満になる。

    ここで、データセット内の変数の1つが、”値1 “と “値2 “という2つのユニークな値を持っていると考える。 我々はこの変数の情報利得を計算することに興味がある。

    データセットをvalue1で分割すると、クラス0が7つ、クラス1が1つの8つのサンプルのグループがあると仮定しよう。

    ここで、データセットを値2で分割した場合、各グループに6つずつ、合計12つのサンプルのグループがあると仮定します。 このグループのエントロピーは1であると予想されます。

    最後に、変数の値ごとに作成されたグループと計算されたエントロピーに基づいて、この変数の情報利得を計算できます。

    最初の変数はデータセットから8例のグループになり、第2グループはデータセットの残りの12サンプルになりました。 したがって、情報利得を計算するのに必要なものはすべて揃っている。

    この場合、情報利得は次のように計算できます:

    • Entropy(Dataset) – (Count(Group1) / Count(Dataset) * Entropy(Group1) + Count(Group2) / Count(Dataset) * Entropy(Group2))

    または。

    • Entropy(13/20, 7/20) – (8/20 * Entropy(7/8, 1/8) + 12/20 * Entropy(6/12, 6/12))

    もしくはコードで。

    1
    2
    3
    4

    # calculate information gain
    gain = s_entropy – (8/20 * s1_entropy + 12/20 * s2_entropy)
    print(‘Information Gain: %.*).3f bits’ % gain)

    このすべてを結び付けて、完全な例を以下に示します。

    最初に、データセットのエントロピーが1ビット弱で計算されます。 次に、第 1 および第 2 グループのエントロピーがそれぞれ約 0.5 および 1 ビットで計算されます。

    最後に、変数の情報利得が 0.117 ビットと計算されます。 つまり、選択された変数を介して分割することによるデータセットへの利得は0.117ビットである。

    1
    2
    3
    4

    Dataset Entropy.Dataset.Dataset_Entropy: 0.934 bits
    Group1 Entropy: 0.544 bits
    Group2 Entropy: 1.000 bits
    Information Gain: 0.0。117 bits

    機械学習における情報利得の例

    おそらく機械学習で情報利得を最もよく使うのは決定木である。

    たとえば、Iterative Dichotomiser 3アルゴリズム、略してID3は、決定木を構築するために使われる。

    情報利得は、まさにID3が木を成長させる各ステップで最適な属性を選択するために使用する尺度である。

    – Page 58, Machine Learning, 1997.

    データセットの各変数について情報利得が計算される。 最大の情報利得を持つ変数がデータセットの分割に選択される。 一般にゲインが大きいとエントロピーが小さいか、驚きが少ないことを示す。

    Note that minimizing the entropy is equivalent to maximizing the information gain …

    – Page 547, Machine Learning.P.P.P.D., 1997: A Probabilistic Perspective, 2012.

    そして、作成された各グループに対して、すでに選択された変数を除いて、この処理を繰り返す。

    新しい属性を選択し、学習例を分割するプロセスは、今度はそのノードに関連する学習例のみを使用して、各非終端子孫ノードに対して繰り返される。

    – Page 60, Machine Learning, 1997.

    情報利得は、分類用の DecisionTreeClassifier クラスの scikit-learn Python 機械学習ライブラリにおける分類回帰木(CART)アルゴリズムの実装など、決定木のほとんどの最新実装における分割基準として使用することができる。

    これは、モデルを設定する際に基準引数を「エントロピー」に設定することで実現できる;たとえば

    1
    2
    3
    4

    # information gain

    で訓練した決定木の例

    from sklearn.tree import DecisionTreeClassifier
    model = sklearn.tree.DecisionTreeClassifier(criterion=’entropy’)

    情報利得は、モデル化の前の特徴選択にも使用できる。

    これは、ターゲット変数と学習データセットの各入力変数の間の情報利得を計算することを含む。 Weka機械学習ワークベンチは、InfoGainAttributeEvalクラスを介して特徴選択のための情報利得の実装を提供する。

    この特徴選択の文脈では、情報利得は「相互情報」と呼ばれ、二つの変数間の統計的依存性を計算することがある。

    相互情報量とは

    相互情報量は2つの変数間で計算され、もう一方の変数の既知の値が与えられたときの、一方の変数の不確実性の減少を測定するものである。

    相互情報と呼ばれる量は、ある確率変数から別の確率変数を与えて得られる情報量を測定します。

    – Page 310, Data Mining: 実践的機械学習ツールと技法』第4版、2016年。

    二つの確率変数XとYの間の相互情報は、次のように正式に述べることができる:

    • I(X ; Y)=H(X) – H(X | Y)

    ここでI(X ; Y)はXとYについての相互情報、H(X)はXについてのエントロピー、H(X | Y)はYが与えられたXについての条件付きエントロピーである。 結果はビットの単位を持つ。

    相互情報は2つの確率変数の間の依存性、つまり「相互依存性」の尺度である。 そのため、この尺度は対称的であり、I(X ; Y)=I(Y ; X)を意味する。

    これは、yの値を学習することによって生じるxに関する不確実性の平均的な減少を測定する。またはその逆に、xがyについて伝達する情報の平均量。

    – 139ページ、情報理論、推論、および学習アルゴリズム、2003年。

    カルバック・ライブラー(KL)ダイバージェンスは、2つの確率分布の差を計算する尺度である。

    相互情報は、結合確率分布と各変数の周辺確率の積とのKLダイバージェンスとして計算することも可能である。

    変数が独立でない場合、変数間の相互情報と呼ばれる結合分布とマージンの積の間のKullback-Leibler発散を考えることによって、それらが独立に「近い」かどうかのいくつかのアイデアを得ることができる

    – Page 57, Pattern Recognition and Machine Learning, 2006.

    これは、以下のように正式に述べることができる:

    • I(X ; Y) = KL(p(X, Y) || p(X) * p(Y))

    相互情報は常にゼロより大きいか等しく、値が大きいと、2変数の関係が大きいことを示す。 計算結果がゼロの場合、変数は独立である。

    相互情報は、相関係数の一般的な形式、たとえば確率変数間の依存性の尺度としてよく使用される。 一般的な例としては、データセットの統計的に独立した成分の投影を提供する独立成分分析、略して ICA があります。

    情報利得と相互情報量はどのように関連していますか。

    相互情報と情報利得は同じものですが、指標のコンテキストまたは使用法がしばしば異なる名前を生み出します。 5233>

  9. Dependence Between Variables (feature selection):情報利得。 相互情報量(Mutual Information)。
  10. 相互情報の計算方法と情報利得の計算方法が似ていて、両者は同等であることに注意してください。

    • I(X ; Y) = H(X) – H(X | Y)

    そして

    • IG(S, a) = H(S) – H(S | a)

    そのように、相互情報量は情報利益と同義語として用いられることもあります。 技術的には、同じデータに適用すれば同じ量を計算します。

    両者の関係は、結合確率分布と周辺確率分布の差(相互情報量)が大きいほど、情報の獲得(情報利得)が大きいと理解することができます。

    Further Reading

    このセクションでは、さらに深く知りたい方のために、このトピックに関する資料を紹介します。

    書籍

    • Information Theory, Inference, and Learning Algorithms, 2003.
    • Machine Learning.を参照。 確率的視点, 2012.
    • パターン認識と機械学習, 2006.
    • 機械学習, 1997.
    • Data Mining.X, 2006.
    • 機械学習, 2006.
    • データマイニング: Practical Machine Learning Tools and Techniques, 4th edition, 2016.

    API

    • scipy.stats.entropy API

    記事

    • Entropy (information theory), Wikipedia.Wikipedia.Wikipedia.
    • 決定木における情報利得、ウィキペディア.
    • ID3アルゴリズム、ウィキペディア.
    • 情報利得比、ウィキペディア.
    • 相互情報、ウィキペディア.
    • 相互情報比、ウィキペディア.
    • 相互情報比,Wikipedia.

    Summary

    この投稿では、機械学習における情報利得と相互情報を発見しました。

    具体的には、次のことを学びました:

    • 情報利得は、データセットを変換することによるエントロピーまたは驚きの減少であり、決定木の訓練でよく使用されます。
    • 相互情報は、2つの変数間の統計的依存関係を計算し、変数選択に適用する場合の情報利得に付けられる名前です。

    何か質問はありますか?
    下のコメントで質問してください。できる限りお答えします。

    機械学習のために確率を把握する!

    確率の理解を深める

    ….with just a few lines of python code

    Discover how in my new Ebook:
    Probability for Machine Learning

    It provides self-study tutorials and end-to-end projects on:
    Bayes Theorem, Bayesian Optimization, Distributions, Maximum Likelihood, Cross-Entropy, Calibrating Models
    and much more。…

    Finally Harness Uncertainty in Your Projects

    Skip the Academics. 結果だけを見る

    Tweet Share Share

コメントを残す

メールアドレスが公開されることはありません。