Învăț despre copacii de decizie și simt că până acum le-am înțeles și matematica din spatele lor destul de bine, cu excepția unui singur lucru: raportul de câștig.
După cum am înțeles, raportul de câștig este implementat pentru a pedepsi caracteristicile care pot lua MULTE valori posibile.
Dacă o caracteristică preia o mulțime de valori posibile, devine plauzibil ca, dacă împărțim această caracteristică, să existe valori care indică doar o singură clasă, dar pur și simplu pentru că există doar 1 sau 2 date puncte cu acea valoare pentru acea caracteristică oricum.
Cu alte cuvinte, singurul motiv pentru care am obține o entropie scăzută pentru împărțirea acestei caracteristici se datorează faptului că caracteristica ar putea lua o mulțime de valori și, prin urmare, o mulțime de acele valori ar indica în mod specific o singură etichetă . Deci, algoritmul arborelui nostru de decizie s-ar sfârși prin a se împărți pe ceva de genul „ID #” și ar calcula în mod greșit că tocmai am avut un câștig de informație UMER.
Cu toate acestea, acest lucru pare doar o problemă, deoarece „ID #” este o caracteristică pe care nu ar trebui să o împărțim pentru a începe. Adică, dacă am avea o altă caracteristică care a preluat și multe posibilități valorile, dar fiecare dintre aceste valori de fapt a implicat o etichetă pentru acel punct de date, atunci nu ar fi aplicarea raportului de câștig înseamnă că ne deranjăm de fapt arborele de decizie pedepsind ceea ce a fost de fapt o divizare foarte bună cu tone de câștig de informații?
Nu este mai bine să identificăm doar ce caracteristică nu va avea nimic de-a face cu etichetarea noastră ÎNAINTE să introducem datele de antrenament în algoritm?
IDK, doar că nu vezi de ce raportul de câștig ar fi cu adevărat util …
Răspuns
Am avut aceeași îndoială când îmi făceam Masterul „Grad. În primul rând, nu includeți ceva la fel de aleatoriu ca” ID-uri „. Aici intervine preprocesarea datelor. Să luăm un set de date care conține utilizatori și preferințele lor despre genul filmului pe baza unor variabile precum sex, grup de vârstă, rating, bla, bla. Cu ajutorul câștigului de informații, vă împărțiți la „Sex „(presupunând că are cel mai mare câștig de informații) și acum variabilele„ Grup de vârstă ”și„ Evaluare ”ar putea fi la fel de importante și cu ajutorul raportului câștigului, va penaliza o variabilă cu valori mai distincte care ne vor ajuta să decidem împărțiți la nivelul următor.
Comentarii
- OKaaaay, Minunat! Deci, folosim raportul de câștig numai atunci când suntem între împărțirea a două caracteristici diferite posibile. ! Este pentru a alege cel care este mai probabil ca datele testului să aibă o valoare văzută anterior, deoarece asta este vibrația pe care o obțineam din exemplul de identificare, motivul pentru care este o divizare proastă, avea o șansă atât de mare de a lua pe valori diferite (în acest caz, nicio altă persoană nu va avea același ID).
- Asta are mult mai mult sens . Fiecare explicație pe care am citit-o ' folosește ID-uri și mă face să mă gândesc de ce are cineva asta într-un set de date, în primul rând? !!!! Mulțumesc Danny! Îmi ' îmi place postarea ta, dar nu ' încă am suficientă reputație.
Răspuns
Câștigul de informații este una dintre euristicile care ajută la selectarea atributelor pentru selecție.
După cum știți arborii de decizie, un top construit -codul recursiv împărți-și-cucerește. Exemplele sunt porționate recursiv pe baza atributelor selectate.
În algoritmii ID3 folosim selectați atributele cu cel mai mare câștig de informații.
Fie $ p_i $ probabilitatea ca un tuplu arbitrar în $ D $ aparține clasei $ C_i $ . Deci, $ p_i = | C_ {i, d} | / | D | $ Informațiile așteptate (entropie) necesare pentru clasificarea unui tuplu în $ D $ $$ Info (D) = – \ sum_ {i = 1} ^ {m} {p_i * \ log (p_i)} $$
Informații necesare (după utilizarea A pentru a împărți D în porțiuni v) pentru a clasifica D: $$ Info_A (D) = – \ sum_ {j = 1} ^ {v} {D_j / D * Info_j (D)} $$
Informații obținute prin ramificarea atributului A
$$ Gain (A) = Info (D) – Info_A (D) $$
În algoritmul C4.5 trebuie să împărțim diferența de informații la $ SplitInfo (A) $
$$ Gain (A) = (Info (D) – Info_A (D)) / SplitInfo (A) $$