Aprendizaje automático para predicción de valor de contratos, agrupamiento de palabras clave y detección de anomalías.
Key Features • How To Use • Credits • License
Este proyecto de machine learning tiene como objetivo analizar a detalle la información desplegada por la página oficial de datos abiertos del gobierno de Colombia y del Sistema Electrónico para la Contratación Pública (SECOP), todo con la finalidad de encontrar posibles anomalías, agrupar texto clave del objetivo de los contratos y predecir los gastos.
El conjunto de datos es tomado de SECOP Integrado | Gastos Gubernamentales. A continuación mostramos las características clave del proyecto:
-
El conjunto de datos consta de 1996395 contratos (filas) por 21 columnas. Las columnas constan de la siguiente información:
- Nivel Entidad
- Nombre de la Entidad
- NIT de la Entidad
- Estado del Proceso
- Modalidad de Contratación
- Objeto a Contratar
- Tipo de Contrato
- Fecha de Firma del Contrato
- ID Contrato
- ID Proceso
- Valor Contrato
- Nom Raz Social Contratista
- URL Contrato
- Departamento Entidad
- Municipio Entidad
- Objeto del Proceso
- Fecha Inicio Ejecucion
- Fecha Fin Ejecucion
- Tipo Contrato (Es una característica duplicada, pero existe)
- Origen
- Documento Proveedor
-
Tras limpiar datos duplicados, no relevantes o mal insertados, redujimos el tamaño del conjunto de datos en un 85%.
-
La predicción de gastos utiliza un modelo de regresón con bosques aleatorios, cuyo input es tomado gracias a
one-hot-encoding
de las siguientes características- Nombre de la Entidad
- Estado del Proceso
- Objeto a Contratar
- Municipio Entidad
- Tipo Contrato
-
Usamos módulos de Scikit-Learn como:
sklearn.ensemble.RandomForestRegressor
: Predictor de valor de contrato.sklearn.metrics.r2_score
: Métrica para evaluar el desempeño del predictor.
-
También se usaron técnicas de procesamiento de lenguaje natural con GenSim y NLTK. Obteniendo palabras clave como
- mantenimiento
- prestacion
- municipio
- profesionales
- suministro
-
Finalmente, tomamos los contratos que se salían del 95% de los datos asociados a una distribución normal. Obteniendo 55 contratos anómalos (No por ello producto de acciones fraudulentas):
Para ejecutar de manera local este proyecto, siga estos pasos:
# Clone el repositorio
$ git clone https://github.com/santiagoahl/analisis-contratos-gov.git
# Entre a la carpeta del repositorio
$ cd analisis-contratos-gov
Este proyecto hace uso de las siguientes librerías y conjuntos de datos:
MIT
Web Site santiagoal.super.site · GitHub @santiagoahl · Twitter @sahumadaloz