Você está na página 1de 16

Universidade Federal de So Carlos UFSCar

Centro de Cincias Exatas e da Tecnologia CCET


Departamento de Estatstica Des







Relatrio do Trabalho 4 de Minerao de Dados

rvore de Deciso via Bagging




Alunos:
Diego Hernandes Fregonesi RA 324310
Pedro Marangoni Junior RA 354490
Vinicius Garcia Tosta RA 324469
1. Introduo
Muitas vezes estamos interessados em classificar indivduos, empresas ou
observaes em uma determinada categoria. Algumas tcnicas podem utilizadas para
concretizar tal fato. Nesse presente trabalho iremos utilizar a tcnica de rvore de
Deciso associada a tcnica Bagging. A tcnica de rvore de deciso visa esboar um
possvel perfil de uma categoria de uma varivel resposta. Associada a essa tcnica
teremos o Bagging que a reamostragem da nossa amostra treinamento e obteno de
escores parciais para a obteno de um escore final que possibilita classificar essas
empresas.
2. Objetivo
Desenvolver um modelo de classificao de risco de crdito de empresas
hipotticas que atuam no Brasil, atravs de um conjunto de ndices econmico-
financeiros, buscando prever a ocorrncia de falncia das empresas, auxiliando, assim,
os gestores na concesso de crdito.
3. Descrio do Banco de Dados

As variveis, descritas na Tabela 1, do modelo de classificao de risco de
crdito so ndices utilizados para caracterizar a situao econmico-financeira das
empresas, calculados a partir das suas demonstraes contbeis publicadas, sendo que o
modelo baseado na relao entre a situao econmico-financeira da empresa e a
ocorrncia da falncia ou no das empresas.

Tabela 1: Relao de variveis do banco de dados
X
1
Liquidez Geral
X
2
Retorno Ativo
X
3
Patrimnio Lquido
X
4
Endividamento em curto prazo
X
5
Endividamento financeiro
X
6
Endividamento total
X
7
Capital de giro
X
8
Despesas financeiras
X
9
Categorias de funcionrios
X
10
Benefcios aos funcionrios
X
11
Falncia

O ndice X
1
um indicador de liquidez que mede a capacidade de pagamento,
comparando direitos realizveis e exigibilidades, enquanto que o ndice X
2
indicador
de rentabilidade que avalia os resultados gerados pela empresa, e o ndice X
3
mede a
proporo de recursos prprios em relao aos recursos de terceiros na estrutura de
capital.
Os ndices X
4
, X
5
e X
6
so indicadores de estrutura que avaliam o grau de
endividamento da empresa, e os ndices X
7
e X
8
so indicadores de anlise dinmica que
avalia a situao financeira da empresa.
A varivel X
9
representa as categorias relativas ao nmero de funcionrios de
cada empresa, sendo possvel a identificao das empresas como pequenas (categoria
1), mdias (categoria 2) ou grandes (categoria 3).
A varivel X
10
representa a quantidade de benefcios que cada empresa oferece
aos seus funcionrios e a varivel X
11
a resposta de interesse, sendo que as empresas
falidas so o sucesso (falncia=1).

4. Metodologia
Iremos dividir esse trabalho em quatro partes:
Anlise Descritiva da Amostra Treinamento (apenas de maneira breve);
rvore de Deciso para a amostra treinamento;
Coeficiente de Mathews para obteno do ponto de corte ideal que ser
utilizado na combinao via voto majoritrio;
Uso da tcnica Bagging para encontrar um modelo mais preciso com o
mtodo de combinao via voto majoritrio.
Iremos primeiramente dividir nossa amostra em duas partes:
i) Amostra Treinamento (678 observaes) que servir para a construo do
modelo de rvore de deciso.
ii) Amostra Teste (291 observaes) que servir para verificar a capacidade
preditiva desse nosso modelo a fim de validar a construo feita
anteriormente.

Nossa varivel resposta nesse caso ser a falncia que assume dois tipos de
valores (0= empresas no falidas, 1= empresas falidas).



5. Resultados

Anlise Descritiva

Como no trabalho anterior realizamos a descritiva de todas as variveis
aqui acrescentamos apenas os grficos de setores das variveis categoria dos
funcionrios e falncia:



Figura 1: Grfico de Setores: Categorias de funcionrios
Com base no grfico setorial, pode-se observar que a maioria das empresas de
mdio porte, enquanto que a minoria constituda por aquelas que so de pequeno
porte.



Figura 2: Grfico de Setores: Panorama das empresas
Por intermdio do grfico setorial que diz respeito situao das empresas,
pode-se auferir que existe a predominncia de certo equilbrio entre as duas
caractersticas, sendo que empresas falidas constituem a maioria delas.

rvore de Deciso
Depois iremos fazer uma descrio da rvore de deciso feita para a amostra
treinamento que nos d o seguinte resultado:



Caractersticas das empresas falidas
Dentre as empresas as quais possuem despesas financeiras com valor igual ou
acima de 3.5, aquelas que estiverem providas de: um retorno ativo menor que 5.15,
concesso de benefcios aos funcionrios maior ou igual a 14.5, um endividamento em
curto prazo igual ou superior a 2.5, um capital de giro inferior a 22.35 e um patrimnio
lquido abaixo do patamar de 6.5, ento tais empresas possuem um alta probabilidade
de falncia.
Dentre as empresas as quais possuem despesas financeiras com valor inferior a
3.5, aquelas que seguirem as seguintes condies tambm tero alta probabilidade de
falncia: endividamento a curto prazo maior ou igual a 1.5, cujo ramo se ramifica em
outras 4 condies, endividamento a curto prazo maior ou igual a 2.5, patrimnio
lquido inferior a 6.5, liquidez geral menor que 21.25 e que se desdobra na quarta
condio supracitada, liquidez geral igual ou superior a 13.75;
No outro ramo de X4, empresas que se encontram em situao delicada so
caracterizadas um capital de giro inferior a 15.35, que se subdivide em dois ramos: a
que contm concesso de benefcios aos funcionrios igual ou superior a 25.95, e outro
ramo possui a condio de endividamento financeiro superior a 4.5, o qual possui como
ramificao o retorno ativo menor que 11.25 e patrimnio lquido inferior a 8.5.

Coeficiente de Mathews
Agora teremos que encontrar um ponto de corte ideal que ser o que maximiza o
Coeficiente de Mathews. O coeficiente de Mathews pode ser calculado da seguinte
forma:



Pelo Grfico 3 abaixo temos o ponto de corte ideal que ser utilizado:



Assim , considerando-se um intervalo de 0 a 1 com espaamento de 0.1, sero
calculados todos os valores do MCC associados ao grid especificado. O grfico acima
elucida a situao descrita. Portanto, o ponto de corte que maximiza o coeficiente de
correlao de Mathews , cujo maior valor foi de 0.6459, 0.5.

Bagging
Nesse tpico o intuito era de se gerar 25 reamostras do conjunto de dados de
treinamento por intermdio do mtodo Bootstrap. Assim, para cada umas dessas
reamostras, um modelo de rvore de deciso seria construdo e os escores preditivos das
probabilidades de falncia seriam calculados. Posto isso, uma vez calculada a ltima
quantidade mencionada, ela teria uma combinao dos escores advindos dos 25
modelos combinados por meio da mdia. Aplicado tal procedimento, o prximo passo
residiria na utilizao do mtodo da combinao via voto majoritrio, em que o ponto
de corte utilizado seria aquela descrito na parte 3 supramencionada (ponto de corte =
0.5). Com isso, considerando-se 25 modelos, ento, se 13 deles classificarem a empresa
com determinada caracterstica, admitir-se- que a mesma provida dessa classificao.
O pargrafo acima foi escrito de modo hipottico uma vez que no foi possvel
calcular os escores preditivos de cada reamostra. Porm, a programao foi
desenvolvida para se adequar ao objetivo proposto e segue no presente relatrio.

6. Concluso

Em teoria a metodologia Bagging aparenta ser bastante proveitosa no sentido
classificatrio das observaes visto que elas nos fornece uma ponderao de modelos a
qual nos traz o mais preciso.


7. Referncias Bibliogrficas

Viola, M.L.L. - Notas de Aula de Minerao de Dados.
Help do R.














8. Comandos Utilizados


dados<-read.table(file.choose())
dados
dados<-dados[,-1]

attach(dados)

dados<-
data.frame(V2,V3,V4,V5,V6,V7,V8,V10,V9,
V12,V11)

names(dados)<-
c("X1","X2","X3","X4","X5","X6","X7","X8",
"X9","X10","X11") # X11 a varivel
resposta

attach(dados)

X9<-factor(X9)

X11<-factor(X11)

dados[,9]<-X9

dados[,11]<-X11

dados

n<-length(dados[,1])

n.am<-round(0.7*n) # Tamanho
da amostra de treinamento

# Primeiramente, ser feita uma
aleatorizao a fim de se evitar qualquer
tipo de tendncia presente nos dados.

sort.fun<-sample(1:n,n.am) #
Aleatorizao

am.fun<-dados[sort.fun,] #
Amostra de treinamento

attach(am.fun)

# Parte 1 - Anlise descritiva das
variveis qualitativas

pie(c(0.48,0.52), labels = c("No
Falidas - 48%","Falidas - 52%"), #Falncia
(X11)

col=c("blue","red"),main="Situao das
Empresas")


pie(c(6/678,383/678,1-(389/678)),
labels = c("Pequenas - 0.9%",
"Mdias - 56.5%","Grandes -
42.6%"),col=c("red","blue","green4"), #
Categorias dos funcionrios (X9)
main="Categorias dos
Funcionrios")


am.test<-dados[-sort.fun,] #
Amostra do teste

=============================
==========================
#Parte 2 do trabalho - Construo
da rvore de deciso
=============================
==========================

library(rpart)

arvore<-
rpart(X11~X1+X2+X3+X4+X5+X6+X7+X8+X9
+X10,data=am.fun)

plot(arvore)

text(arvore)

plot(arvore,uniform=T,branch=0)

text(arvore,digits=3,cex=0.65,font=
10,pretty=0,fancy=T,fwidth=0,fheight=0)

predict(arvore,am.fun,type="class"
)





=============================
==========================
#Parte 3 do trabalho - Clculo do
ponto de corte ideal
=============================
==========================

rm(X11)

attach(am.fun)

X11<-as.numeric(X11)

for(i in 1:length(X11)) X11[i]<-
if(X11[i]==2){X11[i]=1} else
if(X11[i]==1){X11[i]=0}
X11

MCC<-function(reais,grid){probss<-
predict(arvore,am.fun)[,2]
pred<-NULL
for(i in
1:length(reais))pred[i]<-
if(probss[i]>=grid){pred[i]=1} else

if(probss[i]<grid){pred[i]=0}
n<-length(reais)
a<-sum(reais==1 &
pred==1)
b<-sum(reais==1 &
pred==0)
c<-sum(reais==0 &
pred==1)
d<-sum(reais==0 &
pred==0)

(a-
(n*((a+b)/n)*((a+c)/n)))/sqrt(((a+b)-
(n*((a+b)/n)^2))*((a+c)-n*((a+c)/n)^2))}


MCC.grid<-NULL

grid<-seq(0,1,by=0.1)

for (i in 1:length(grid))MCC.grid[i]<-
MCC(X11,grid[i])

MCC.grid

for (i in 1:length(grid))MCC.grid[i]<-
if(is.nan(MCC.grid[i])==TRUE){MCC.grid[i]=
0}else

if(is.nan(MCC.grid[i])==FALSE){MCC.grid[i]=
MCC.grid[i]}

MCC.grid

plot(grid,MCC.grid,type="b",xlab="
Pontos de Corte",ylab="Coeficiente de
Correlao de Mathews",main="Definio
do Ponto de Corte")

abline(h=max(MCC.grid),lwd=2,col
="red")

text(0.1,0.630,"MCC")

text(0.1,0.610,"Mximo")

arrows(x0=c(0.4,0.5,0.6),y0=rep(m
ax(MCC.grid),3),x1=rep(0.5,3),y1=rep(0.5,3
),lwd=2,col="green4")

text(0.92,0.630,"0.6459")

text(0.5,0.48,"Mdia = 0.5")

max(MCC.grid)

=============================
=====
# Parte 4 do trabalho - Bagging

# Ponto de corte = 0.5
=============================
=====

X11<-factor(X11,levels=c(0,1))

X11r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X11r[,i]<-
sample(X11,replace=TRUE)
X11r


X1r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X1r[,i]<-
sample(X1,replace=TRUE)
X1r

X2r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X2r[,i]<-
sample(X2,replace=TRUE)
X2r

X3r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X3r[,i]<-
sample(X3,replace=TRUE)
X3r

X4r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X4r[,i]<-
sample(X4,replace=TRUE)
X4r

X5r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X5r[,i]<-
sample(X5,replace=TRUE)
X5r

X6r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X6r[,i]<-
sample(X6,replace=TRUE)
X6r

X7r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X7r[i,]<-
sample(X7,replace=TRUE)
X7r

X8r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X8r[,i]<-
sample(X8,replace=TRUE)
X8r

rm(X9)
attach(X9)
X9r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X9r[,i]<-
sample(X9,replace=TRUE)
X9r

X10r<-
matrix(rep(0,678*25),nrow=678,ncol=25)
for(i in 1:25) X10r[,i]<-
sample(X10,replace=TRUE)
X10r


arvore1<-
rpart(X11r[,1]~X1r[,1]+X2r[,1]+X3r[,1]+X4r[
,1]+X5r[,1]+X6r[,1]+X7r[,1]+X8r[,1]+X9r[,1]
+X10r[,1])
arvore2<-
rpart(X11r[,2]~X1r[,2]+X2r[,2]+X3r[,2]+X4r[
,2]+X5r[,2]+X6r[,2]+X7r[,2]+X8r[,2]+X9r[,2]
+X10r[,2])
arvore3<-
rpart(X11r[,3]~X1r[,3]+X2r[,3]+X3r[,3]+X4r[
,3]+X5r[,3]+X6r[,3]+X7r[,3]+X8r[,3]+X9r[,3]
+X10r[,3])
arvore4<-
rpart(X11r[,4]~X1r[,4]+X2r[,4]+X3r[,4]+X4r[
,4]+X5r[,4]+X6r[,4]+X7r[,4]+X8r[,4]+X9r[,4]
+X10r[,4])
arvore5<-
rpart(X11r[,5]~X1r[,5]+X2r[,5]+X3r[,5]+X4r[
,5]+X5r[,5]+X6r[,5]+X7r[,5]+X8r[,5]+X9r[,5]
+X10r[,5])
arvore6<-
rpart(X11r[,6]~X1r[,6]+X2r[,6]+X3r[,6]+X4r[
,6]+X5r[,6]+X6r[,6]+X7r[,6]+X8r[,6]+X9r[,6]
+X10r[,6])
arvore7<-
rpart(X11r[,7]~X1r[,7]+X2r[,7]+X3r[,7]+X4r[
,7]+X5r[,7]+X6r[,7]+X7r[,7]+X8r[,7]+X9r[,7]
+X10r[,7])
arvore8<-
rpart(X11r[,8]~X1r[,8]+X2r[,8]+X3r[,8]+X4r[
,8]+X5r[,8]+X6r[,8]+X7r[,8]+X8r[,8]+X9r[,8]
+X10r[,8])
arvore9<-
rpart(X11r[,9]~X1r[,9]+X2r[,9]+X3r[,9]+X4r[
,9]+X5r[,9]+X6r[,9]+X7r[,9]+X8r[,9]+X9r[,9]
+X10r[,9])
arvore10<-
rpart(X11r[,10]~X1r[,10]+X2r[,10]+X3r[,10]
+X4r[,10]+X5r[,10]+X6r[,10]+X7r[,10]+X8r[,
10]+X9r[,10]+X10r[,10])
arvore11<-
rpart(X11r[,11]~X1r[,11]+X2r[,11]+X3r[,11]
+X4r[,11]+X5r[,11]+X6r[,11]+X7r[,11]+X8r[,
11]+X9r[,11]+X10r[,11])
arvore12<-
rpart(X11r[,12]~X1r[,12]+X2r[,12]+X3r[,12]
+X4r[,12]+X5r[,12]+X6r[,12]+X7r[,12]+X8r[,
12]+X9r[,12]+X10r[,12])
arvore13<-
rpart(X11r[,13]~X1r[,13]+X2r[,13]+X3r[,13]
+X4r[,13]+X5r[,13]+X6r[,13]+X7r[,13]+X8r[,
13]+X9r[,13]+X10r[,13])
arvore14<-
rpart(X11r[,14]~X1r[,14]+X2r[,14]+X3r[,14]
+X4r[,14]+X5r[,14]+X6r[,14]+X7r[,14]+X8r[,
14]+X9r[,14]+X10r[,14])
arvore15<-
rpart(X11r[,15]~X1r[,15]+X2r[,15]+X3r[,15]
+X4r[,15]+X5r[,15]+X6r[,15]+X7r[,15]+X8r[,
15]+X9r[,15]+X10r[,15])
arvore16<-
rpart(X11r[,16]~X1r[,16]+X2r[,16]+X3r[,16]
+X4r[,16]+X5r[,16]+X6r[,16]+X7r[,16]+X8r[,
16]+X9r[,16]+X10r[,16])
arvore17<-
rpart(X11r[,17]~X1r[,17]+X2r[,17]+X3r[,17]
+X4r[,17]+X5r[,17]+X6r[,17]+X7r[,17]+X8r[,
17]+X9r[,17]+X10r[,17])
arvore18<-
rpart(X11r[,18]~X1r[,18]+X2r[,18]+X3r[,18]
+X4r[,18]+X5r[,18]+X6r[,18]+X7r[,18]+X8r[,
18]+X9r[,18]+X10r[,18])
arvore19<-
rpart(X11r[,19]~X1r[,19]+X2r[,19]+X3r[,19]
+X4r[,19]+X5r[,19]+X6r[,19]+X7r[,19]+X8r[,
19]+X9r[,19]+X10r[,19])
arvore20<-
rpart(X11r[,20]~X1r[,20]+X2r[,20]+X3r[,20]
+X4r[,20]+X5r[,20]+X6r[,20]+X7r[,20]+X8r[,
20]+X9r[,20]+X10r[,20])
arvore21<-
rpart(X11r[,21]~X1r[,21]+X2r[,21]+X3r[,21]
+X4r[,21]+X5r[,21]+X6r[,21]+X7r[,21]+X8r[,
21]+X9r[,21]+X10r[,21])
arvore22<-
rpart(X11r[,22]~X1r[,22]+X2r[,22]+X3r[,22]
+X4r[,22]+X5r[,22]+X6r[,22]+X7r[,22]+X8r[,
22]+X9r[,22]+X10r[,22])
arvore23<-
rpart(X11r[,23]~X1r[,23]+X2r[,23]+X3r[,23]
+X4r[,23]+X5r[,23]+X6r[,23]+X7r[,23]+X8r[,
23]+X9r[,23]+X10r[,23])
arvore24<-
rpart(X11r[,24]~X1r[,24]+X2r[,24]+X3r[,24]
+X4r[,24]+X5r[,24]+X6r[,24]+X7r[,24]+X8r[,
24]+X9r[,24]+X10r[,24])
arvore25<-
rpart(X11r[,25]~X1r[,25]+X2r[,25]+X3r[,25]
+X4r[,25]+X5r[,25]+X6r[,25]+X7r[,25]+X8r[,
25]+X9r[,25]+X10r[,25])

#Amostras teste

rm(X11)
attach(am.test)

X11e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X11e[,i]<-
sample(X11,replace=TRUE)
X11e


X1e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X1e[,i]<-
sample(X1,replace=TRUE)
X1e

X2e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X2e[,i]<-
sample(X2,replace=TRUE)
X2e

X3e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X3e[,i]<-
sample(X3,replace=TRUE)
X3e

X4e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X4e[,i]<-
sample(X4,replace=TRUE)
X4e

X5e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X5e[,i]<-
sample(X5,replace=TRUE)
X5e

X6e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X6e[,i]<-
sample(X6,replace=TRUE)
X6e

X7e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X7e[,i]<-
sample(X7,replace=TRUE)
X7e

X8e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X8e[,i]<-
sample(X8,replace=TRUE)
X8e

X9e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X9e[,i]<-
sample(X9,replace=TRUE)
X9e

X10e<-
matrix(rep(0,291*25),nrow=291,ncol=25)
for(i in 1:25) X10e[,i]<-
sample(X10,replace=TRUE)
X10e

rm1t<-
data.frame(X11r[,1],X1r[,1],X2r[,1],X3r[,1],
X4r[,1],X5r[,1],X6r[,1],X7r[,1],X8r[,1],X9r[,1]
,X10r[,1])
am1t<-
data.frame(X11e[,1],X1e[,1],X2e[,1],X3e[,1]
,X4e[,1],X5e[,1],X6e[,1],X7e[,1],X8e[,1],X9e
[,1],X10e[,1])
names(rm1t)<-
c("X11","X1","X2","X3","X4","X5","X6","X7"
,"X8","X9","X10")
names(am1t)<-
c("X11","X1","X2","X3","X4","X5","X6","X7"
,"X8","X9","X10")
#Escores

esc1<-predict(arvore1,am1t)
##### Problema