Detección de billetes falsos mediante técnicas de Machine Learning
- 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”).

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).

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:
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).
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.
Fotografías de los billetes: Los billetes son fotografiados con equipos de END.
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.
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.
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.

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.

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

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).

¿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).

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.

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.

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).

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).

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).

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).

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.

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