Algoritmo CHAID para árvores de decisão

Conteúdo

A árvore começa com o nó raiz que consiste nos dados completos e, subseqüentemente, use estratégias inteligentes para dividir os nós em vários ramos.

O conjunto de dados original foi dividido em subconjuntos neste processo.

Para responder à pergunta fundamental, seu cérebro inconsciente faz alguns cálculos (à luz dos exemplos de perguntas registradas abaixo) e acaba comprando a quantidade necessária de leite. É normal ou durante a semana?

Em dias úteis exigimos 1 litro de leite.

É fim de semana? Nos finais de semana precisamos 1,5 litros de leite.

É correto dizer que estamos antecipando convidados hoje? Precisamos comprar 250 ML adicional de leite para cada hóspede, e assim por diante.

Antes de pular para a ideia hipotética de árvores de decisão, Que tal explicarmos inicialmente o que são árvores de decisão? é mais, Por que seria uma boa ideia usá-los?

Por que usar árvores de decisão?

Entre outros métodos de aprendizagem supervisionada, algoritmos baseados em árvore excel. Estes são modelos preditivos com maior precisão e compreensão simples.

Como funciona a árvore de decisão?

Existem diferentes algoritmos escritos para montar uma árvore de decisão, que pode ser usado para o problema.

Alguns dos algoritmos mais comumente usados ​​estão listados abaixo:

• CARRINHO

• ID3

• C4.5

• CHAID

Agora vamos explicar sobre o algoritmo CHAID passo a passo. Antes disso, vamos falar um pouco sobre chi_square.

chi_square

Qui-quadrado é uma medida estatística para encontrar a diferença entre os nós secundários e principais. Para calcular isso, encontramos a diferença entre as contagens observadas e esperadas da variável alvo para cada nó e a soma quadrada dessas diferenças padronizadas nos dará o valor Qui-quadrado.

Fórmula

Para encontrar a característica mais dominante, testes qui-quadrado usarão, o que também é chamado de CHAID, enquanto ID3 usa ganho de informação, C4.5 usa a taxa de ganho e CART usa o índice GINI.

Hoje em dia, a maioria das bibliotecas de programação (por exemplo, Pandas para Python) usar a métrica pearson para correlação por padrão.

A fórmula qui-quadrado: –

√ ((e – y ')2 / y ')

onde e é real e esperado e '.

Conjunto de dados

Vamos construir regras de decisão para o seguinte conjunto de dados. A coluna de decisão é o objetivo que gostaríamos de encontrar com base em algumas características.

Por certo, vamos ignorar a coluna do dia, porque é apenas o número de linha.

73416captura de tela20 de202021-04-302001-23-16-4096747

para ler o conjunto de dados de implementação python a partir do arquivo CSV abaixo: –

import pandas as pd
data = pd.read_csv("conjunto de dados.csv")

data.head()

Precisamos encontrar o recurso mais importante nas colunas de destino para escolher o nó para dividir os dados neste conjunto de dados.

Característica de umidade

Existem dois tipos de classe presentes nas colunas de umidade: alto e normal. Agora vamos calcular os valores de chi_square para eles.

sim Não Total Esperado Qui-quadrado sim Qui-quadrado Não
Alto 3 4 7 3,5 0,267 0,267
baixo 6 1 7 3,5 1.336 1.336

Para cada fila, a coluna total é a soma das decisões sim e não. Metade da coluna total é chamada de valores esperados porque há 2 classes de decisão. É fácil calcular os valores do qui-quadrado com base nesta tabela..

Por exemplo,

qui-quadrado sim para alta umidade é √ ((3- 3,5)2 / 3,5) = 0,267

enquanto o real é 3 e o esperado é 3,5.

Então, o valor qui-quadrado da característica de umidade é

= 0,267 + 0,267 + 1,336 + 1,336

= 3.207

Agora, também encontraremos valores de qui-quadrado para outras características. A característica com o valor máximo do qui-quadrado será o ponto de decisão. E a função do vento?

Característica do vento

Existem dois tipos de classe presentes nas colunas de vento: fraco e forte. A tabela a seguir é a seguinte.

91463screenshot20from202021-04-302000-18-19-5628735

Aqui, o valor de teste qui-quadrado da característica do vento é

= 0,802 + 0,802 + 0 + 0

= 1,604

Este também é um valor menor que o valor qui-quadrado da umidade. E a função de temperatura?

Característica de temperatura

Existem três tipos de classe presentes nas colunas de temperatura: quente, frio e suave. A tabela a seguir é a seguinte.

49998screenshot20from202021-04-302000-26-42-2621906

Aqui, o valor de teste qui-quadrado da característica de temperatura é

= 0 + 0 + 0,577 + 0,577 + 0,707 + 0,707

= 2.569

Este é um valor menor que o valor qui-quadrado da umidade e também maior que o valor qui-quadrado do vento. E quanto à função Outlook?

Recurso Outlook

Existem três tipos de classes presentes nas colunas de temperatura: ensolarado, chuvoso e nublado. A tabela a seguir é a seguinte.

72011screenshot20from202021-04-302000-31-37-8035648

Aqui, o valor do teste qui-quadrado da função perspectiva é

= 0,316 + 0,316 + 1,414 + 1,414 + 0,316 + 0,316

= 4.092

Calculamos os valores qui-quadrado de todas as características. Vamos ver todos eles em uma mesa.

35775screenshot20from202021-04-302000-40-07-9441197

Como se vê, a coluna do Outlook tem o maior e o maior valor qui-quadrado. Isso implica que é a principal característica do componente. Junto com esses valores, vamos colocar esse recurso no nó raiz.

47825screenshot20from202021-04-302000-44-22-3290339

Separamos as informações brutas com base nas classes do Outlook na ilustração acima. Por exemplo, o ramo nublado simplesmente tem uma decisão afirmativa sobre o conjunto de dados de subinformação. Isso implica que a árvore CHAID retornará SIM se o panorama estiver nublado.

Os galhos ensolarados e chuvosos têm decisões sim e não. Vamos aplicar testes de qui-quadrado para esses conjuntos de dados subinformativos.

Outlook = ramo ensolarado

Esta filial tem 5 exemplos. Atualmente, procuramos a característica mais predominante. Por certo, vamos ignorar a função Outlook agora, já que eles são completamente iguais. No final do dia, vamos encontrar as colunas mais predominantes entre a temperatura, umidade e vento.

33074screenshot20from202021-04-302000-51-09-2093971

Função de umidade para quando o panorama está ensolarado

50266screenshot20from202021-04-302000-52-10-9787942

O valor qui-quadrado da característica de umidade para uma perspectiva ensolarada é

= 1,225 + 1,225 + 1 + 1

= 4.449

Função de vento para quando o panorama está ensolarado

81090screenshot20from202021-04-302000-53-07-7374550

O valor qui-quadrado da característica do vento para a perspectiva do sol é

= 0,408 + 0,408 + 0 + 0

= 0,816

Função de temperatura para quando o panorama está ensolarado

70847screenshot20from202021-04-302000-54-06-7874101

Então, o valor qui-quadrado da característica de temperatura para a perspectiva ensolarada é

= 1 + 1 + 0 + 0 + 0,707 + 0,707

= 3.414

Encontramos valores de qui-quadrado para a perspectiva ensolarada. Vamos ver todos eles em uma mesa.

38365screenshot20from202021-04-302000-56-30-1399006

Na atualidade, a umidade é a característica mais predominante do ramo do gazebo ensolarado. Vamos colocar essa característica como uma regra de decisão.

96005screenshot20from202021-04-302000-59-53-5395113

Atualmente, ambos os ramos de umidade para a perspectiva ensolarada têm apenas uma decisão conforme descrito acima. A árvore CHAID retornará NÃO para uma perspectiva ensolarada e alta umidade e retornará SIM para uma perspectiva ensolarada e umidade normal.

Ramo de perspectiva de chuva

Na realidade, este ramo tem decisões positivas e negativas. Precisamos aplicar o teste do qui-quadrado para este ramo para encontrar uma decisão precisa. Esta filial tem 5 instâncias diferentes, conforme demonstrado no conjunto de dados de coleta de subinformações em anexo. Que tal descobrirmos a característica mais predominante entre a temperatura, umidade e vento?

18553screenshot20from202021-04-302001-03-59-3273514

Função de vento para previsão de chuva

Existem dois tipos de classe presentes na característica do vento para a perspectiva da chuva: fraco e forte.

28165screenshot20from202021-04-302001-06-13-6191309

Então, o valor qui-quadrado da característica do vento para a perspectiva da chuva é

= 1,225 + 1,225 + 1 + 1

= 4.449

Função de umidade para previsão de chuva

Existem dois tipos de classe presentes na característica de umidade para a perspectiva da chuva: alto e normal.

95294screenshot20from202021-04-302001-08-24-8481698

O valor qui-quadrado da característica de umidade para a perspectiva da chuva é

= 0 + 0 + 0.408 + 0.408

= 0,816

Características de temperatura para previsão de chuva

Existem dois tipos de classes presentes nas características de temperatura para a perspectiva da chuva, como quente e frio.

71686screenshot20from202021-04-302001-11-06-1374808

O valor qui-quadrado da característica de temperatura para a perspectiva da chuva é

= 0 + 0 + 0.408 + 0.408

= 0,816

Descobrimos que todos os valores de qui-quadrado para chuva são o ramo de perspectiva. Vamos ver todos eles em uma mesa.

57121screenshot20from202021-04-302001-13-00-8279890

Portanto, a função do vento é o vencedor da chuva é o ramo de perspectiva. Coloque esta coluna na ramificação conectada e visualize o conjunto de dados subinformativo correspondente.

44631screenshot20from202021-04-302001-15-49-7763127

Como se vê, todos os ramos têm conjuntos de dados subinformativos com uma única decisão, tipo sim ou não. Desta maneira, podemos gerar a árvore CHAID conforme ilustrado abaixo.

38808screenshot20from202021-04-302001-17-36-9506564

A forma final da árvore CHAID.

Implementación en Python de un árbol de decisões usando CHAID

from chefboost import Chefboost as cb
import pandas as pd
data = pd.read_csv("/home/kajal/Downloads/weather.csv")
data.head()
79402captura de tela20 de202021-05-012012-47-22-4323771
config = {"algoritmo": "CHAID"}

árvore = cb.fit(dados, config)

árbol

89872captura de tela20 de202021-05-012012-59-00-1485956
# test_instance = ['ensolarado','quente','alto','fraco','não']
test_instance = data.iloc[2]

test_instance
94699captura de tela20 de202021-05-012012-48-40-1194733
cb.predict(árvore,test_instance)

saída:- 'Yes'

#obj[0]: perspectiva, Obj[1]: temperatura, Obj[2]: humidade, Obj[3]: ventoso
# {"recurso": "perspectiva", "Instâncias": 14, "metric_value": 4.0933, "profundidade": 1}

def encontrarDecision(Obj): 
          se obj[0] == 'chuvoso':
          # {"recurso": " ventoso", "Instâncias": 5, "metric_value": 4.4495, "profundidade": 2}
                  se obj[3] == 'fraco':
                         return 'yes'
                  elif obj[3] == 'forte':
                         return 'no'
                  else:
                          return 'no'
          elif obj[0] == 'ensolarado':
           # {"recurso": " humidade", "Instâncias": 5, "metric_value": 4.4495, "profundidade": 2}
                 se obj[2] == 'alto':
                        return 'no'
                 elif obj[2] == 'normal':
                         return 'yes'
                 else:
                         return 'yes'
         elif obj[0] == 'nublado':
                      return 'yes'
         else:
                    retornar 'sim'

conclusão

Portanto, criamos uma árvore de decisão CHAID do zero para terminar neste post. O CHAID usa uma métrica de medição qui-quadrado para descobrir o recurso mais importante e aplicá-lo recursivamente até que os conjuntos de dados subinformativos tenham uma única decisão.. Embora este seja um algoritmo de árvore de decisão herdado, ainda é o mesmo processo para questões de classificação.

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.