Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Uppdelning av Noderna | Beslutsträd
Klassificering med Python

Uppdelning av Noderna

Svep för att visa menyn

Under träningen behöver vi hitta bästa uppdelningen vid varje beslutsnod. När vi delar upp data i två noder strävar vi efter att olika klasser ska hamna i separata noder.

goodbadsplit
  • Bästa scenariot: alla datapunkter i en nod tillhör samma klass;
  • Sämsta scenariot: lika många datapunkter för varje klass.

Gini-oenhetlighet

För att mäta hur bra en uppdelning är kan vi beräkna Gini-oenhetligheten. Det är sannolikheten att om vi slumpmässigt tar två punkter från en nod (med återläggning), så kommer de att tillhöra olika klasser. Ju lägre denna sannolikhet (oenhetlighet) är, desto bättre är uppdelningen.

ginis

Du kan beräkna Gini-oenhetligheten för binär klassificering med följande formel:

gini=1p02p12=1(m0m)2(m1m)2\text{gini} = 1 - p_0^2 - p_1^2 = 1 - (\frac{m_0}{m})^2 - (\frac{m_1}{m})^2

Där

  • mim_i - antal instanser av klass ii i en nod;
  • mm - antal instanser i en nod;
  • pi=mimp_i = \frac{m_i}{m} - sannolikheten att välja klass ii.

Och för multiklassklassificering är formeln:

gini=1i=0Cpi2=1i=0C(mim)2\text{gini} = 1 - \sum_{i=0}^C p_i^2 = 1 - \sum_{i=0}^C(\frac{m_i}{m})^2

Där

  • CC - antal klasser.

Vi kan mäta hur bra uppdelningen är genom att ta den viktade summan av Gini-värden för båda noderna som erhålls från en uppdelning. Det är det värde vi vill minimera.

För att dela upp en beslutsknuta behöver vi hitta en egenskap att dela på och tröskelvärdet:

egenskapströskel

Vid ett beslutsträdets nod hittar algoritmen girigt den bästa tröskeln för varje variabel. Därefter väljer den den uppdelning med lägst Gini-orenhet av alla variabler (vid lika resultat väljs slumpmässigt).

SplitSearch2

Entropi

Entropi är ett annat mått på orenhet. För ett binärt klassificeringsproblem beräknas entropin HH för en nod med formeln:

H(p)=plog2(p)(1p)log2(1p)H(p) = -p \log_2(p) - (1 - p) \log_2(1 - p)

Där:

  • pp är andelen positiva exempel (klass 1);
  • 1p1 - p är andelen negativa exempel (klass 0).

För ett multiklass-klassificeringsproblem beräknas entropin HH för en nod med formeln:

H(p1,p2,,pk)=i=1kpilog2(pi)H(p_1, p_2, \dots, p_k) = -\sum_{i=1}^{k} p_i \log_2(p_i)

Där:

  • kk är antalet klasser;
  • pip_i är andelen exempel som tillhör klass ii i noden.

På liknande sätt som Gini-orenhet kan vi mäta hur bra en uppdelning är genom att beräkna den viktade summan av entropivärden för barnnoderna som erhålls från uppdelningen. Detta är värdet vi vill minimera för att maximera informationsvinsten.

Note
Notering

Entropin är maximal när alla klasser är lika representerade. Den är minimal (0) när alla exempel tillhör en klass (ren nod).

question mark

Välj en bättre uppdelning.

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 3. Kapitel 2
some-alt