Estás leyendo la publicación: ¿Cómo encontrar la importancia de las características en la predicción de incumplimiento de préstamos?
Comprender la importancia de la característica es muy importante para un profesional de la ciencia de datos para que pueda seleccionar las características importantes para entrenar el modelo de aprendizaje automático. El análisis de la importancia de la característica es necesario para ciertos trabajos de análisis predictivo, como las predicciones de incumplimiento de crédito o préstamo. Además de minimizar el riesgo de incumplimiento con la predicción, también es necesario encontrar las características importantes cuando un cliente incumple. Entonces, en este artículo, realizaremos un análisis de la importancia de las características en los problemas populares de predicción de morosos de préstamos utilizando un clasificador Random Forest. A continuación se presentan los puntos principales que vamos a discutir en esta publicación.
Tabla de contenido
- Importancia de la característica
- Modelado predictivo y análisis de características
- Entrenamiento de un clasificador de bosque aleatorio
- Analizando la importancia de las características
Primero comprendamos la importancia de las características.
Importancia de la característica
La importancia de las características se convierte en una parte esencial de la tubería de aprendizaje automático, la importancia de las características genera la lista de características con las puntuaciones de importancia correspondientes. Entonces, una vez que obtengamos el puntaje, podemos seleccionar la característica importante.
Como se menciona en el título, utilizaremos un conjunto de datos de incumplimiento de préstamo. El conjunto de datos de un moroso de préstamos generalmente tiene tantas características, por lo que en qué característica debería centrarse más un científico de datos es una gran pregunta. Debido a que no es factible examinar cada característica una por una de cerca, debería haber una manera que nos proporcione un conjunto de características esenciales, y luego entra en juego la importancia de la característica. Con la ayuda de algoritmos basados en árboles como el bosque aleatorio, podemos tener una lista de características importantes.
¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos? echa un vistazo aquí.
Modelado predictivo y análisis de características
El bosque aleatorio tiene una importancia característica incorporada. Random forest usa su criterio de impureza de Gini para seleccionar la característica importante. La característica que ayuda al modelo a disminuir la impureza se está convirtiendo en una característica importante, lo que implica que si una característica contribuye más a reducir la impureza, se vuelve más importante.
Usaremos el conjunto de datos de incumplimiento de préstamo para implementar la importancia de la característica, el incumplimiento de préstamo es el problema más resuelto en el aprendizaje automático. Contiene información sobre los clientes que podrían ser un banco o cualquier compañía de préstamos o cualquier compañía de vehículos. Nuestro conjunto de datos son datos bancarios, tiene toda la información de los clientes a quienes se otorgaron préstamos en el pasado y una variable objetivo que indica si un cliente en particular es moroso o no. 0 significa no moroso, 1 significa moroso.
Entrenamiento de un clasificador de bosque aleatorio
(NOTA: solo hay unos pocos pasos de preprocesamiento que no se mencionan en esta publicación, pero puede verificarlos todos en ColabNotebook, al que se hace referencia a continuación).
En esta sección, primero realizaremos una clasificación en el conjunto de datos de préstamo predeterminado de Kaggle, luego generaremos mapas de importancia de características.
En primer lugar, importe bibliotecas esenciales como para cálculos matemáticos importamos NumPy, para trazar gráficos importamos seaborn y matplotlib. De sklearn, importamos módulos para el preprocesamiento.
importar pandas como pd importar numpy como np importar seaborn como sns importar matplotlib.pyplot como plt de sklearn.model_selection importar train_test_split de sklearn importar preprocesamiento de sklearn.preprocessing importar StandardScaler de sklearn.metrics importar precision_score
Lea el archivo CSV y guárdelo en el marco de datos de pandas.
datos_sin procesar = pd.read_csv(“/content/train.csv”) datos_sin procesar.head(7)
Hay características categóricas dadas en el conjunto de datos que deberían codificarse. Para “años_en_trabajo_actual” simplemente recortamos la parte del ‘año’ y dejamos solo los años. Pero para otras funciones, codificamos los valores en etiquetas.
datos_sin procesar[“years_in_current_job”] = datos_sin procesar[“years_in_current_job”].replace({‘-1′: -1, ’10+ años’: 10, ‘8 años’: 8, ‘6 años’: 6, ‘7 años’: 7, ‘5 años’: 5, ‘1 año’: 1, ‘< 1 año': 0, '4 años': 4, '3 años': 3, '2 años': 2, '9 años': 9}) data_raw["purpose"] = le.fit_transform(data_raw.purpose.values) data_raw["home_ownership"] = le.fit_transform(data_raw.home_ownership.values) data_raw["term"] = le.fit_transform(data_raw.term.values)
El siguiente paso es llenar los valores de nan. Para ‘months_since_last_delinquent’ llenamos los valores nan con -1 porque tiene casi el 50% de los valores faltantes, por eso no tiene ningún sentido llenarlo con el valor medio. Otras características como ‘ingresos_anuales’, ‘puntaje_de_crédito’ se completan con la media.
datos_sin procesar[‘months_since_last_delinquent’] = datos_sin procesar[‘months_since_last_delinquent’].fillna(-1) datos_sin procesar[‘annual_income’].fillna(int(datos_sin procesar[‘annual_income’].media()), en el lugar=Verdadero) datos_sin procesar[‘credit_score’].fillna(int(datos_sin procesar[‘credit_score’].media()), en el lugar=Verdadero) datos_sin procesar[‘years_in_current_job’].fillna(int(datos_sin procesar[‘years_in_current_job’].media()), en el lugar=Verdadero) datos_sin procesar[‘bankruptcies’].fillna(int(datos_sin procesar[‘bankruptcies’].media()), en el lugar=Verdadero)
Obtener todas las características en el X variable y la columna de destino en el y variable.
X = datos_sin procesar[[‘home_ownership’, ‘annual_income’, ‘years_in_current_job’, ‘tax_liens’,
‘number_of_open_accounts’, ‘years_of_credit_history’,
‘maximum_open_credit’, ‘number_of_credit_problems’,
‘months_since_last_delinquent’, ‘bankruptcies’, ‘purpose’, ‘term’,
‘current_loan_amount’, ‘current_credit_balance’, ‘monthly_debt’,
‘credit_score’]]y = datos_sin procesar[[‘credit_default’]]
Ahora convertiremos las características en forma estándar.
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scale = scaler.fit_transform(X)
Divida el conjunto de datos en proporciones de 80:20. 80 para entrenamiento y 20 para probar el conjunto de datos
#dividir los datos 80 % de entrenamiento y 20 % de prueba X_train, X_test, y_train, y_test = train_test_split(X_scale, y, test_size=0.2, random_state = 4)
A continuación, importaremos e inicializaremos el clasificador de bosque aleatorio y ajustaremos el modelo a los datos de entrenamiento.
from sklearn.ensemble import RandomForestClassifier rfc = RandomForestClassifier(n_estimators=100, random_state=0) rfc.fit(X_train, y_train)
Análisis de la importancia de las características
Ahora que hemos entrenado el clasificador de bosque aleatorio, procederemos a analizar la impotencia característica. Primero, convertiremos la importancia de la característica en la serie pandas y luego imprimiremos el puntaje de importancia de la característica
feature_imp = pd.Series(rfc.feature_importances_, index=X.columns).sort_values(ascending=False) feature_imp
Esta salida muestra que credit_socre y monto_prestamo_actual son las características más importantes al hacer una clasificación de incumplimiento crediticio.
Podemos visualizar estas características con la ayuda de seaborn.
f, ax = plt.subplots(figsize=(15, 7)) ax = sns.barplot(x=feature_imp, y=feature_imp.index) ax.set_title(“Visualizar puntuaciones de características de las características”) ax.set_yticklabels(feature_imp .index) ax.set_xlabel(“Puntuación de importancia de la característica”) ax.set_ylabel(“Características”) plt.show()


Ahora se ve genial, el eje X muestra la puntuación de importancia de la función y el eje Y muestra el nombre de la función. Credit_score tiene la barra más larga que muestra que es la característica más importante en caso de incumplimientos.
Ultimas palabras
En este artículo, vimos cómo la importancia de las funciones es la clave en la tubería de aprendizaje automático y entendimos cómo los bosques aleatorios determinan la importancia de las funciones. Por último, analizamos la importancia de las características mediante la implementación del bosque aleatorio en el conjunto de datos de incumplimiento de préstamos y encontramos las características importantes en el caso de los incumplimientos.