1つの方法は、与えられた属性の属性値に従ってクラス値を分割した後、クラスラベル分布のエントロピーがどのように変化するかを観察することです。最大のエントロピー削減をもたらす属性が「最良の」属性である。 (これは、離散属性に対して動作します。例えばhoursSlept>7
sleptAlot
に変換すると言う; 5 <=hoursSlept<=7
sleptEnough
に変換し、あなたがこの方法を使用するために属性を離散化する必要があります。そしてsleepDeprived
からhoursSlept<5
)
のエントロピーH
を離散分布(p1,p2,...,pk)
は
H = -p1*log_2 p1 - p2*log_2 p2 - ... - pk*log_2 pk
として定義され、それはおおよそ、分布の不純物を言えば、測定します。あなたが結果を知ることができないほど、エントロピーが高いほど優先されます。より多くのあなたは、結果を知ることができますapriori小さなエントロピー。実際、すべてi
の分布pi=1/k
(すべての結果が等しくなる可能性が高い)は、可能な限り高いエントロピー(値log_2 k
)を持ちます。いくつかのi
のpi=1
が可能な限り低いエントロピー(値0
)を持つ分布。
pi=ni/n
を定義します。ここで、n
は例の数であり、ni
はi
番目のクラスの値の例です。これは離散分布を誘導する(p1,p2,...,pk)
ここで、k
はクラス値の数です。値属性A
のai
に等しく、これらの実施例の設定するSi
を定義a1,a2,...,ar
可能な値を持つ属性A
について
。セットSi
のそれぞれは、離散分布(前と同じ方法で定義されています)を誘導します。 |Si|
をセットSi
の例の数とします。対応するエントロピーをH(Si)
で表す。
今
Gain(A) = H - |S1|/n * H(S1) - ... - |Sr|/n * H(Sr)
を計算し、Gain(A)
を最大化する属性を選択します。この差異を最大にする属性が例を分割するので、多くの場合Si
の例では同じようなラベル(例:エントロピーが低い)があるという直感です。
Gain(A)
の値は直感的にクラスラベルについての属性A
がどの程度有益であるかを示しています。
参考までに、これは意思決定ツリーの学習に広く使用されており、その措置は情報利得と呼ばれています。例えば、these slidesを参照されたい。このexplanation on Math.SEは本当に素晴らしいです(意思決定ツリーの学習のコンテキストではありますが)。
素敵な、ありがとうBlazs私は今理解していると思う、本当に詳細、それは別の質問thoに私を導いた。クラスの特定の属性値に影響を及ぼすために使用するものEgは、スリープ時間が属性であり、sleptAlotが属性値であると述べたように、属性を離散化したと言うことができます。 。ありがとう!!! –
個々の属性値がどのようにクラスに影響するのかという疑問があります。 'H(S_sleptAlot)'を計算し、それを 'H 'と比較することで(例えば差分を取る)これを数量化することができます。属性値が実際のクラス値にどのように影響するかを知りたければ、配布自体を見ることができます。 – blazs
ありがとうBlazs .....これは本当に助けになった!! –