Data mining - Induzione dell'albero decisionale
Un albero decisionale è una struttura che include un nodo radice, rami e nodi foglia. Ogni nodo interno denota un test su un attributo, ogni ramo denota il risultato di un test e ogni nodo foglia contiene un'etichetta di classe. Il nodo più in alto nell'albero è il nodo radice.
Il seguente albero decisionale riguarda il concetto buy_computer che indica se un cliente di un'azienda è probabile che acquisti un computer o meno. Ogni nodo interno rappresenta un test su un attributo. Ogni nodo foglia rappresenta una classe.
I vantaggi di avere un albero decisionale sono i seguenti:
- Non richiede alcuna conoscenza del dominio.
- È facile da comprendere.
- Le fasi di apprendimento e classificazione di un albero decisionale sono semplici e veloci.
Algoritmo di induzione dell'albero decisionale
Un ricercatore di macchine di nome J. Ross Quinlan nel 1980 ha sviluppato un algoritmo di albero decisionale noto come ID3 (Iterative Dichotomiser). Successivamente, ha presentato C4.5, che era il successore di ID3. ID3 e C4.5 adottano un approccio avido. In questo algoritmo, non c'è backtracking; gli alberi sono costruiti in modo ricorsivo divide et impera dall'alto verso il basso.
Generating a decision tree form training tuples of data partition D
Algorithm : Generate_decision_tree
Input:
Data partition, D, which is a set of training tuples
and their associated class labels.
attribute_list, the set of candidate attributes.
Attribute selection method, a procedure to determine the
splitting criterion that best partitions that the data
tuples into individual classes. This criterion includes a
splitting_attribute and either a splitting point or splitting subset.
Output:
A Decision Tree
Method
create a node N;
if tuples in D are all of the same class, C then
return N as leaf node labeled with class C;
if attribute_list is empty then
return N as leaf node with labeled
with majority class in D;|| majority voting
apply attribute_selection_method(D, attribute_list)
to find the best splitting_criterion;
label node N with splitting_criterion;
if splitting_attribute is discrete-valued and
multiway splits allowed then // no restricted to binary trees
attribute_list = splitting attribute; // remove splitting attribute
for each outcome j of splitting criterion
// partition the tuples and grow subtrees for each partition
let Dj be the set of data tuples in D satisfying outcome j; // a partition
if Dj is empty then
attach a leaf labeled with the majority
class in D to node N;
else
attach the node returned by Generate
decision tree(Dj, attribute list) to node N;
end for
return N;
Potatura degli alberi
La potatura degli alberi viene eseguita al fine di rimuovere le anomalie nei dati di allenamento dovute a rumore o valori anomali. Gli alberi potati sono più piccoli e meno complessi.
Approcci alla potatura degli alberi
Esistono due approcci per potare un albero:
Pre-pruning - La potatura dell'albero viene interrotta anticipatamente.
Post-pruning - Questo approccio rimuove un sottoalbero da un albero completamente cresciuto.
Complessità dei costi
La complessità dei costi è misurata dai seguenti due parametri:
- Numero di foglie dell'albero e
- Tasso di errore dell'albero.