Dando continuación a nuestro post anterior donde creamos un modelo de
riesgo crediticio, abordaremos un algoritmo denominado kNN o k Nearest
Neighbors, también conocido como k vecinos mas cercanos, donde básicamente se
compara los datos de las personas que más se parecen al cliente que queremos
analizar, clasificándolo con la mas cercana.
Abordaremos un escenario práctico, intuitivo y fácilmente reproducible en
Excel, que nos permita entender la base, ventajas, desventajas y
consideraciones al momento de implementar este algoritmo
kNN es un algoritmo de clasificación supervisada, clasificación por
el hecho que tratamos de etiquetar en una clase al nuevo cliente y supervisada,
por el hecho que existe una variable objetivo, siendo un poco más técnicos
podríamos decir que:
Es un esquema de clasificación común, basado en el uso de medidas de
distancia. Esta técnica asume que
el conjunto completo de entrenamiento incluye no sólo los datos sino también la
clasificación deseada. Al momento de clasificar un nuevo elemento (t) se determina su distancia contra todos los
elementos en el conjunto de entrenamiento. Luego sólo se consideran los K
elementos más cercanos al nuevo elemento (t). Y es entonces clasificado en la
clase mayoritaria de los vecinos cercanos.
La técnica KNN es muy sensible a la escogencia de k, una regla práctica es
k menor o igual a la raíz del número de elementos de entrenamiento.
Asumiremos lo siguiente:
Las variables han sido
debidamente seleccionadas, se han limpiado los datos duplicados, valores null y
valores por defecto, se ha transformado las variables y normalizado los datos
de manera que el dataset utilizado sea de calidad.
Algo muy importante de tomar en cuenta es el balanceo de los datos.
En machine learning se considera que un conjunto de entrenamiento de dos clases
está desbalanceado cuando el número de muestras de una de las clases (la clase
mayoritaria) sobrepasa el número de muestras de la otra (la clase minoritaria).
Diferentes estudios han mostrado que el desempeño de la mayoría de algoritmos
de clasificación, se afecta negativamente cuando estos son entrenados con
conjuntos de datos desbalanceados, por esta razón disponemos de datos históricos
de 15 clientes "buenos" y 15 "malos" y se desea realizar un
credit scoring. Los credit scoring reales utilizan muchas más variables
con miles, decenas miles y hasta millones de datos.
Cliente
|
Ingresos Mes
|
Nivel Estudios
|
Score
|
Ana
|
$1,100
|
1
|
Malo
|
Luis
|
$983
|
0
|
Malo
|
Pedro
|
$1,203
|
1
|
Malo
|
Diego
|
$995
|
3
|
Malo
|
Lucas
|
$725
|
1
|
Malo
|
José
|
$1,750
|
2
|
Malo
|
Manuel
|
$2,100
|
0
|
Malo
|
Tere
|
$1,590
|
1
|
Malo
|
Sofía
|
$1,009
|
1
|
Malo
|
Mary
|
$850
|
2
|
Malo
|
John
|
$700
|
4
|
Malo
|
Peter
|
$602
|
2
|
Malo
|
Xiao
|
$760
|
1
|
Malo
|
Arty
|
$1,100
|
1
|
Malo
|
Sonia
|
$2,001
|
2
|
Malo
|
Laura
|
$2,500
|
5
|
Bueno
|
Isabel
|
$2,650
|
4
|
Bueno
|
Edu
|
$1,700
|
3
|
Bueno
|
Paco
|
$1,321
|
4
|
Bueno
|
Ester
|
$2,311
|
3
|
Bueno
|
Mara
|
$1,512
|
5
|
Bueno
|
Paula
|
$2,432
|
2
|
Bueno
|
Xisca
|
$2,550
|
1
|
Bueno
|
Cesar
|
$1,567
|
4
|
Bueno
|
Marga
|
$1,250
|
5
|
Bueno
|
Pere
|
$1,003
|
2
|
Bueno
|
Tania
|
$2,005
|
5
|
Bueno
|
Silvia
|
$1,580
|
2
|
Bueno
|
Flor
|
$1,350
|
3
|
Bueno
|
Diana
|
$2,201
|
4
|
Bueno
|
Juan gana $ 1800 al mes y su nivel
de estudios es Bachiller, es decir: 3. ¿Le daríamos un crédito?
Ingresos mes
|
Nivel Estudios
|
Score
|
|
Juan
|
$ 1,800
|
3
|
¿?
|
El algoritmo KNN calcula la distancia entre
Juan y sus vecinos.
Para calcular la distancia entre
dos puntos A y B usamos el Teorema de Pitágoras:
Ingresos
|
Estudios
|
|
Ana
|
4
|
1
|
Juan
|
1
|
2
|
Pero hay un problema y es que el salario y el nivel de
estudios están medidos en escalas diferentes: El salario mensual son miles de
dolares y el nivel de estudios va de 1 a 5. Entonces hay que normalizarlo, para
que estén en la misma escala. Una forma es transformar tanto los ingresos como
el nivel de estudio a la escala [0-1]. Así al que gana más (Isabel) le ponemos
un 1 y al que gana menos (Peter) un 0.
Cliente
|
Ingresos Mes
|
Nivel Estudios
|
Score
|
IngresosmesN
|
EstudiosN
|
|
Ana
|
$1,100
|
1
|
Malo
|
0.24
|
0.20
|
|
Luis
|
$983
|
0
|
Malo
|
0.19
|
0.00
|
|
Pedro
|
$1,203
|
1
|
Malo
|
0.29
|
0.20
|
|
Diego
|
$995
|
3
|
Malo
|
0.19
|
0.60
|
|
Lucas
|
$725
|
1
|
Malo
|
0.06
|
0.20
|
|
José
|
$1,750
|
2
|
Malo
|
0.56
|
0.40
|
|
Manuel
|
$2,100
|
0
|
Malo
|
0.73
|
0.00
|
|
Tere
|
$1,590
|
1
|
Malo
|
0.48
|
0.20
|
|
Sofía
|
$1,009
|
1
|
Malo
|
0.20
|
0.20
|
|
Mary
|
$850
|
2
|
Malo
|
0.12
|
0.40
|
|
John
|
$700
|
4
|
Malo
|
0.05
|
0.80
|
|
Peter
|
$602
|
2
|
Malo
|
0.00
|
0.40
|
|
Xiao
|
$760
|
1
|
Malo
|
0.08
|
0.20
|
|
Arty
|
$1,100
|
1
|
Malo
|
0.24
|
0.20
|
|
Sonia
|
$2,001
|
2
|
Malo
|
0.68
|
0.40
|
|
Laura
|
$2,500
|
5
|
Bueno
|
0.93
|
1.00
|
|
Isabel
|
$2,650
|
4
|
Bueno
|
1.00
|
0.80
|
|
Edu
|
$1,700
|
3
|
Bueno
|
0.54
|
0.60
|
|
Paco
|
$1,321
|
4
|
Bueno
|
0.35
|
0.80
|
|
Ester
|
$2,311
|
3
|
Bueno
|
0.83
|
0.60
|
|
Mara
|
$1,512
|
5
|
Bueno
|
0.44
|
1.00
|
|
Paula
|
$2,432
|
2
|
Bueno
|
0.89
|
0.40
|
|
Xisca
|
$2,550
|
1
|
Bueno
|
0.95
|
0.20
|
|
Cesar
|
$1,567
|
4
|
Bueno
|
0.47
|
0.80
|
|
Marga
|
$1,250
|
5
|
Bueno
|
0.32
|
1.00
|
|
Pere
|
$1,003
|
2
|
Bueno
|
0.20
|
0.40
|
|
Tania
|
$2,005
|
5
|
Bueno
|
0.69
|
1.00
|
|
Silvia
|
$1,580
|
2
|
Bueno
|
0.48
|
0.40
|
|
Flor
|
$1,350
|
3
|
Bueno
|
0.37
|
0.60
|
|
$2,201
|
4
|
Bueno
|
0.78
|
0.80
|
Evaluamos a Juan:
Cliente
|
Ingresos Mes
|
Nivel Estudios
|
IngresosmesN
|
EstudiosN
|
|||
Juan
|
1,800
€
|
3
|
0.58
|
0.60
|
Se trata de averiguar quiénes son los vecinos de Juan y cuántos son
"buenos" y "malos".
Tomando un valor arbitrario de k=7, podemos concluir:
Distancia con Juan
|
El más cercano
|
K vecinos más cercanos
|
El
vecino es...
|
0.526
|
|||
0.721
|
|||
0.495
|
|||
0.393
|
|||
0.660
|
|||
0.201
|
Cercano
|
Malo
|
|
0.618
|
|||
0.413
|
|||
0.556
|
|||
0.505
|
|||
0.573
|
|||
0.618
|
|||
0.646
|
|||
0.526
|
|||
0.223
|
Cercano
|
Malo
|
|
0.526
|
|||
0.461
|
|||
0.049
|
El
más cercano
|
Cercano
|
Bueno
|
0.308
|
|||
0.250
|
Cercano
|
Bueno
|
|
0.424
|
|||
0.368
|
|||
0.542
|
|||
0.230
|
Cercano
|
Bueno
|
|
0.482
|
|||
0.438
|
|||
0.412
|
|||
0.227
|
Cercano
|
Bueno
|
|
0.220
|
Cercano
|
Bueno
|
|
0.280
|
Vecinos malos -->
|
2
|
Vecinos buenos -->
|
5
|
Juan es clasificado como:
|
Bueno
|
En un gráfico de dispersión:
Existen muchas técnicas para realizar Credit Scoring de las cuales la regresión
logística sigue siendo la más utilizada. Pero ahora que sabes una nueva técnica,
te reto a que pruebes:
- SVM
- Redes
Neuronales Artificiales
Escríbeme a mi correo miguelurbin@gmail.com para enviarles la
plantilla utilizada y realicen sus propias pruebas o mejoras.




Excelente trabajo Miguel!
ResponderEliminarSeria bueno saber cuales son las zonas mas malapagas :)