top of page
Search

Detección de billetes falsos mediante técnicas de Machine Learning

  • Writer: Antonio Romero Camacho
    Antonio Romero Camacho
  • Aug 11, 2020
  • 7 min read

Según la nota de prensa emitada por el Banco Central Europeo a comienzos de 2020, durante la segunda mitad de 2019 se eliminaron de la circulación 308,000 billetes de euro falsificados. De ellos, el 70% se corresponden con denominaciones de 20 y 50€. El número de billetes extraidos del sistema muestra un aumento del 22.7% cuando comparamos las cifras actuales con el número de billetes retirados de la circulación en la primera mitad de 2019 y un aumento del 17.6% con respecto a la segunda mitad de 2018.


El Banco Central Europeo reconoce que los billetes eliminados de la circulación son falsificaciones de baja calidad, pues sus parámetros de seguridad son meras imitaciones. Pero no siempre es así, y en algunos casos las falsificaciones no son fácilmente identificables mediante el método recomendado por BCE y los bancos centrales nacionales del “Feel, look and tilt” (“toque, mire y gire”).


Figura 1. ¿Billetes genuinos o falsos?

Es por esto que surge la necesidad de desarrollar nuevas tecnologías de Ensayos No Destructivos (END) que proporcionen imágenes o señales para ser procesadas por algoritmos avanzados, capaces de extraer información valiosa para realizar detección automática de falsificaciones.


En este post, presento los resultados de aplicar técnicas de Aprendizaje Supervisado para resolver el problema de clasificación automática de billetes. Los datos empleados pertenecen a un dataset de libre acceso descargado del repositorio Machine Learning Repository — UCI. El objetivo es desarrollar un modelo de clasificación capaz de etiquetar una serie de billetes como genuinos o falsos en función de lo que haya aprendido durante el periodo de entrenamiento del modelo.


Información sobre el dataset data_banknote_authentication


El dataset cuenta con 1372 registros de los cuales 762 están etiquetados como clase 0 (billetes falsos) y 610 como clase 1 (billetes genuinos). Al leer el dataset, generamos un dataFrame en pandas que muestra las cinco variables que tienen los datos: Variance (Varianza), Skewness (coeficiente de asimetría), Kurtosis (coeficiente de apuntamiento), Entropy (Entropía) y Class (Clase/Etiqueta).


Figura 2. Primeros registros y su variables

Estas características fueron extraídas de imágenes tomadas mediante una cámara especial, utilizada para inspeccionar impresiones, sobre un conjunto de billetes verdaderos y falsos. Las dimensiones de las imágenes finales son de 400 x 400 píxeles. Debido a las lentes y la distancia al objeto investigado, las imágenes se usaron en escala de grises con una resolución de 660 dpi. Para la extracción de características de las imágenes se emplearon Wavelets.


Esquema general de la metodología


En esta sección se describe el ciclo completo (Figura 3) necesario para que los inspectores a cargo de este análisis obtengan una clasificación de sus muestras de forma automática:

  1. Selección de un set de billetes que conformarán el subconjunto de entrenamiento: este set incluirá billetes verdaderos y falsos, que habrán sido etiquetados por las autoridades pertinentes (por ejemplo, Interpol o, a nivel nacional, la Brigada de Investigación del Banco de España en la lucha contra la falsificación de billetes y monedas).

  2. Selección de un set de billetes que conformarán el subconjunto de test: estos billetes deberán ser muestras independientes de las seleccionadas en el punto anterior.

  3. Fotografías de los billetes: Los billetes son fotografiados con equipos de END.

  4. Fase de Postprocesado de imágenes: mediante algoritmos de procesado de señal (en este caso Wavelets), se extraen las características más relevantes de la señal para el tipo de análisis que se quiere realizar. Las características elegidas, así como el número de ellas dependerán del tipo de entrada que se aporte a estos algoritmos (fotos, señales de sensores, ...) y del criterio del ingeniero. En esta fase, también se eliminaran los valores nulos así como cualquier registro repetido.

  5. Entrenamiento de modelos de clasificación: En esta fase se usarán como entrada los datos de entrenamiento. Se evaluarán distintos métodos de clasificación así como distintas configuraciones de los mismos para seleccionar el mejor modelo y los mejores parámetros para clasificar las muestras en cuestión. Como salida de esta fase se obtiene el modelo ya entrenado.

  6. Evaluación sobre el conjunto de test: el modelo entrenado en la quinta etapa de este proceso evalúa los datos del conjunto de test sin saber a qué clase pertenecen. El modelo proporciona sus predicciones, las cuales son comparadas con los valores reales para determinar la precisión del modelo. 

Figura 3. Esquema de la metodología de inspección y análisis de datos

Preparación y limpieza de datos


En primer lugar revisamos si hay valores que no estén bien informados. Ninguno de los registros contiene valores nulos como podemos ver en la Figura 4.

Figura 4. Registros bien informados

En segundo lugar, comprobamos si hay registros duplicados y los eliminamos pues no van a aportar ninguna información adicional.

Figura 5. Búsqueda y eliminación de registros duplicados

Análisis Descriptivo


Tras comprobar que los registros están bien informados y eliminar los que estaban duplicados, echamos un vistazo al número de registros que finalmente caen en cada una de las clases. De acuerdo con el diagrama de barras mostrado en la Figura 6, hay un mayor número de registros que pertenecen a la clase 0. En realidad, 738 registros pertenecen a la clase 0 (54.75% de los datos) mientras que 610 registros están etiquetados como clase 1 (45.25%). Por ello, el gráfico muestra un ligero desequilibrio de clases (datos ligeramente desbalanceados).

Figura 6. Número de registros por clase (azul: Falso, naranja: Auténtico)

¿Por qué hay que darle importancia al "balanceo de clases"?. Hay clasificadores de machine learning que no lidian muy bien con datasets de entrenamiento desbalanceados ya que son sensibles a las proporciones de las diferentes clases. Como consecuencia, estos algoritmos tenderán a favorecer la clase con la mayor proporción de observaciones , lo cual puede derivar en métricas de exactitud sesgadas.


En la Figura 7se muestra un gráfico de correlación entre las variables extraídas de las imágenes de los billetes. Según el gráfico, las variables más relacionadas son la Kurtosis y el Skewness con un coeficiente de correlación de -0.79 (a medida que aumenta una variable disminuye la otra). 

Figura 7. Gráfico de Correlación (librería seaborn de Python)

Separación de los datos en conjuntos de Training y Test


Puesto que sólo contamos con este único conjunto de datos,  necesitamos dividirlo en dos subconjuntos: a) Subconjunto de Training (training y validación) y b) Subconjunto de Test. Los porcentajes de datos elegidos para las particiones han sido del 60% y el 40% para los conjuntos de training y test respectivamente.


Figura 8. Separación en subconjuntos de training (60%) y test (40%)

Entrenamiento del modelo de Machine Learning


Durante esta fase de búsqueda del mejor clasificador, he probado con los siguientes clasificadores de la librería ScikitLearn de Python:

  • Árboles de decisión

  • K-Nearest Neighbour

  • Random Forest

  • Gaussian Naïve Bayes

  • Support Vector Machine

  • Multi Layer Perceptron (MLP)

Todos ellos han sido entrenados y validados con el subconjunto de training. Puesto que las clases estaban ligeramente desbalanceadas se ha empleado como métrica el área bajo la curva ROC (AUC ROC). Las métricas obtenidas en esta fase para cada uno de los clasificadores que he mencionada se muestran en la Figura 9.


Figura 9. Ranking de Clasificadores, métrica: AUC ROC

En base a la figura anterior, los clasificadores que obtienen mejores resultados durante la etapa de validación son K-Nearest Neighbour, Support Vector Machine y MLP. A continuación adjunto el código utilizado para entrenar nuestro modelo de machine learning que incluye validación cruzada (k-folds de 10 splits).

Figura 10. Pipeline de entrenamiento y selección de hiperparámetros (K-Nearest Neighbour)

En la siguiente sección comprobaremos cuál de los tres clasificadores que acabamos de preselecciones proporciona los mejores resultados sobre el subconjunto de test.


Fase de Predicción (Datos del subconjunto Test)


Esta es la "prueba de fuego" para nuestro modelo puesto que es la primera vez que el modelo se enfrenta al subconjunto de datos de test. Dentro de este subconjunto formado por 540 observaciones, 294 se corresponden con registros correspondientes a billetes falsos y 246 a registros de billetes genuinos.


Comenzamos analizando el resultado de aplicar el modelo generado con el clasificador K-Nearest Neigbour al subconjunto de test. La métrica AUC ROC indica que el rendimiento del modelo es del 99.31%. Si analizamos la matriz de confusión, la diagonal principal muestra el número de aciertos cada una de las clases:

  • 290 registros de los 294 denominados como billetes falsos han sido predichos como billetes falsos (clase 0).

  • 246 registros de los 246 denominados como  billetes auténticos han sido predichos como billetes auténticos (clase 1).

  • 4 registros de los 294 denominados como billetes falsos han sido mal clasificados como billetes auténticos (4 false positives).

  • 0 registros de los 246 denominados como billetes auténticos han sido mal clasificados (no hay false negatives). 

Figura 11. Métricas de predicción en el subconjunto de test (Modelo K-Nearest Neighbour)

Continuamos con los resultados del clasificador Support Vector Machine. El rendimiento de nuestro modelo de clasificación ha mejorado ligeramente, alcanzando un valor del 99.66%. LAs conclusiones que extraemos de la matriz de confusión en este caso son:

  • 292 registros de los 294 denominados como billetes falsos han sido predichos como billetes falsos (clase 0).

  • 246 registros de los 246 denominados como  billetes auténticos han sido predichos como billetes auténticos (clase 1).

  • 2 registros de los 294 denominados como billetes falsos han sido mal clasificados como billetes auténticos (2 false positives).

  • 0 registros de los 246 denominados como billetes auténticos han sido mal clasificados (no hay false negatives). 

Figura 12. Métricas de predicción en el subconjunto de test (Modelo SVM)

Por últimos comprobamos los resultados con el modelo MLP. El rendimiento de este tercer modelo es perfecto pues ha alcanzado valores del 100%. Esto quiere decir que todos los registros del subconjunto de test han sido correctamente clasificados en sus clases. En este caso la matriz de confusión es una matriz diagonal como puede apreciarse en la Figura 13:

  • 294 registros de los 294 denominados como billetes falsos han sido predichos como billetes falsos (clase 0).

  • 246 registros de los 246 denominados como  billetes auténticos han sido predichos como billetes auténticos (clase 1).

  • 0 registros de los 294 denominados como billetes falsos han sido mal clasificados como billetes auténticos (no hay false positives).

  • 0 registros de los 246 denominados como billetes auténticos han sido mal clasificados (no hay false negatives). 

Figura 13. Métricas de predicción en el subconjunto de test (Modelo MLP)

Por lo tanto, el modelo Multi Layer Perceptron (MLP) sería el que enviaríamos a producción por ser capaz de clasificar sin problemas el 100% de los billetes usados durante la fase de test. Para finalizar, muestro el dataFrame de test incluyendo la columna de predicciones llevadas a cabo por el modelo.

Figura 14. DataFrame comparativo entre la Clase Real y la Predicción realizada por el Modelo MLP

Conclusiones

  • En este post he utilizado técnicas de Machine Learning de Aprendizaje Supervisado para clasificar billetes en base a ciertas características extraídas de imágenes de los mismos.

  • El objetivo de este post es resolver un problema de clasificación binario sencillo (dos clases: billetes verdaderos y falsos).

  • La metodología aquí planteada se ha aplicado a un dataset de libre acceso que consta de1378 registros.

  • De todos los modelos de clasificación utilizados, el que ha reportado mejores resultados al aplicarlo sobre el subconjunto de test es el modelo Multi Layer Perceptron (MLP).

  • El modelo MLP ha realizado el 100% de las predicciones correctamente sin cometer errores.

  • Este modelo de clasificación podría ser introducido en cualquier máquina que acepte billetes (vending machines, note sorters, ...) para detectar falsificaciones.

Agradecimientos


Agradezco al Machine Learning Repository - UCI y al propietario de los datos (Volker Lohweg, University of Applied Science, Ostwesfales-Lippe) que hayan puesto a disposición de la comunidad esta bases de datos.

 
 
 

Opmerkingen


bottom of page