エントロピーベースの離散化とは?仕組みと計算方法をわかりやすく解説
エントロピーベースの離散化とは
エントロピーベースの離散化(Entropy-based Discretization)は、教師あり学習に基づくトップダウン型の分割手法です。この手法では、計算の過程や分割点(属性の値域を区切るためのデータ値)の決定において、クラス分布の情報を活用します。
数値属性Aを離散化する際、エントロピーが最小となるAの値を分割点として選択し、その結果得られた区間を再帰的に分割することで、階層的な離散化を実現します。こうして構築されるのが、属性Aに対する概念階層です。
基本的なアプローチ
データセットDが、一連の属性とクラスラベル属性によって記述されたデータタプルで構成されているとします。クラスラベル属性は、各タプルが属するクラスの情報を提供します。属性Aに対するエントロピーベースの離散化の基本的な手順は、以下の通りです。
属性Aの各値は、Aの値域を分割する候補となる区間境界、すなわち分割点として扱えます。分割点は、データセットD内のタプルを「A ≤ 分割点」を満たす部分集合と「A > 分割点」を満たす部分集合の2つに分けるため、二値離散化が実現されます。
クラスラベル情報の活用
エントロピーベースの離散化では、タプルのクラスラベルに関する情報を利用します。その直観的な考え方は、分割後の分類のされやすさに着目するというものです。ここで、属性Aとある分割点によってDのタプルを分割することを考えてみましょう。
例えば、2つのクラスC1とC2が存在する場合、クラスC1のタプルは一方の区画に、クラスC2のタプルはもう一方の区画にきれいに分かれることが理想です。しかし現実には、最初の区画にC1のタプルが多数含まれる一方で、C2のタプルもいくつか混在するといったことが起こります。この不純さの度合いは、属性Aによる分割に基づいてDのタプルを分類する際に必要となる「期待情報量」として定量化できます。
期待情報量とエントロピーの計算
期待情報量は、次の式で与えられます。
$$\mathrm{Info_A(D)\:=\:\frac{\mid\:D_1\:\mid}{\mid\:D\:\mid}Entropy(D_1)\:+\:\frac{\mid\:D_2\:\mid}{\mid\:D\:\mid}Entropy(D_2)}$$
ここで、D₁とD₂はそれぞれ「A ≤ 分割点」と「A > 分割点」の条件を満たすD内のタプルの集合に対応し、|D|はD内のタプルの総数を表します。各集合のエントロピーは、その集合内のタプルのクラス分布に基づいて計算されます。
例えば、m個のクラスC1, C2, ..., Cmが与えられた場合、D₁のエントロピーは次のように定義されます。
$$\mathrm{Entropy(D_1)}\:=\:-\displaystyle\sum\limits_{i=1}^m P_i{\log_{2}(P_i)}$$
ここで、PᵢはD₁内のタプルがクラスCᵢに属する確率を表します。エントロピーが小さいほど、その区画内のクラス分布が偏っており(純度が高く)、分類にとって望ましい分割であることを意味します。
再帰的分割と停止条件
分割点を決定するこのプロセスは、何らかの停止条件が満たされるまで、得られた各区画に対して再帰的に適用されます。停止条件の例としては、すべての候補分割点における最小情報要件がある小さな閾値εより小さくなった場合や、区間の数が閾値max_intervalを超えた場合などが挙げられます。これにより、過度に細かい分割を防ぎつつ、分類に有効な階層的な離散化が実現されます。
-
Pythonのタプルとは?基本の使い方とnamedtupleの活用法をわかりやすく解説
Pythonにおけるタプルの基本タプル(tuple)は、複数の値をカンマで区切って括弧()の中に並べることで定義できる、Pythonの基本的なデータ構造です。リストとよく似ていますが、一度作成すると要素を変更できない「イミュータブル(変更不可)」なオブジェクトである点が大きな特徴です。タプル内の各フィールドの値には、インデックス(0から始まる番号)を使ってアクセスします。以下は、学生情報をタプルで表現した例です。>>> student = (1, Ravi, 23, 546) >>> rollno = student[0] >>> name
-
Pythonでタプルを作成する正しい構文とは?基本から実例まで解説
Pythonにおけるタプル(tuple)は、イミュータブル(変更不可)な要素の集合体です。リストと異なり、一度作成した後に要素の追加や削除を行うことはできません。また、各要素は同じ型である必要はなく、数値、文字列、リストなど、異なる型のデータを混在させて格納することができます。タプルの要素はカンマで区切り、丸括弧 () の中に記述します。なお、この丸括弧は必須ではなく、省略して記述することも可能です。 T2 = 1,2,3,4 空のタプルを作成する方法空のタプルオブジェクトを作成するには、丸括弧の中に何も記述しないだけでOKです。 T3 () 要素が1つだけのタプルを作成する方法タプルに要素を