Está en la página 1de 26

1.

Definición del problema


Predecir el número de Crímenes violentos usando la base de datos
del repositorio de aprendizaje automatizado UCI:
(https://archive.ics.uci.edu/ml/datasets/Communities+and+Crime), como un
problema deregresión, siguiendo los pasos del proceso de machine
learning.

Los datos:
En la descripción general de la data contenida en el repositorio,
señala que “todos los datos numéricos se normalizaron en el rango
decimal 0.00-1.00 utilizando un método de agrupación de intervalos
iguales sin supervisión. Los atributos conservan su distribución y
sesgo”; asimismo señala que la “normalización conserva
proporciones aproximadas de valores dentro de un atributo (por
ejemplo, el doble del valor para el doble de la población dentro de la
precisión disponible, excepto los valores extremos (todos los valores
más de 3 SD por encima de la media se normalizan a 1,00; todos los
valores más de 3 SD por debajo la media se normaliza a 0.00)).”

La dimensión de la data extraida es de 1994 instancias y 127


características y una variable predictiva.

variable descripción tipo


estado de EE. UU. por número no se cuenta como
estado predictivo arriba, pero si se considera, debe nominal
considerarse nominal
código numérico para el condado no predictivo, y
condado numérico
muchos valores faltantes
código numérico para la comunidad no predictivo
comunidad numérico
y muchos valores faltantes
nombre de comunidad no predictivo solo para
nombre de comunidad cadena
información
número de fold para validación cruzada no
fold aleatoria de 10 fold, potencialmente útil para numérico
depuración, pruebas emparejadas no predictivo
población población por comunidad numérico decimal
tamaño del hogar personas promedio por hogar numérico decimal
racepctblack % de la población que es afroamericana numérico decimal
racePctWhite % de población que es caucásica numérico decimal
racePctAsian % de la población de ascendencia asiática numérico decimal
racePctHisp % de la población que es de herencia hispana numérico decimal
% de la población que tiene entre 12 y 21 años de
agePct12t21 numérico decimal
edad
agePct12t29 % de la población que tiene entre 12 y 29 años numérico decimal
agePct16t24 % de la población que tiene entre 16 y 24 años numérico decimal
agePct65up % de la población que tiene 65 años o más numérico decimal
número de personas que viven en áreas
numbUrban numérico decimal
clasificadas como urbanas
% de personas que viven en áreas clasificadas
pctUrban numérico decimal
como urbanas
medIncome ingreso familiar promedio numérico decimal
pctWWage % de hogares con ingresos salariales en 1989 numérico decimal
variable descripción tipo
% de hogares con ingresos agrícolas o por cuenta
pctWFarmSelf numérico decimal
propia en 1989
% de hogares con ingresos por inversión / renta
pctWInvInc numérico decimal
en 1989
% de hogares con ingresos de seguridad social en
pctWSocSec numérico decimal
1989
% de hogares con ingresos de asistencia pública
pctWPubAsst numérico decimal
en 1989
pctWRetire % de hogares con ingresos de jubilación en 1989 numérico decimal
ingreso familiar promedio difiere del ingreso
medFamInc numérico decimal
familiar para hogares no familiares
perCapInc ingreso per cápita numérico decimal
whitePerCap ingreso per cápita para caucásicos numérico decimal
blackPerCap ingreso per cápita para los afroamericanos numérico decimal
indianPerCap ingreso per cápita para los nativos americanos numérico decimal
ingreso per cápita para personas con herencia
AsianPerCap numérico decimal
asiática
ingreso per cápita para personas con 'otro'
OtherPerCap numérico decimal
patrimonio
ingreso per cápita para personas con herencia
HispPerCap numérico decimal
hispana
NumUnderPov número de personas bajo el nivel de pobreza numérico decimal
PctPopUnderPov % de personas bajo el nivel de pobreza numérico decimal
% de personas de 25 años o más con educación
PctLess9thGrade numérico decimal
inferior al noveno grado
% de personas de 25 años o más que no son
PctNotHSGrad numérico decimal
graduados de secundaria
% de personas de 25 años o más con una
PctBSorMore numérico decimal
licenciatura o educación superior
% de personas de 16 años y más, en la fuerza
PctUnemployed numérico decimal
laboral y desempleados
% de personas de 16 años y más que están
PctEmploy numérico decimal
empleadas
% de personas de 16 años y más que trabajan en
PctEmplManu numérico decimal
la fabricación
% de personas de 16 años y más que están
PctEmplProfServ numérico decimal
empleadas en servicios profesionales
% de personas de 16 años y más que trabajan en
PctOccupManu numérico decimal
la fabricación
% de personas de 16 años y más que están
PctOccupMgmtProf empleadas en ocupaciones gerenciales o numérico decimal
profesionales
MalePctDivorce % de hombres divorciados numérico decimal
MalePctNevMarr % de hombres que nunca se han casado numérico decimal
FemalePctDiv % de mujeres divorciadas numérico decimal
TotalPctDiv % de población divorciada numérico decimal
PersPerFam número medio de personas por familia numérico decimal
% de familias con hijos encabezadas por dos
PctFam2Par numérico decimal
padres
PctKids2Par % de niños en viviendas familiares con dos padres numérico decimal
% de niños de 4 años y menores en dos hogares
PctYoungKids2Par numérico decimal
de padres
% de niños de 12-17 años en hogares con dos
PctTeen2Par numérico decimal
padres
% de madres de niños menores de 6 años en la
PctWorkMomYoungKids numérico decimal
fuerza laboral
% de madres de niños menores de 18 años en la
PctWorkMom numérico decimal
fuerza laboral
variable descripción tipo
NumIlleg número de hijos nacidos para nunca casarse numérico decimal
PctIlleg % de niños nacidos para nunca casarse numérico decimal
número total de personas que se sabe que
NumImmig numérico decimal
nacieron en el extranjero
% de _inmigrantes_ que se inmigó en los últimos
PctImmigRecent numérico decimal
3 años
% de _inmigrantes_ que se inmigó en los últimos
PctImmigRec5 numérico decimal
5 años
% de _inmigrantes_ que se inmigó en los últimos
PctImmigRec8 numérico decimal
8 años
% de _inmigrantes_ que se inmigó en los últimos
PctImmigRec10 numérico decimal
10 años
% de _población_ que ha inmigrado en los últimos
PctRecentImmig numérico decimal
3 años
% de _población_ que ha inmigrado en los últimos
PctRecImmig5 numérico decimal
5 años
% de _población_ que ha inmigrado en los últimos
PctRecImmig8 numérico decimal
8 años
% de _población_ que ha inmigrado en los últimos
PctRecImmig10 numérico decimal
10 años
PctSpeakEnglOnly % de personas que solo hablan inglés numérico decimal
PctNotSpeakEnglWell % de personas que no hablan bien inglés numérico decimal
PctLargHouseFam % de hogares familiares que son grandes 6 o más numérico decimal
% de todos los hogares ocupados que son grandes
PctLargHouseOccup numérico decimal
6 o más personas
PersPerOccupHous personas promedio por hogar numérico decimal
personas promedio por hogar ocupado por el
PersPerOwnOccHous numérico decimal
propietario
PersPerRentOccHous personas promedio por hogar de alquiler numérico decimal
% de personas en hogares ocupados por sus
PctPersOwnOccup numérico decimal
propietarios
% de personas en viviendas densas más de 1
PctPersDenseHous numérico decimal
persona por habitación
% de unidades de vivienda con menos de 3
PctHousLess3BR numérico decimal
dormitorios
MedNumBR número medio de habitaciones numérico decimal
HousVacant número de hogares vacantes numérico decimal
PctHousOccup % de viviendas ocupadas numérico decimal
PctHousOwnOcc % de hogares ocupados por el propietario numérico decimal
PctVacantBoarded % de viviendas vacantes que se tapan numérico decimal
% de viviendas vacantes que han estado vacantes
PctVacMore6Mos numérico decimal
por más de 6 meses
MedYrHousBuilt unidades de vivienda del año medio construido numérico decimal
% de unidades de vivienda ocupadas sin teléfono
PctHousNoPhone Numérico decimal
en 1990,
% de viviendas sin instalaciones de fontanería
PctWOFullPlumb numérico decimal
completas
vivienda ocupada por el propietario valor de
OwnOccLowQuart numérico decimal
cuartil inferior
OwnOccMedVal vivienda ocupada por el propietario valor medio numérico decimal
vivienda ocupada por el propietario valor del
OwnOccHiQuart numérico decimal
cuartil superior
RentLowQ vivienda de alquiler alquiler del cuartil inferior numérico decimal
vivienda de alquiler renta mediana variable del
RentMedian numérico decimal
censo H32B del archivo STF1A
RentHighQ vivienda de alquiler alquiler del cuartil superior numérico decimal
renta bruta mediana variable del censo H43A del
MedRent numérico decimal
archivo STF3A incluye utilidades
variable descripción tipo
MedRentPctHousInc renta bruta media como % del ingreso familiar numérico decimal
el costo promedio de los propietarios como % del
MedOwnCostPctInc ingreso familiar para los propietarios con una numérico decimal
hipoteca
costo promedio de los propietarios como % del
MedOwnCostPctIncNoMtg numérico decimal
ingreso familiar para los propietarios sin hipoteca
número de personas en refugios para personas
NumInShelters numérico decimal
sin hogar
número de personas sin hogar contadas en la
NumStreet numérico decimal
calle
PctForeignBorn % de personas nacidas en el extranjero numérico decimal
% de personas nacidas en el mismo estado que
PctBornSameState numérico decimal
actualmente viven
% de personas que viven en la misma casa que en
PctSameHouse85 numérico decimal
1985 5 años antes
% de personas que viven en la misma ciudad que
PctSameCity85 numérico decimal
en 1985 5 años antes
% de personas que viven en el mismo estado que
PctSameState85 numérico decimal
en 1985 5 años antes
LemasSwornFT número de policías jurados a tiempo completo numérico decimal
policías jurados a tiempo completo por cada 100K
LemasSwFTPerPop numérico decimal
de población
número de policías jurados a tiempo completo en
LemasSwFTFieldOps operaciones de campo en la calle en lugar de numérico decimal
administrativos, etc.
oficiales de policía juramentados a tiempo
LemasSwFTFieldPerPop completo en operaciones de campo en la calle en numérico decimal
lugar de administrativos, etc. por 100K habitantes
LemasTotalReq solicitudes totales de policía numérico decimal
solicitudes totales de policía por población de
LemasTotReqPerPop numérico decimal
100K
PolicReqPerOffic solicitudes totales de policía por oficial de policía numérico decimal
PolicPerPop oficiales de policía por cada 100K de población numérico decimal
una medida de la coincidencia racial entre la
comunidad y la fuerza policial. Los valores altos
RacialMatchCommPol numérico decimal
indican que las proporciones en la comunidad y la
fuerza policial son similares
PctPolicWhite % de policías que son caucásicos numérico decimal
PctPolicBlack % de policías que son afroamericanos numérico decimal
PctPolicHisp % de policías que son hispanos numérico decimal
PctPolicAsian % de policías que son asiáticos numérico decimal
PctPolicMinor % de policías que son minoría de cualquier tipo numérico decimal
número de oficiales asignados a unidades
OfficAssgnDrugUnits numérico decimal
especiales de drogas
NumKindsDrugsSeiz número de diferentes tipos de drogas incautadas numérico decimal
PolicAveOTWorked promedio de horas extras policiales trabajadas numérico decimal
LandArea área de tierra en millas cuadradas numérico decimal
densidad de población en personas por milla
PopDens numérico decimal
cuadrada
% de personas que utilizan el transporte público
PctUsePubTrans numérico decimal
para desplazamientos
PolicCars número de coches de policía numérico decimal
PolicOperBudg presupuesto operativo de la policía numérico decimal
% de policías jurados a tiempo completo en
LemasPctPolicOnPatr numérico decimal
patrulla
LemasGangUnitDeploy unidad de pandillas desplegada numérica decimal
LemasPctOfficDrugUn % de oficiales asignados a unidades de drogas numérico decimal
variable descripción tipo
PolicBudgPerPop presupuesto operativo de la policía por población numérico decimal
número total de crímenes violentos por
ViolentCrimesPerPop numérico decimal
población de 100K

2. Analizar los datos


Al ser un ejercicio con fines introductorios al análisis de datos, se inicio con
el análisis empírico de la información y disminuir el número de variables.

Para esto, primero ubicamos aquellas variables que contengan datos NA, si
representan mas del 10% de las instancias observadas, no la
consideraremos.

Además, se selecciona aquellas variables relevantes a Datos


poblacionales, Tipo de población (Población por origen racial, Grupos
etarios) Vivienda, Tipos de ingresos, Percapita por grupos raciales,
Indicador de pobreza; Educación; Indicador de empleo; Grupos de
ocupación; Grupos por lengua (si hablan la lengua nativa o no) costo de
vivienda, transporte y la Variable de predicción.

Existen datos interesantes que podrían ser importantes para una


predicción, pero al superar el 50% del total de las observaciones nulas,
podrían llevarnos a error en el resultado final.

Estadística descriptiva
Los criterios utilizados para seleccionar las variables antes de llevarlos a R
studio, son bajo el supuesto que los crímenes violentos tienen relación con
la pobreza, grado de estudio, ocupación, medio de obtención de ingresos,
característica racial, densidad poblacional. La variable predictiva es
discreta continua, por lo que el problema es de regresión.

Al cargar estas variables en Rstudio, tenemos una columna de


identificación (id), 42 caracteristicas y una variable predictiva.
Dimensión
>dim(crimi)
[1] 1994 44

Para conocer las Medidas de centralización, posición, dispersión; los


valores mínimos, máximos, el rango, el número de datos, el tipo de datos
los valores nulos na y el sesgo, se utilizó las funciones summary.matrix;
stat.desc, skewness

install.packages("pastecs")
library(pastecs)
library(e1071)

res = stat.desc(crimi)
round(res, 4)
sum=summary(crimi)
skew=apply(crimi,2,skewness,na.rm=T)
Se observa que el rango es 1 para todas las variables, la escala se presenta en una sola unidad; confirmando la información
mencionada en el repositorio, la data se encuentra normalizada.

Idealmente se espera que el sesgo este entre 1 y -1. Las variables en su mayoría tienen un sesgo por encima de 1, incluso la
variable población y territorio esta sobre 5.

CI.mean
agrupacion Variable tipo nbr.val Min. Max. nbr.na Median Mean . 1st Qu. 3rd Qu. SE.mean rango var std.dev coef.var skewness
0.95
0.000 0.016
population numeric 1994 0.0000 1.0000 0.0200 0.0576 0.0056 0.0100 0.0500 0.0028 1.0000 0.1269 2.2035 5.0563406
0 1
0.000 0.012
Datos LandArea numeric 1994 0.0000 1.0000 0.0400 0.0652 0.0048 0.0200 0.0700 0.0025 1.0000 0.1095 1.6780 5.6990672
0 0
poblacionale
0.000 0.041
s PopDens numeric 1994 0.0000 1.0000 0.1700 0.2329 0.0089 0.1000 0.2800 0.0045 1.0000 0.2031 0.8722 1.9451659
0 2
0.000 0.053
PctForeignBorn numeric 1994 0.0000 1.0000 0.1300 0.2156 0.0102 0.0600 0.2800 0.0052 1.0000 0.2311 1.0723 1.754321
0 4
0.000 0.064
racepctblack numeric 1994 0.0000 1.0000 0.0600 0.1796 0.0111 0.0200 0.2300 0.0057 1.0000 0.2534 1.4109 1.8605376
0 2
0.000 0.059
Población racePctWhite numeric 1994 0.0000 1.0000 0.8500 0.7537 0.0107 0.6300 0.9400 0.0055 1.0000 0.2440 0.3238 -1.2985329
0 6
por origen
0.000 0.043
racial racePctAsian numeric 1994 0.0000 1.0000 0.0700 0.1537 0.0092 0.0400 0.1700 0.0047 1.0000 0.2089 1.3592 2.6004776
0 6
0.000 0.054
racePctHisp numeric 1994 0.0000 1.0000 0.0400 0.1440 0.0102 0.0100 0.1600 0.0052 1.0000 0.2325 1.6143 2.412143
0 1
0.000 0.024
agePct12t21 numeric 1994 0.0000 1.0000 0.4000 0.4242 0.0068 0.3400 0.4700 0.0035 1.0000 0.1552 0.3658 1.5745362
0 1
0.000 0.020
agePct12t29 numeric 1994 0.0000 1.0000 0.4800 0.4939 0.0063 0.4100 0.5400 0.0032 1.0000 0.1436 0.2907 1.3049166
Grupos 0 6
etarios 0.000 0.027
agePct16t24 numeric 1994 0.0000 1.0000 0.2900 0.3363 0.0073 0.2500 0.3600 0.0037 1.0000 0.1665 0.4952 2.3706404
0 7
0.000 0.032
agePct65up numeric 1994 0.0000 1.0000 0.4200 0.4232 0.0079 0.3000 0.5300 0.0040 1.0000 0.1792 0.4234 0.4621038
0 1
datos 0.000 0.197
pctUrban numeric 1994 0.0000 1.0000 1.0000 0.6963 0.0195 0.0000 1.0000 0.0100 1.0000 0.4448 0.6388 -0.8843025
vivienda 0 9
householdsize numeric 1994 0.0000 1.0000 0.000 0.4400 0.4634 0.0072 0.3500 0.5400 0.0037 1.0000 0.026 0.1637 0.3533 0.9798245
CI.mean
agrupacion Variable tipo nbr.val Min. Max. nbr.na Median Mean . 1st Qu. 3rd Qu. SE.mean rango var std.dev coef.var skewness
0.95
0 8
0.000 0.033
pctWWage numeric 1994 0.0000 1.0000 0.5600 0.5582 0.0080 0.4400 0.6900 0.0041 1.0000 0.1829 0.3277 -0.373174
0 5
0.000 0.041
pctWFarmSelf numeric 1994 0.0000 1.0000 0.2300 0.2916 0.0090 0.1600 0.3700 0.0046 1.0000 0.2041 0.7000 1.5354725
0 7
0.000 0.031
pctWInvInc numeric 1994 0.0000 1.0000 0.4800 0.4957 0.0078 0.3700 0.6200 0.0040 1.0000 0.1781 0.3592 0.2412242
0 7
0.000 0.030
pctWSocSec numeric 1994 0.0000 1.0000 0.4750 0.4711 0.0076 0.3500 0.5800 0.0039 1.0000 0.1736 0.3685 0.1102526
0 1
0.000 0.049
pctWPubAsst numeric 1994 0.0000 1.0000 0.2600 0.3178 0.0098 0.1425 0.4400 0.0050 1.0000 0.2221 0.6990 1.096013
0 3
0.000 0.028
pctWRetire numeric 1994 0.0000 1.0000 0.4700 0.4792 0.0074 0.3600 0.5800 0.0038 1.0000 0.1676 0.3496 0.4513799
0 1
0.000 0.036
perCapInc numeric 1994 0.0000 1.0000 0.3000 0.3503 0.0084 0.2200 0.4300 0.0043 1.0000 0.1911 0.5456 1.3540397
0 5
0.000 0.034
whitePerCap numeric 1994 0.0000 1.0000 0.3200 0.3680 0.0082 0.2400 0.4400 0.0042 1.0000 0.1868 0.5076 1.3839608
0 9
0.000 0.029
blackPerCap numeric 1994 0.0000 1.0000 0.2500 0.2911 0.0075 0.1725 0.3800 0.0038 1.0000 0.1716 0.5895 1.3459464
0 4
0.000 0.027
indianPerCap numeric 1994 0.0000 1.0000 0.1700 0.2035 0.0072 0.1100 0.2500 0.0037 1.0000 0.1648 0.8097 2.0771638
0 2
0.000 0.038
AsianPerCap numeric 1994 0.0000 1.0000 0.2800 0.3224 0.0086 0.1900 0.4000 0.0044 1.0000 0.1954 0.6062 1.2913186
0 2
0.000 0.036
OtherPerCap numeric 1994 0.0000 1.0000 0.2500 0.2846 0.0084 0.1700 0.3600 0.0043 1.0000 0.1911 0.6714 1.4031531
0 5
0.000 0.033
HispPerCap numeric 1994 0.0000 1.0000 0.3450 0.3863 0.0080 0.2600 0.4800 0.0041 1.0000 0.1831 0.4740 1.1822894
0 5
0.000 0.052
PctPopUnderPov numeric 1994 0.0000 1.0000 0.2500 0.3030 0.0100 0.1100 0.4500 0.0051 1.0000 0.2285 0.7540 0.9223249
0 2
0.000 0.042
PctWOFullPlumb numeric 1994 0.0000 1.0000 0.1900 0.2431 0.0091 0.1000 0.3300 0.0046 1.0000 0.2063 0.8487 1.5705433
0 6
0.000 0.045
PctLess9thGrade numeric 1994 0.0000 1.0000 0.2700 0.3158 0.0094 0.1600 0.4200 0.0048 1.0000 0.2134 0.6756 1.232229
Educación 0 5
PctNotHSGrad numeric 1994 0.0000 1.0000 0.000 0.3600 0.3833 0.0089 0.2300 0.5100 0.0045 1.0000 0.041 0.2025 0.5283 0.5827616
CI.mean
agrupacion Variable tipo nbr.val Min. Max. nbr.na Median Mean . 1st Qu. 3rd Qu. SE.mean rango var std.dev coef.var skewness
0.95
0 0
0.000 0.043
PctBSorMore numeric 1994 0.0000 1.0000 0.3100 0.3617 0.0092 0.2100 0.4600 0.0047 1.0000 0.2092 0.5784 1.1390663
0 8
0.000 0.040
PctUnemployed numeric 1994 0.0000 1.0000 0.3200 0.3635 0.0089 0.2200 0.4800 0.0045 1.0000 0.2022 0.5561 0.9329714
Indicador de 0 9
empleo 0.000 0.030
PctEmploy numeric 1994 0.0000 1.0000 0.5100 0.5011 0.0076 0.3800 0.6275 0.0039 1.0000 0.1740 0.3473 -0.254345
0 3
0.000 0.041
PctEmplManu numeric 1994 0.0000 1.0000 0.3700 0.3964 0.0089 0.2500 0.5200 0.0045 1.0000 0.2024 0.5106 0.6512525
0 0
Grupos de 0.000 0.030
PctEmplProfServ numeric 1994 0.0000 1.0000 0.4100 0.4406 0.0077 0.3200 0.5300 0.0039 1.0000 0.1755 0.3982 0.9218863
ocupación 0 8
0.000 0.034
PctOccupMgmtProf numeric 1994 0.0000 1.0000 0.4000 0.4413 0.0082 0.3100 0.5400 0.0042 1.0000 0.1863 0.4221 0.892287
0 7
0.000 0.051
PctSpeakEnglOnly numeric 1994 0.0000 1.0000 0.8700 0.7859 0.0100 0.7300 0.9400 0.0051 1.0000 0.2269 0.2887 -1.9404551
Grupos por 0 5
lengua 0.000 0.048
PctNotSpeakEnglWell numeric 1994 0.0000 1.0000 0.0600 0.1506 0.0096 0.0300 0.1600 0.0049 1.0000 0.2197 1.4591 2.5997927
0 3
0.000 0.028
MedRentPctHousInc numeric 1994 0.0000 1.0000 0.4800 0.4901 0.0074 0.3700 0.5900 0.0038 1.0000 0.1695 0.3458 0.464206
0 7
costo de 0.000 0.010
NumInShelters numeric 1994 0.0000 1.0000 0.0000 0.0294 0.0045 0.0000 0.0100 0.0023 1.0000 0.1026 3.4855 6.729456
vivienda 0 5
0.000 0.010
NumStreet numeric 1994 0.0000 1.0000 0.0000 0.0228 0.0044 0.0000 0.0000 0.0022 1.0000 0.1004 4.4077 7.0090067
0 1
0.000 0.052
transporte PctUsePubTrans numeric 1994 0.0000 1.0000 0.0700 0.1617 0.0101 0.0200 0.1900 0.0051 1.0000 0.2291 1.4167 2.2221107
0 5
Variable de 0.000 0.054
ViolentCrimesPerPop numeric 1994 0.0000 1.0000 0.1500 0.2380 0.0102 0.0700 0.3300 0.0052 1.0000 0.2330 0.9790 1.5203085
predicción 0 3
Para visualizar mejor esta información, usaremos Histogramas y diagrama de cajas:
multi.hist(crimi, dcol = c("blue", "red"), dlty = c("dotted", "solid"), main = names (crimi) )
Las variables referentes a datos poblacionales, por origen racial, por lengua madre, tienen una distribución exponencial. El
resto de las variables tiene una distribución gaussianas.
Las variables: número de personas en refugios y en las calles y % de personas que viven en áreas clasificadas como
urbanas, tiene una distribución inversa.

Para visualizar si existen outlayer se usará los diagramas de cajas.


#boxplot
par(mfrow=c(5,10))
for (i in 1:44) {
boxplot(crimi[,i],main=names(crimi)[i])
}

Se observa que en todas las variables existen datos dispersos.y se ratifica la necesidad de eliminar del estudio la variables
número de personas en refugios y en las calles y % de personas que viven en áreas clasificadas como urbanas e incluso
las referentes al tipo de lenguaje de comunicación.
}
Luego del análisis de la información, se realizara:

Feature selection y eliminación de los atributos más correlacionados entre si.

Evaluación de los algoritmos: línea base


Se usara los algoritmos de regresión GLM y GLMNET. Se usara 10-fold
para la validación cruzada con 3 repeticiones. Evaluaremos los algoritmos
utilizando las métricas RMSE y R2. RMSE dará una idea general de cuán
equivocadas son todas las predicciones (0 es perfecto) yR2 dará una idea de qué tan
bien el modelo se ajusta a los datos (1 es perfecto,0 es peor)
Comparamos los algoritmos seleccionados:

trainControl=trainControl(method="repeatedcv",number=10,repeats=3)
metric="RMSE"

#lm
set.seed(7)
fit.lm=train (ViolentCrimesPerPop~., data=dataset,
method="lm", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#glm
set.seed(7)
fit.glm=train (ViolentCrimesPerPop~., data=dataset,
method="glm", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#glmnet
set.seed(7)
fit.glmnet=train (ViolentCrimesPerPop~., data=dataset,
method="glmnet", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#svmRadial
set.seed(7)
fit.svmRadial=train (ViolentCrimesPerPop~., data=dataset,
method="svmRadial", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#cart
set.seed(7)
grid=expand.grid(.cp=c(0, 0.05, 0.1))
fit.cart=train (ViolentCrimesPerPop~., data=dataset,
method="rpart", metric=metric,
tuneGrid=grid,preProc=c("center","scale"),
trControl=trainControl)

#knn
set.seed(7)
fit.knn=train (ViolentCrimesPerPop~., data=dataset,
method="knn", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#comparar los algoritmos


results=resamples(list(LM=fit.lm,GLM=fit.glm,GLMNET=fit.glmnet,SVM=
fit.svmRadial,CART=fit.cart,KNN=fit.knn))
summary(results)
dotplots(results)

Call:
summary.resamples(object = results)

Models: LM, GLM, GLMNET, SVM, CART, KNN


Number of resamples: 30

MAE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.08749235 0.09374227 0.09701032 0.09852143 0.10251724 0.1129021 0
GLM 0.08749235 0.09374227 0.09701032 0.09852143 0.10251724 0.1129021 0
GLMNET 0.08803657 0.09359802 0.09659881 0.09822669 0.10268800 0.1118003 0
SVM 0.07941428 0.08811010 0.09296086 0.09292859 0.09796217 0.1092308 0
CART 0.09830279 0.10934891 0.11467177 0.11681118 0.12454744 0.1309480 0
KNN 0.08821667 0.09616174 0.10272992 0.10214240 0.10741365 0.1179264 0
RMSE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.1261447 0.1320444 0.1384337 0.1420601 0.1524620 0.1606139 0
GLM 0.1261447 0.1320444 0.1384337 0.1420601 0.1524620 0.1606139 0
GLMNET 0.1261650 0.1320710 0.1377425 0.1418011 0.1522931 0.1603222 0
SVM 0.1232707 0.1333404 0.1409585 0.1413864 0.1508881 0.1677838 0
CART 0.1463041 0.1611728 0.1722802 0.1721179 0.1829153 0.1967691 0
KNN 0.1263754 0.1404660 0.1487644 0.1488119 0.1567058 0.1728071 0

Rsquared
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.5265949 0.6024129 0.6297996 0.6303315 0.6617646 0.7239511 0
GLM 0.5265949 0.6024129 0.6297996 0.6303315 0.6617646 0.7239511 0
GLMNET 0.5305593 0.6026923 0.6316276 0.6315747 0.6619651 0.7245564 0
SVM 0.5625437 0.6055271 0.6407794 0.6437044 0.6631537 0.7308535 0
CART 0.3779416 0.4612384 0.4896917 0.4918105 0.5299616 0.6018571 0
KNN 0.5148965 0.5582517 0.5922204 0.5967236 0.6268885 0.7150980 0

En el análisis de los histogramas, de la correlación de variables y


visualizando las métricas MAE RMSE Y Rsquared, no muy convenientes,
es pertinente retirar las variables que están causando mucho ruido.
Aun con estas variables el algoritmo SVM es el que mejor resultado nos
da.

Para eliminar las variables altamente correlacionadas usamos la función


findCorrelation.
.

set.seed(7)
cutoff=0.40
correlations=cor(dataset[,2:43])
highlyCorrelated=findCorrelation(correlations, cutoff=cutoff)
for(value in highlyCorrelated){
print(names(dataset)[value])}

[1] "PctLess9thGrade" [1] "householdsize"


[1] "HispPerCap" [1] "racepctblack"
[1] "pctWFarmSelf" [1] "racePctAsian"
[1] "pctWRetire" [1] "pctWInvInc"
[1] "pctWSocSec" [1] "PctSpeakEnglOnly"
[1] "perCapInc" [1] "agePct12t21"
[1] "PctEmplProfServ" [1] "racePctHisp"
[1] "PctUnemployed" [1] "PctOccupMgmtProf"
Son 16 atributos que selecciona para ser eliminados

Eliminando los atributos, probamos los mismos algoritmos:

Call:
summary.resamples(object = results)

Models: LM, GLM, GLMNET, SVM, CART, KNN


Number of resamples: 30

MAE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.09256560 0.09882830 0.1018504 0.10381582 0.1079037 0.1212043 0
GLM 0.09256560 0.09882830 0.1018504 0.10381582 0.1079037 0.1212043 0
GLMNET 0.09199530 0.09875420 0.1013716 0.10349096 0.1076878 0.1205771 0
SVM 0.08657959 0.09114799 0.0971904 0.09629749 0.1000874 0.1163926 0
CART 0.09368122 0.10850930 0.1143733 0.11431631 0.1219520 0.1275434 0
KNN 0.09240881 0.10062681 0.1047846 0.10623914 0.1113832 0.1277475 0

RMSE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.1302534 0.1392251 0.1450880 0.1478570 0.1563816 0.1727139 0
GLM 0.1302534 0.1392251 0.1450880 0.1478570 0.1563816 0.1727139 0
GLMNET 0.1302987 0.1394323 0.1446733 0.1476979 0.1559596 0.1727945 0
SVM 0.1299826 0.1395079 0.1444542 0.1457050 0.1539150 0.1772775 0
CART 0.1388402 0.1603909 0.1660102 0.1682997 0.1778981 0.1926495 0
KNN 0.1321091 0.1457085 0.1548370 0.1541662 0.1606415 0.1854749 0

Rsquared
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.5111381 0.5649921 0.6000946 0.5987994 0.6397817 0.6886747 0
GLM 0.5111381 0.5649921 0.6000946 0.5987994 0.6397817 0.6886747 0
GLMNET 0.5138952 0.5620769 0.6002394 0.5995653 0.6373534 0.6897053 0
SVM 0.5114866 0.5974567 0.6234899 0.6213963 0.6449475 0.7233293 0
CART 0.3905579 0.4742293 0.5007077 0.5081291 0.5403991 0.6630639 0
KNN 0.4625980 0.5365680 0.5644785 0.5683436 0.5977895 0.6589267 0

Eliminando los atributos, tenemos que


RMSE(0 es perfecto) y
R2 (1 es perfecto,0 es peor)
Los algoritmos KNN, LM, GLM, GLMNET y SVM, responden mejor que CART. ,
no encontramos necesario utilizar el BOX, Cox
Fase Tunning

Ajustaremos sus hiperparametros

print(fit.svmRadial)

Support Vector Machines with Radial Basis Function Kernel


1597 samples
27 predictor

Pre-processing: centered (27), scaled (27)


Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 1437, 1436, 1437, 1437, 1437, 1438, ...
Resampling results across tuning parameters:

C RMSE Rsquared MAE


0.25 0.1558103 0.5909280 0.10068350
0.50 0.1496554 0.6092346 0.09780010
1.00 0.1457050 0.6213963 0.09629749

Tuning parameter 'sigma' was held constant at a value of 0.03284226


RMSE was used to select the optimal model using the smallest value.
The final values used for the model were sigma = 0.03284226 and C = 1.

Los valores finales utilizados para el modelo fueron sigma = 0.03284226


y C = 1.

Optimizando:
#optimizacion
trainControl= trainControl (method="repeatedcv" ,number=10,
repeats=3)
metric="RMSE"
set.seed(7)
grid=expand.grid(.sigma=c(0.025,0.05,0.1,0.15),.C=seq(1,10,by=1))
fit.svm=train (ViolentCrimesPerPop~., data=dataset,
method="svmRadial", metric=metric, tuneGrid=grid,
preProc=c("center","scale"),
trControl=trainControl)

Support Vector Machines with Radial Basis Function Kernel

1597 samples
43 predictor

Pre-processing: centered (43), scaled (43)


Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 1437, 1436, 1436, 1439, 1437, 1438, ...
Resampling results across tuning parameters:

sigma C RMSE Rsquared MAE


0.025 1 0.1431918 0.6325670 0.09449314
0.025 2 0.1419139 0.6335008 0.09505897
0.025 3 0.1424689 0.6291077 0.09612033
0.025 4 0.1436124 0.6226919 0.09753863
0.025 5 0.1446610 0.6172522 0.09871063
0.025 6 0.1456232 0.6124185 0.09973577
0.025 7 0.1466044 0.6076310 0.10072782
0.025 8 0.1476668 0.6025039 0.10170149
0.025 9 0.1487740 0.5971354 0.10270417
0.025 10 0.1497991 0.5921808 0.10368707
0.050 1 0.1542288 0.5747528 0.10274314
0.050 2 0.1517667 0.5788773 0.10407450
0.050 3 0.1525076 0.5729054 0.10587454
0.050 4 0.1536829 0.5659241 0.10736157
0.050 5 0.1550096 0.5582362 0.10870631
0.050 6 0.1558577 0.5534304 0.10960657
0.050 7 0.1565659 0.5494854 0.11030155
0.050 8 0.1571043 0.5465115 0.11085035
0.050 9 0.1574582 0.5445799 0.11117691
0.050 10 0.1577531 0.5429877 0.11141661
0.100 1 0.1742590 0.4684168 0.11719202
0.100 2 0.1698370 0.4800997 0.11925315
0.100 3 0.1697403 0.4774063 0.12052708
0.100 4 0.1702321 0.4734012 0.12104835
0.100 5 0.1704100 0.4719750 0.12128407
0.100 6 0.1705300 0.4710153 0.12139476
0.100 7 0.1705672 0.4706893 0.12141645
0.100 8 0.1705650 0.4706979 0.12141157
0.100 9 0.1705648 0.4706995 0.12141098
0.100 10 0.1705648 0.4706995 0.12141098
0.150 1 0.1912998 0.3725164 0.13012034
0.150 2 0.1857621 0.3895555 0.13238738
0.150 3 0.1850503 0.3910091 0.13372915
0.150 4 0.1851173 0.3903560 0.13382717
0.150 5 0.1851247 0.3903062 0.13383774
0.150 6 0.1851247 0.3903062 0.13383774
0.150 7 0.1851247 0.3903062 0.13383774
0.150 8 0.1851247 0.3903062 0.13383774
0.150 9 0.1851247 0.3903062 0.13383774
0.150 10 0.1851247 0.3903062 0.13383774

RMSE was used to select the optimal model using the smallest value.
The final values used for the model were sigma = 0.025 and C = 2.

Los valores finales utilizados para el modelo fueron sigma = 0.025 y C = 2.

Modelos de conjuntos:
#algoritmos de conjuntos
trainControl= trainControl (method="repeatedcv" ,number=10,
repeats=3)
metric="RMSE"
set.seed(7)

fit.gbm=train (ViolentCrimesPerPop~., data=dataset,


method="gbm", metric=metric, preProc=c("center","scale"),
trControl=trainControl,verbose=FALSE)

set.seed(7)
fit.cubist=train (ViolentCrimesPerPop~., data=dataset,
method="cubist", metric=metric,preProc=c("center","scale"),
trControl=trainControl)
ensembleResults=resamples (list(RF=fit.rf, GBM=fit.gbm,CUBIST=
fit.cubist))

summary(ensembleResults)
dotplot(ensembleResults)
Los enfoques adicionales que podría considerar serían combinarlas predicciones de
múltiples modelos con buen desempeño, llamadosapilamiento.
Gradient Boosting Machines (GBM).
Cubist, boosting (CUBIST).

Call:
summary.resamples(object = ensembleResults)
Models: GBM, CUBIST
Number of resamples: 30

MAE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
GBM 0.08373713 0.09077522 0.09262126 0.09369483 0.09700011 0.1113499 0
CUBIST 0.07586999 0.08506624 0.08861626 0.08890786 0.09256531 0.1025764 0

RMSE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
GBM 0.1159046 0.1295228 0.1354591 0.1373133 0.1407578 0.1670894 0
CUBIST 0.1172576 0.1264970 0.1332740 0.1341618 0.1414475 0.1562810 0

Rsquared
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
GBM 0.5110692 0.6183930 0.6668635 0.6511606 0.6910464 0.7268119 0
CUBIST 0.6025900 0.6378481 0.6738286 0.6738987 0.7002481 0.7685590 0

Con SVM tenemos mas cerca a o en RMSE y R2 cerca a 1 (0.65), que es


aceptable.

Los resultados
population. Land rea, popdens, racepctwhite, racepctblack, racepctasian;
racepcthisp
, población tamaño de territorio Del análisis preliminar se pueden extraer
las siguientes conclusiones:

Hasta aca se entreno los datos basado en una selecciòn por correlaciòn.
Se volvio a analizar la estadistica de los datos y la naturaleza de las
variables, se realizo una prueba basado en conocimiento utilizando el
entrenamiento con lm con VarImp, considerando una mejor opciòn, por
cuanto las variables que resultan de esto estan comprometidas con los
crimenes violentos, mientras que el tamaño de la poblaciòn, puede ser
refrencial pero no es causa efecto, al igual el origen de nacimiento,
respecto al grupo de raza, nos sugiere no inclusiòn del caucasico, por
cuanto al existir en la data el detalle de las otras razas esta se anula, en los
grupos etarios, el rango de 12 a 29 debe quedar, el porcentaje de espacios
urbanos, el tipo de ingreso es importante por tanto queda, recomienda se
quede uan sola variable de este grupo, en los resultados no se incluye el
indicador de pobreza, discutible pero se mantendra para el ejercicio, el
grado de instrucciòn puede er determinaqnte, tambien se encuentra dentro
de los resultados. En empleo solo una variable, quita lo referente al mode
de comuicacion eliminandose el uso de idioma, En tipo de vivienda,
tambien encontramos dos variale recomendada, los que viven en refugios
o en las calles.

Se ha argumentado que la pobreza, la heterogeneidad y la movilidad socavan las redes


vecinales y los lazos sociales, contribuyendo a un colapso en el control social informal que,
a su vez, permite aumentar las tasas de criminalidad. Sin embargo, las pruebas de la
naturaleza sistémica del control social informal dentro de un modelo de delincuencia
comunitaria han sido raras, y los resultados empíricos son mixtos.

Barbara D. Warner, Pamela Wilcox Rountree, Local Social Ties in a Community and Crime
Model: Questioning the Systemic Nature of Informal Social Control, Social Problems,
Volume 44, Issue 4, 1 November 1997, Pages 520–536, https://doi.org/10.2307/3097221

Es interesante este comentario, cuando nos manifiesta lo experimental que


pueden ser este tipo de investigación.

Reiniciamos el análisis retirando las variables recomendadas:

trainControl=trainControl(method="repeatedcv",number=10,re
peats=3)
> metric="RMSE"
>
> #lm
> set.seed(7)
> fit.lm=train (ViolentCrimesPerPop~., data=dataset,
+ method="lm", metric=metric,
preProc=c("center","scale"),
+ trControl=trainControl)
>
> varImp(fit.lm)

lm variable importance pctWInvInc 51.98


pctWRetire 47.86
only 20 most important variables shown (out of 43) PctNotHSGrad 46.70
agePct16t24 34.38
Overall pctWSocSec 32.53
pctUrban 100.00 agePct12t29 32.10
racepctblack 86.82 OtherPerCap 32.09
pctWPubAsst 61.85 indianPerCap 30.51
PctLess9thGrade 60.57 LandArea 29.05
NumStreet 60.47 PctEmploy 28.68
racePctHisp 59.48 PctBSorMore 28.22
pctWWage 57.60 racePctAsian 26.08
NumInShelters 53.82
Con las mejores características, probamos los algoritmos

x=datasetnew[,1:20]
y=datasetnew[,21]
trainControl=trainControl(method="repeatedcv",number=10,repeats=3)
set.seed(seed)
metric="RMSE"

#lm
set.seed(7)
fit.lm=train (x, y, method="lm", metric=metric, preProc=c("center","scale"),
trControl=trainControl)
#glm
set.seed(7)
fit.glm=train (x,y, method="glm", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#glmnet
set.seed(7)
fit.glmnet=train (x,y, method="glmnet", metric=metric,
preProc=c("center","scale"),
trControl=trainControl)

#svmRadial
set.seed(7)
fit.svmRadial=train (x,y, method="svmRadial", metric=metric,
preProc=c("center","scale"),
trControl=trainControl)

#cart
set.seed(7)
grid=expand.grid(.cp=c(0, 0.05, 0.1))
fit.cart=train (x,y, method="rpart", metric=metric,
tuneGrid=grid,preProc=c("center","scale"),
trControl=trainControl)

#knn
set.seed(7)
fit.knn=train (x,y, method="knn", metric=metric, preProc=c("center","scale"),
trControl=trainControl)

#comparar los algoritmos


results=resamples(list(LM=fit.lm,GLM=fit.glm,GLMNET=fit.glmnet,SVM=fit.svmRadi
al,CART=fit.cart,KNN=fit.knn))

summary(results)
dotplot(results)

Call:
summary.resamples(object = results)

Models: LM, GLM, GLMNET, SVM, CART, KNN


Number of resamples: 30

MAE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.08749235 0.09374227 0.09701032 0.09852143 0.10251724 0.1129021 0
GLM 0.08808089 0.09307924 0.09634346 0.09787535 0.10355017 0.1113554 0
GLMNET 0.08811955 0.09297459 0.09616594 0.09772756 0.10339078 0.1110553 0
SVM 0.08464193 0.08970630 0.09548580 0.09422715 0.09723873 0.1086665 0
CART 0.10174256 0.10833790 0.11734153 0.11679776 0.12303299 0.1310171 0
KNN 0.08999583 0.09965278 0.10384783 0.10386564 0.10758019 0.1180069 0

RMSE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.1261447 0.1320444 0.1384337 0.1420601 0.1524620 0.1606139 0
GLM 0.1252761 0.1323176 0.1390980 0.1414302 0.1515376 0.1598814 0
GLMNET 0.1253533 0.1323710 0.1390628 0.1414324 0.1515067 0.1599202 0
SVM 0.1256723 0.1362644 0.1419940 0.1442555 0.1530578 0.1739923 0
CART 0.1502282 0.1616303 0.1748007 0.1716571 0.1797295 0.1900227 0
KNN 0.1299664 0.1442352 0.1522498 0.1536050 0.1582297 0.1780163 0

Rsquared
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LM 0.5265949 0.6024129 0.6297996 0.6303315 0.6617646 0.7239511 0
GLM 0.5435019 0.6064373 0.6307630 0.6338479 0.6651298 0.7221510 0
GLMNET 0.5420361 0.6064001 0.6312709 0.6338135 0.6646142 0.7222964 0
SVM 0.5319560 0.5901415 0.6179090 0.6270552 0.6595415 0.7233964 0
CART 0.3776126 0.4499774 0.4851507 0.4908777 0.5220547 0.6047433 0
KNN 0.4458299 0.5232725 0.5728385 0.5679369 0.6045620 0.6858881 0

Optimizando el algoritmo SVM


#optimizacion
trainControl= trainControl (method="repeatedcv" ,number=10, repeats=3)
metric="RMSE"
set.seed(7)
grid=expand.grid(.sigma=c(0.025,0.05,0.1,0.15),.C=seq(1,10,by=1))
fit.svm=train (x, y,
method="svmRadial", metric=metric, tuneGrid=grid,
preProc=c("center","scale"),
trControl=trainControl)
print(fit.svm)
plot(fit.svm)

Support Vector Machines with Radial Basis Function Kernel

1597 samples
20 predictor

Pre-processing: centered (20), scaled (20)


Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 1437, 1436, 1437, 1437, 1437, 1438, ...
Resampling results across tuning parameters:

sigma C RMSE Rsquared MAE


0.025 1 0.1413917 0.6430059 0.09228073
0.025 2 0.1401181 0.6465053 0.09185213
0.025 3 0.1400132 0.6461137 0.09194665
0.025 4 0.1401861 0.6447625 0.09227400
0.025 5 0.1404668 0.6432017 0.09268561
0.025 6 0.1407776 0.6416882 0.09303765
0.025 7 0.1411588 0.6399135 0.09336629
0.025 8 0.1415380 0.6381256 0.09367394
0.025 9 0.1419320 0.6362739 0.09400210
0.025 10 0.1422896 0.6345522 0.09430541
0.050 1 0.1446926 0.6247141 0.09450349
0.050 2 0.1439700 0.6243217 0.09498346
0.050 3 0.1448309 0.6191538 0.09597294
0.050 4 0.1457204 0.6144868 0.09679623
0.050 5 0.1465657 0.6100884 0.09745371
0.050 6 0.1475255 0.6052174 0.09812459
0.050 7 0.1484503 0.6004674 0.09881710
0.050 8 0.1493551 0.5957909 0.09950929
0.050 9 0.1501737 0.5916697 0.10011294
0.050 10 0.1510200 0.5874703 0.10071386
0.100 1 0.1535675 0.5763771 0.10107757
0.100 2 0.1519964 0.5785523 0.10153639
0.100 3 0.1534501 0.5694160 0.10304756
0.100 4 0.1554696 0.5581540 0.10480828
0.100 5 0.1574025 0.5478601 0.10640475
0.100 6 0.1589317 0.5398892 0.10776277
0.100 7 0.1602760 0.5330315 0.10898677
0.100 8 0.1615677 0.5265402 0.11016750
0.100 9 0.1628134 0.5204717 0.11123409
0.100 10 0.1639748 0.5149213 0.11218192
0.150 1 0.1611307 0.5338736 0.10632081
0.150 2 0.1592379 0.5357933 0.10799787
0.150 3 0.1611382 0.5234290 0.11039379
0.150 4 0.1631395 0.5119881 0.11227149
0.150 5 0.1649326 0.5020605 0.11393527
0.150 6 0.1666411 0.4929565 0.11540350
0.150 7 0.1681533 0.4851329 0.11669364
0.150 8 0.1694399 0.4785535 0.11778910
0.150 9 0.1705743 0.4728254 0.11873331
0.150 10 0.1715600 0.4679331 0.11960968
RMSE was used to select the optimal model using the smallest value.
The final values used for the model were sigma = 0.025 and C = 3.

En la comparación de los algoritmos tanto lineales como ensamblados, e incluso el SMV opptimizado, el que mejor resultado nos
entrega es CUBIST.

LM GLM GLMNET SVM CART KNN RF GBM CUBIST


Min, 0,08749235 0,08808089 0,08811955 0,08464193 0,10174256 0,08999583 0,08656818 0,07767529 0,07925194
1st Qu, 0,09374227 0,09307924 0,09297459 0,0897063 0,1083379 0,09965278 0,09246636 0,09259 0,08676476
Median 0,09701032 0,09634346 0,09616594 0,0954858 0,11734153 0,10384783 0,09553158 0,09546154 0,09074839
MAE Mean 0,09852143 0,09787535 0,09772756 0,09422715 0,11679776 0,10386564 0,09703647 0,0956528 0,09142881
3rd Qu, 0,10251724 0,10355017 0,10339078 0,09723873 0,12303299 0,10758019 0,10167501 0,0996576 0,09527357
Max, 0,1129021 0,1113554 0,1110553 0,1086665 0,1310171 0,1180069 0,1111096 0,1125695 0,1040104
NA's 0 0 0 0 0 0 0 0 0
Min, 0,1261447 0,1252761 0,1253533 0,1256723 0,1502282 0,1299664 0,1260031 0,1155876 0,1203603
1st Qu, 0,1320444 0,1323176 0,132371 0,1362644 0,1616303 0,1442352 0,1316545 0,1368821 0,1299014
Median 0,1384337 0,139098 0,1390628 0,141994 0,1748007 0,1522498 0,1392735 0,1401773 0,1364674
RMSE Mean 0,1420601 0,1414302 0,1414324 0,1442555 0,1716571 0,153605 0,140936 0,1408053 0,1383878
3rd Qu, 0,152462 0,1515376 0,1515067 0,1530578 0,1797295 0,1582297 0,149905 0,1474761 0,1489608
Max, 0,1606139 0,1598814 0,1599202 0,1739923 0,1900227 0,1780163 0,1583995 0,1600909 0,1580809
NA's 0 0 0 0 0 0 0 0 0
Min, 0,5265949 0,5435019 0,5420361 0,531956 0,3776126 0,4458299 0,5139 0,502907 0,5478454
1st Qu, 0,6024129 0,6064373 0,6064001 0,5901415 0,4499774 0,5232725 0,6057106 0,6134233 0,6244474
Median 0,6297996 0,630763 0,6312709 0,617909 0,4851507 0,5728385 0,6352461 0,6288029 0,6507941
Rsquared Mean 0,6303315 0,6338479 0,6338135 0,6270552 0,4908777 0,5679369 0,6374988 0,6376302 0,6553674
3rd Qu, 0,6617646 0,6651298 0,6646142 0,6595415 0,5220547 0,604562 0,6654006 0,6584939 0,6910223
Max, 0,7239511 0,722151 0,7222964 0,7233964 0,6047433 0,6858881 0,7491864 0,7825069 0,7618137
NA's 0 0 0 0 0 0 0 0 0
Para optimizar el algoritmo hacemos un print y observamos que Los valores finales
utilizados para el modelo fueron committees = 20 y neighbors = 0.

Cubist

1597 samples
20 predictor

Pre-processing: centered (20), scaled (20)


Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 1437, 1436, 1437, 1437, 1437, 1438, ...
Resampling results across tuning parameters:

committees neighbors RMSE Rsquared MAE


1 0 0.1469041 0.6138159 0.09693265
1 5 0.1502620 0.5950353 0.10146564
1 9 0.1474251 0.6081546 0.09908853
10 0 0.1391303 0.6514590 0.09187220
10 5 0.1440462 0.6226159 0.09794388
10 9 0.1410208 0.6371780 0.09550602
20 0 0.1383878 0.6553674 0.09142881
20 5 0.1433908 0.6255656 0.09769370
20 9 0.1402734 0.6406776 0.09523458

RMSE was used to select the optimal model using the smallest value.
The final values used for the model were committees = 20 and neighbors = 0.

Con una búsqueda grid en fase tunning alrededor de los valores señalados entre2 y 30 y
comprobaremos un valor de “neighbors” por encima 0.logramos un incremento de

El menor error es con committees = 23 y neighbors = 0., pero mayor Rsquared con
committees = 27 y neighbors = 0

committees neighbors RMSE Rsquared MAE


20 0 0,1383878 0,6553674 0,09142881
23 0 0,1382511 0,6561039 0,09128801
27 0 0,1381854 0,6567934 0,09132637
Finalizar el modelo
Parece que los resultados para el algoritmo CUBIST son los más precisos aunque no mas
optimos. Crearemos un nuevo modelo CUBIST independiente con los parámetros
anteriormente entrenados utilizando todoel conjunto de datos.

Evaluation on training data (1597 cases):

Average |error| 0.104


Relative |error| 0.59
Correlation coefficient 0.77

Attribute usage:
Conds Model

71% 61% racePctWhite


55% 48% PctPopUnderPov
17% 40% NumStreet
13% 90% racepctblack
12% 23% PctUsePubTrans
4% 12% MedRentPctHousInc
3% 78% pctWSocSec
3% 45% PctEmplProfServ
3% 83% pctWWage
3% 21% blackPerCap
3% 27% PctEmplManu
2% 61% agePct12t21
2% 4% householdsize
2% 24% racePctAsian
1% 61% PctOccupMgmtProf
1% 4% PctUnemployed
1% 71% agePct65up
1% 35% NumInShelters
1% LandArea
82% racePctHisp
3% PopDens
52% whitePerCap
53% PctEmploy
18% HispPerCap
82% PctLess9thGrade
49% PctSpeakEnglOnly
83% PctNotHSGrad
57% PctForeignBorn
19% OtherPerCap
69% pctWInvInc
62% pctUrban
52% PctNotSpeakEnglWell
46% pctWRetire
71% agePct16t24
71% agePct12t29
69% pctWPubAsst
63% PctBSorMore
57% perCapInc
9% population
9% PctWOFullPlumb

Time: 7.8 secs


Evaluación de datos de entrenamiento de los 1597 casos:

Promedio | error | 0,104


Relativo | error | 0,59
Coeficiente de correlación 0,77

Validando con datos no etiquetados:

library(e1071)
library (Cubist)
set.seed(7)
x=dataset [ ,1:43]
y=dataset [ ,44]
preprocessParams=preProcess(x, method=c("center","scale"))
transX=predict(preprocessParams, x)

finalModel= cubist (x=transX, y=y, committees =27)


summary (finalModel)

set.seed(7)
valx=validation [ ,1:43]
trans_valx=predict(preprocessParams,valx)
valy=validation [ ,44]

predictions=predict(finalModel,newdata=
trans_valx,neighbors=0)
rmse=R2(predictions,valy)
print(rmse)

Tenemos una rmse de 0.6285599, que no esta mal, pero no es optimo, se debe probar
otros parámetros, y algoritmos para lograr mejor resultado.

No se utilizo el BoxCox, pues no aportaba demasiado, el centrado y escalado al final,


tampoco aporto. La dimensión de la data original, disminuyo significativamente de 127 a
44, por análisis empírico de datos y en relación a la relevancia para hallar la variable final,
se probo obtener las mejores características con las correlaciones, pero las variables
recomendadas no eran necesarias retirarse, probando con en base al conocimiento con
lm, estando mas acorde al problema. Quedo solo 21 características importantes con lo
que se entreno .
La predicción resultante no es óptima, con mayor tiempo y más práctica se puede lograr
mejor resultado

También podría gustarte