O CART e as árvores de decisão, como algoritmos, funcionam com o particionamento recursivo do conjunto de treinamento para obter subconjuntos o mais puros possível para uma determinada classe de destino. Cada nó da árvore está associado a um conjunto específico de registros que é dividido por um teste específico em um recurso. Por exemplo, uma divisão em um atributo contínuo A pode ser induzida pelo teste A ≤ x . O conjunto de registros T é então particionado em dois subconjuntos que levam ao ramo esquerdo da árvore e ao direito.TAA≤xT
Tl={t∈T:t(A)≤x}
e
Tr={t∈T:t(A)>x}
Da mesma forma, um recurso categórico pode ser usado para induzir divisões de acordo com seus valores. Por exemplo, se B = { b 1 , … ,B cada ramo i pode ser induzido pelo teste B = b i .B = { b1, … , Bk}EuB = bEu
A etapa de divisão do algoritmo recursivo para induzir a árvore de decisão leva em consideração todas as divisões possíveis para cada recurso e tenta encontrar a melhor de acordo com uma medida de qualidade escolhida: o critério de divisão. Se o seu conjunto de dados for induzido no seguinte esquema
UMA1, … , Am, C
onde são atributos e C é a classe de destino, todas as divisões candidatas são geradas e avaliadas pelo critério de divisão. As divisões em atributos contínuos e categóricos são geradas conforme descrito acima. A seleção da melhor partição geralmente é realizada por medidas de impureza. A impureza do nó pai deve ser diminuída pela divisão . Let ( E 1 , E 2 , … , E kUMAjC uma divisão induzida no conjunto de registros E , um critério de divisão que utiliza a medida de impureza I ( ⋅ ) é:( E1, E2, ... , Ek)EEu( ⋅ )
Δ = I( E) - ∑i = 1k| EEu|| E|Eu( EEu)
As medidas padrão de impureza são a entropia de Shannon ou o índice de Gini. Mais especificamente, o CART usa o índice Gini definido para o conjunto seguinte maneira. Seja p j a fração de registros em E da classe c j p j = | { t ∈ E : t [ C ] = c j } |EpjEcj
então
Gini(E)=1- Q ∑ j=1p
pj= | { t ∈ E: t [ C] = cj} || E|
onde
Qé o número de classes.
G i n i (E) = 1 - ∑j = 1Qp2j
Q
Isso leva a uma impureza 0 quando todos os registros pertencem à mesma classe.
Como exemplo, vamos dizer que temos um conjunto de classe binário de registros , onde a distribuição de classe é ( 1 / 2 , 1 / 2 ) - o seguinte é uma boa divisão para TT( 1 / 2 , 1 / 2 )T
Teu( 1 , 0 )Tr( 0 , 1 )TeuTr| Teu| / | T| = | Tr| / | T| =1 / 2Δ
Δ = 1 - 1 / 22- 1 / 22- 0 - 0 = 1 / 2
Δ
Δ = 1 - 1 / 22- 1 / 22- 1 / 2 ( 1 - ( 3 / 4 )2- ( 1 / 4 )2) -1/2 ( 1-(1/4)2- ( 3 / 4 )2) =1/2- 1 / 2 ( 3 / 8 ) - 1 / 2 ( 3 / 8 ) = 1 / 8
A primeira divisão será selecionada como melhor divisão e, em seguida, o algoritmo prosseguirá de forma recursiva.
É fácil classificar uma nova instância com uma árvore de decisão; na verdade, basta seguir o caminho do nó raiz para uma folha. Um registro é classificado com a classe majoritária da folha que atinge.
Digamos que queremos classificar o quadrado nesta figura
A , B , CCUMAB
Uma possível árvore de decisão induzida pode ser a seguinte:
É claro que o quadrado do registro será classificado pela árvore de decisão como um círculo, uma vez que o registro cai em uma folha rotulada com círculos.
Neste exemplo de brinquedo, a precisão no conjunto de treinamento é de 100%, porque nenhum registro é classificado incorretamente pela árvore. Na representação gráfica do conjunto de treinamento acima, podemos ver os limites (linhas tracejadas em cinza) que a árvore usa para classificar novas instâncias.
Há muita literatura sobre árvores de decisão, eu queria apenas escrever uma introdução superficial. Outra implementação famosa é a C4.5.