En mi primera competencia de ML y, sinceramente, todavía estoy un poco sorprendido.
He trabajado como científico de datos en FinTech durante seis años. Cuando vi que Spectral Finance estaba ejecutando un desafío de puntaje crediticio para las billeteras Web3, decidí intentarlo a pesar de tener cero experiencia en blockchain.
Aquí estaban mis limitaciones:
- Usé mi computadora, que no tiene GPU
- Solo tuve un fin de semana (~ 10 horas) para trabajar en ello
- Nunca había tocado los datos de Web3 o blockchain antes
- Nunca había construido una red neuronal para la calificación crediticia
El objetivo de la competencia era sencillo: predecir qué billeteras Web3 probablemente iban a predecir los préstamos utilizando su historial de transacciones. Esencialmente, la puntuación de crédito tradicional pero con datos Defi en lugar de los estados bancarios.
Para mi sorpresa, vine segundo ¡Y ganó $ 10k en USD Coin! Desafortunadamente, Spectral Finance ha tomado el sitio de la competencia y la tabla de clasificación, pero aquí hay una captura de pantalla de cuando gané:
Esta experiencia me enseñó que comprender el problema comercial realmente importa. En esta publicación, le mostraré exactamente cómo lo hice con explicaciones detalladas y fragmentos de código Python, para que pueda replicar este enfoque para su próximo proyecto o competencia de aprendizaje automático.
Comenzando: no necesitas hardware costoso
Déjame aclarar esto No necesariamente necesita una configuración costosa de computación en la nube para ganar competiciones de ML (a menos que el conjunto de datos sea demasiado grande para encajar localmente).
El conjunto de datos para esta competencia contenía 77 características y 443k filas, lo que no es pequeño de ninguna manera. Los datos llegaron como un .parquet Archivo que descargué usando DuckDB.
Usé mi computadora portátil personal, un MacBook Pro con 16 GB de RAM y sin GPU. Todo el conjunto de datos se ajusta localmente a mi computadora portátil, aunque debo admitir que el proceso de entrenamiento fue un poco lento.
Conocimiento: Las técnicas de muestreo inteligentes le otorgan el 90% de las ideas sin los altos costos computacionales. Muchas personas se intimidan en grandes conjuntos de datos y piensan que necesitan grandes instancias en la nube. Puede iniciar un proyecto localmente muestreando una parte del conjunto de datos y examinando primero la muestra.
EDA: Conozca sus datos
Aquí es donde mi experiencia en fintech se convirtió en mi superpotencia, y me abordé de esto como cualquier otro problema de riesgo de crédito.
Primera pregunta en la puntuación crediticia: ¿Cuál es la distribución de clase?
Ver la división 62/38 me hizo temblar … 38% es un muy Alta tasa de incumplimiento desde una perspectiva comercial, pero afortunadamente, la competencia no se trataba de fijar el precio de este producto.
A continuación, quería ver qué características realmente importaban:
Aquí es donde me emocioné. Los patrones fueron exactamente lo que esperaría de los datos de crédito:
risk_factorfue el predictor más fuerte y mostró> 0.4 correlación con la variable objetivo (actor de mayor riesgo = más probable que no sea por defecto)time_since_last_liquidatedmostró una fuerte correlación negativa, por lo que cuanto más recientemente se liquidaron, fueron más riesgosos. Esto se alinea como se esperaba, ya que la alta velocidad suele ser una señal de alto riesgo (liquidación reciente = riesgo)liquidation_count_sum_ethsugirió que los prestatarios con mayores recuentos de liquidación en ETH eran banderas de riesgo (más liquidaciones = comportamiento más riesgoso)
Conocimiento: Mirar la correlación de Pearson es una forma simple pero intuitiva de comprender las relaciones lineales entre las características y la variable objetivo. Es una excelente manera de obtener intuición sobre qué características deben y no deben incluirse en su modelo final.
Selección de características: menos es más
Aquí hay algo que siempre desconcierta a los ejecutivos cuando les explico esto:
Más funciones no siempre significa un mejor rendimiento.
De hecho, demasiadas características generalmente significan un peor rendimiento y un entrenamiento más lento, porque las características adicionales agregan ruido. Cada característica irrelevante empeora un poco su modelo para encontrar los patrones reales.
Entonces, la selección de características es un paso crucial que nunca salto. Utilicé la eliminación de características recursivas para encontrar el número óptimo de características. Déjame guiarte a través de mi proceso exacto:
El punto dulce era 34 características. Después de este punto, el rendimiento del modelo medido por la puntuación AUC no mejoró con características adicionales. Entonces, terminé usando menos de la mitad de las características dadas para entrenar mi modelo, pasando de 77 características a 34.
Conocimiento: Esta reducción en las características eliminó el ruido al tiempo que preserva la señal de las características importantes, lo que llevó a un modelo que fue más rápido para entrenar y más predictivo.
Construyendo la red neuronal: arquitectura simple pero poderosa
Antes de definir la arquitectura del modelo, tuve que definir el conjunto de datos correctamente:
- Dividirse en conjuntos de entrenamiento y validación (para verificar los resultados después del entrenamiento del modelo)
- Características de escala Porque las redes neuronales son muy sensibles a los valores atípicos
- Convertir conjuntos de datos a tensores de pytorch Para un cálculo eficiente
Aquí está mi tubería de preprocesamiento de datos exactos:
Ahora viene la parte divertida: construir el modelo de red neuronal real.
Contexto importante: Spectral Finance (el organizador de la competencia) despliegues de modelo limitado solo en redes neuronales y regresión logística debido a su sistema de prueba de conocimiento cero.
Las pruebas de ZK requieren circuitos matemáticos que puedan verificar criptográficamente los cálculos sin revelar datos subyacentes, y las redes neuronales y la regresión logística pueden convertirse de manera eficiente en circuitos ZK.
Como era la primera vez que construyendo una red neuronal para la puntuación crediticia, quería mantener las cosas simples pero efectivas. Aquí está mi arquitectura modelo:
En detalle, caminemos por mi elección de arquitectura:
- 5 Capas ocultas: Lo suficientemente profundo como para capturar patrones complejos, lo suficientemente poco profundo como para evitar el sobreajuste
- 64 neuronas por capa: Buen equilibrio entre la capacidad y la eficiencia computacional
- Relu Activación: Elección estándar para capas ocultas, evita que los gradientes de desaparición
- Abandonado (0.2): Previene el sobreajuste al azar al azar el 20% de las neuronas durante el entrenamiento
- Salida sigmoide: Ideal para la clasificación binaria, las probabilidades de salida entre 0 y 1
Entrenamiento del modelo: donde sucede la magia
Ahora para el bucle de entrenamiento que inicia el proceso de aprendizaje del modelo:
Aquí hay algunos detalles sobre el proceso de capacitación del modelo:
- Parada temprana: Evita el sobreajuste al detenerse cuando el rendimiento de la validación deja de mejorar
- SGD con impulso: Opción optimizador simple pero efectiva
- Seguimiento de validación: Esencial para monitorear el rendimiento real, no solo la pérdida de capacitación
Las curvas de entrenamiento mostraron mejoras constantes sin sobreajustar durante el proceso de entrenamiento. Esto es exactamente lo que quería ver.
El arma secreta: optimización umbral
Aquí es donde probablemente superé a otros con modelos más complicados en la competencia: apuesto a La mayoría de las personas presentaron predicciones con el umbral predeterminado de 0.5.
Pero debido al desequilibrio de la clase (~ 38% de los préstamos incumplidos), sabía que el umbral predeterminado sería subóptimo. Entonces, utilicé el análisis de recolección de precisión para elegir un mejor corte.
Terminé maximizando la puntuación F1, que es la media armónica entre la precisión y el recuerdo. El umbral óptimo basado en la puntuación F1 más alta fue de 0.35 en lugar de 0.5. Este solo cambio mejoró mi puntaje de competencia en varios puntos porcentuales, probablemente la diferencia entre colocarse y ganar.
Conocimiento: En el mundo real, los diferentes tipos de errores tienen costos diferentes. Faltar un valor predeterminado pierde dinero, lo que rechazará a un buen cliente solo pierde sus ganancias potenciales. El umbral debe reflejar esta realidad y no debe establecerse arbitrariamente en 0.5.
Conclusión
Esta competencia reforzó algo que he conocido por un tiempo:
El éxito en el aprendizaje automático no se trata de tener las herramientas más elegantes o los algoritmos más complejos.
Se trata de comprender su problema, aplicar fundamentos sólidos y centrarse en lo que realmente mueve la aguja.
No necesita un doctorado para ser científico de datos o ganar una competencia de ML.
No necesita implementar los últimos trabajos de investigación.
Tampoco necesita recursos de nube costosos.
Lo que sí necesita es el conocimiento del dominio, los fundamentos sólidos, la atención a los detalles que otros pueden pasar por alto (como la optimización de umbral).
¿Quieres construir tus habilidades de IA?
👉🏻 Corro el AI Weekenderque presenta proyectos divertidos de IA de fin de semana y Consejos rápidos y prácticos para ayudarlo a construir con IA.