- L'arbre de decisions és a Tècnica d'aprenentatge supervisat que es pot utilitzar tant per a problemes de classificació com de regressió, però sobretot es prefereix per resoldre problemes de classificació. És un classificador estructurat en arbre, on els nodes interns representen les característiques d'un conjunt de dades, les branques representen les regles de decisió i cada node de fulla representa el resultat.
- En un arbre de decisions, hi ha dos nodes, que són els Node de decisió i Node de fulla. Els nodes de decisió s'utilitzen per prendre qualsevol decisió i tenen múltiples branques, mentre que els nodes de fulla són la sortida d'aquestes decisions i no contenen cap branca més.
- Les decisions o la prova es realitzen en funció de les característiques del conjunt de dades donat.
- S'anomena arbre de decisió perquè, de manera semblant a un arbre, comença amb el node arrel, que s'expandeix a més branques i construeix una estructura semblant a un arbre.
- Per construir un arbre, fem servir el algorisme CART, que representa Algorisme d'arbre de classificació i regressió.
- Un arbre de decisió simplement fa una pregunta i, en funció de la resposta (Sí/No), divideix encara més l'arbre en subarbres.
- El diagrama següent explica l'estructura general d'un arbre de decisió:
Nota: un arbre de decisió pot contenir dades categòriques (SÍ/NO) així com dades numèriques.
Per què utilitzar els arbres de decisió?
Hi ha diversos algorismes a l'aprenentatge automàtic, de manera que triar el millor algorisme per al conjunt de dades i el problema donats és el punt principal a recordar mentre es crea un model d'aprenentatge automàtic. A continuació es mostren les dues raons per utilitzar l'arbre de decisions:
- Els arbres de decisions solen imitar la capacitat de pensament humà mentre prenen una decisió, de manera que és fàcil d'entendre.
- La lògica darrere de l'arbre de decisió es pot entendre fàcilment perquè mostra una estructura semblant a un arbre.
Terminologies de l'arbre de decisions
Com funciona l'algoritme de l'arbre de decisions?
10 ml a oz
En un arbre de decisió, per predir la classe del conjunt de dades donat, l'algorisme comença des del node arrel de l'arbre. Aquest algorisme compara els valors de l'atribut arrel amb l'atribut de registre (conjunt de dades real) i, a partir de la comparació, segueix la branca i salta al següent node.
Per al següent node, l'algoritme torna a comparar el valor de l'atribut amb els altres subnodes i avança més. Continua el procés fins que arriba al node de la fulla de l'arbre. El procés complet es pot entendre millor mitjançant l'algorisme següent:
Exemple: Suposem que hi ha un candidat que té una oferta de feina i vol decidir si ha d'acceptar l'oferta o no. Per tant, per resoldre aquest problema, l'arbre de decisió comença amb el node arrel (atribut Salary per ASM). El node arrel es divideix encara més en el següent node de decisió (distància de l'oficina) i un node full en funció de les etiquetes corresponents. El següent node de decisió es divideix a més en un node de decisió (instal·lació de cabina) i un node fulla. Finalment, el node de decisió es divideix en dos nodes fulla (Ofertes acceptades i Oferta rebutjada). Considereu el diagrama següent:
Mesures de selecció d'atributs
Mentre s'implementa un arbre de decisions, sorgeix el problema principal de com seleccionar el millor atribut per al node arrel i per als subnodes. Per tant, per resoldre aquests problemes hi ha una tècnica que s'anomena com Mesura de selecció d'atributs o ASM. Amb aquesta mesura, podem seleccionar fàcilment el millor atribut per als nodes de l'arbre. Hi ha dues tècniques populars per a ASM, que són:
1. Guany d'informació:
- El guany d'informació és la mesura dels canvis d'entropia després de la segmentació d'un conjunt de dades basat en un atribut.
- Calcula quanta informació ens proporciona una funció sobre una classe.
- Segons el valor del guany d'informació, dividim el node i construïm l'arbre de decisió.
- Un algorisme d'arbre de decisió sempre intenta maximitzar el valor del guany d'informació, i primer es divideix un node/atribut que té el guany d'informació més alt. Es pot calcular mitjançant la fórmula següent:
Information Gain= Entropy(S)- [(Weighted Avg) *Entropy(each feature)
Entropia: L'entropia és una mètrica per mesurar la impuresa en un atribut determinat. Especifica l'aleatorietat de les dades. L'entropia es pot calcular com:
Entropy(s)= -P(yes)log2 P(yes)- P(no) log2 P(no)
On,
Com comprovar els números bloquejats a Android
2. Índex de Gini:
- L'índex de Gini és una mesura d'impuresa o puresa que s'utilitza durant la creació d'un arbre de decisió a l'algorisme CART (Arbre de classificació i regressió).
- S'hauria de preferir un atribut amb un índex de Gini baix en comparació amb l'índex de Gini alt.
- Només crea divisions binàries i l'algoritme CART utilitza l'índex Gini per crear divisions binàries.
- L'índex de Gini es pot calcular mitjançant la fórmula següent:
Gini Index= 1- ∑<sub>j</sub>P<sub>j</sub><sup>2</sup>
Poda: obtenir un arbre de decisió òptima
La poda és un procés d'eliminació dels nodes innecessaris d'un arbre per tal d'obtenir l'arbre de decisió òptim.
Un arbre massa gran augmenta el risc de sobreajustament i un arbre petit pot no captar totes les característiques importants del conjunt de dades. Per tant, una tècnica que disminueix la mida de l'arbre d'aprenentatge sense reduir la precisió es coneix com a poda. Hi ha principalment dos tipus d'arbres poda tecnologia utilitzada:
Avantatges de l'arbre de decisions
- És senzill d'entendre, ja que segueix el mateix procés que segueix un humà mentre pren qualsevol decisió a la vida real.
- Pot ser molt útil per resoldre problemes relacionats amb la decisió.
- Ajuda a pensar en tots els resultats possibles d'un problema.
- Hi ha menys requisits de neteja de dades en comparació amb altres algorismes.
Inconvenients de l'arbre de decisió
- L'arbre de decisions conté moltes capes, cosa que el fa complex.
- Pot tenir un problema d'ajustament excessiu, que es pot resoldre amb el Algorisme de bosc aleatori.
- Per a més etiquetes de classe, la complexitat computacional de l'arbre de decisió pot augmentar.
Implementació de Python de l'arbre de decisions
Ara implementarem l'arbre de decisions mitjançant Python. Per a això, utilitzarem el conjunt de dades ' dades_usuari.csv ,' que hem utilitzat en models de classificació anteriors. Utilitzant el mateix conjunt de dades, podem comparar el classificador de l'arbre de decisions amb altres models de classificació com ara KNN SVM, Regression logística, etc.
Els passos també seran els mateixos, que es detallen a continuació:
1. Pas de preprocessament de dades:
A continuació es mostra el codi per al pas de preprocessament:
# importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv('user_data.csv') #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test)
En el codi anterior, hem preprocessat les dades. On hem carregat el conjunt de dades, que es dóna com:
2. Encaixar un algorisme d'arbre de decisions al conjunt d'entrenament
Ara ajustarem el model al conjunt d'entrenament. Per a això, importarem el DecisionTreeClassifier classe des de sklearn.tree biblioteca. A continuació es mostra el codi per a això:
#Fitting Decision Tree classifier to the training set From sklearn.tree import DecisionTreeClassifier classifier= DecisionTreeClassifier(criterion='entropy', random_state=0) classifier.fit(x_train, y_train)
En el codi anterior, hem creat un objecte classificador, en el qual hem passat dos paràmetres principals;
A continuació es mostra la sortida per a això:
np.random.rand
Out[8]: DecisionTreeClassifier(class_weight=None, criterion='entropy', max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=0, splitter='best')
3. Predicció del resultat de la prova
Ara predirem el resultat del conjunt de proves. Crearem un nou vector de predicció i_pred. A continuació es mostra el codi per a això:
#Predicting the test set result y_pred= classifier.predict(x_test)
Sortida:
A la imatge de sortida següent, es donen la sortida prevista i la sortida de prova real. Podem veure clarament que hi ha alguns valors en el vector de predicció, que són diferents dels valors del vector real. Aquests són errors de predicció.
4. Prova la precisió del resultat (Matriu de creació de confusió)
A la sortida anterior, hem vist que hi havia algunes prediccions incorrectes, de manera que si volem saber el nombre de prediccions correctes i incorrectes, hem d'utilitzar la matriu de confusió. A continuació es mostra el codi per a això:
#Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred)
Sortida:
alfabet i números
A la imatge de sortida de dalt, podem veure la matriu de confusió, que té 6+3= 9 prediccions incorrectes i 62+29=91 prediccions correctes. Per tant, podem dir que en comparació amb altres models de classificació, el classificador de l'arbre de decisions va fer una bona predicció.
5. Visualització del resultat del conjunt d'entrenament:
Aquí visualitzarem el resultat del conjunt d'entrenament. Per visualitzar el resultat del conjunt d'entrenament dibuixarem un gràfic per al classificador de l'arbre de decisió. El classificador predirà sí o no per als usuaris que hagin comprat o no el cotxe SUV com vam fer a la regressió logística. A continuació es mostra el codi per a això:
#Visulaizing the trianing set result from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Decision Tree Algorithm (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()
Sortida:
La sortida anterior és completament diferent de la resta de models de classificació. Té línies tant verticals com horitzontals que estan dividint el conjunt de dades segons la variable d'edat i salari estimat.
Com podem veure, l'arbre està intentant capturar cada conjunt de dades, que és el cas del sobreajustament.
6. Visualització del resultat del conjunt de proves:
La visualització del resultat del conjunt de proves serà similar a la visualització del conjunt d'entrenament, excepte que el conjunt d'entrenament es substituirà pel conjunt de proves.
#Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Decision Tree Algorithm(Test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()
Sortida:
Com podem veure a la imatge de dalt, hi ha alguns punts de dades verds dins de la regió porpra i viceversa. Per tant, aquestes són les prediccions incorrectes que hem comentat a la matriu de confusió.