Modelo de Clasificación de Spam usando TF-IDF y Complement Naive Bayes

Este modelo ha sido entrenado para clasificar mensajes de texto, determinando si son válidos (ham) o si corresponden a mensajes de SPAM, basándose únicamente en el contenido del mensaje.

Conjunto de Datos

El conjunto de datos utilizado para llevar a cabo el entrenamiento del modelo ha sido ucirvine/sms_spam, el cual contiene mensajes SMS reales en el idioma inglés.

Arquitectura del Modelo

El modelo está compuesto por dos pasos principales:

  • TF-IDF (Term Frequency-Inverse Document Frequency): Primero se tokeniza cada palabra de cada mensaje SMS para, posteriormente, vectorizarla de acuerdo con el método TF-IDF. Este método consiste en asignar una puntuación a las palabras presentes en un texto con base en su frecuencia (número de veces que aparecen) dentro de un documento individual y dentro del corpus completo.

    • La Frecuencia del Término (TF) está dada por la siguiente fórmula: TF(t,d)=f(t,d)tdf(t,d)TF(t, d) = \frac{f(t, d)}{\sum_{t' \in d} f(t', d)} Dado que en el caso de este modelo hemos utilizado la instrucción tfidf_sublinear_tf=True, se atenúa la influencia de la aparición desmedida de determinados términos mediante el siguiente ajuste logarítmico:
      TF(t,d)=1+log(f(t,d))si f(t,d)>0TF(t, d) = 1 + \log(f(t, d)) \quad \text{si } f(t, d) > 0
    • Respecto a la Frecuencia Inversa del Documento (IDF), se aplica la fórmula estándar implementada en Scikit-Learn:
      IDFScikit-Learn(t)=log(1+N1+df(t))+1IDF_{\text{Scikit-Learn}}(t) = \log\left(\frac{1 + N}{1 + df(t)}\right) + 1

    Finalmente, obtenemos la puntuación definitiva multiplicando ambos términos:

TF-IDF(t,d)=TF(t,d)×IDF(t)TF\text{-}IDF(t, d) = TF(t, d) \times IDF(t) Adicionalmente, el método TF-IDF hace uso de word\_tokenize de la librería NLTK para tokenizar los mensajes SMS mediante reglas estándar de la lingüística, separando contracciones del inglés de manera inteligente y aislando los signos de puntuación de las palabras, siendo este uno de los enfoques más recomendados para nuestro caso de estudio.

  • Complement Naive Bayes (CNB): Se ha seleccionado esta versión de Naive Bayes ya que es una extensión de Multinomial Naive Bayes diseñada específicamente para corregir los sesgos generados por conjuntos de datos con clases desbalanceadas. Consiste en hallar la probabilidad de que aparezca un término en el complemento de la clase objetivo. Resulta ideal para nuestro escenario, ya que la gran mayoría de los mensajes del conjunto de datos son válidos (ham), y tan solo una pequeña minoría ha sido etiquetada como SPAM.

Hiperparámetros del Modelo

A continuación, se detallan los hiperparámetros utilizados en cada uno de los pasos que conforman el pipeline del modelo:

Hiperparámetro Valor
memory None
steps [('tfidf', TfidfVectorizer(binary=True, max_df=0.9, ngram_range=(1, 2), sublinear_tf=True,tokenizer=<function word_tokenize at 0x75236ee85170>)), ('cnb', ComplementNB(alpha=0.5))]
transform_input None
verbose False
tfidf TfidfVectorizer(binary=True, max_df=0.9, ngram_range=(1, 2), sublinear_tf=True,tokenizer=<function word_tokenize at 0x75236ee85170>)
cnb ComplementNB(alpha=0.5)
tfidf__analyzer word
tfidf__binary True
tfidf__decode_error strict
tfidf__dtype <class 'numpy.float64'>
tfidf__encoding utf-8
tfidf__input content
tfidf__lowercase True
tfidf__max_df 0.9
tfidf__max_features None
tfidf__min_df 1
tfidf__ngram_range (1, 2)
tfidf__norm l2
tfidf__preprocessor None
tfidf__smooth_idf True
tfidf__stop_words None
tfidf__strip_accents None
tfidf__sublinear_tf True
tfidf__token_pattern (?u)\b\w\w+\b
tfidf__tokenizer <function word_tokenize at 0x75236ee85170>
tfidf__use_idf True
tfidf__vocabulary None
cnb__alpha 0.5
cnb__class_prior None
cnb__fit_prior True
cnb__force_alpha True
cnb__norm False

Selección del Modelo

El modelo final fue escogido como el mejor de entre diversas configuraciones evaluadas, aplicando variaciones tanto en la matriz de extracción de características TF-IDF como en los hiperparámetros del clasificador Complement Naive Bayes. Para encontrar este conjunto óptimo, se utilizó una búsqueda en rejilla (Grid Search), con la finalidad de identificar la combinación precisa que maximizara el rendimiento de nuestra métrica de evaluación de acuerdo con la rejilla de parámetros definida.

Cabe aclarar un aspecto fundamental en nuestra estrategia de selección: la evaluación y elección del modelo definitivo se rigió bajo la regla de negocio de minimizar los falsos positivos a cambio de permitir un ligero incremento en los falsos negativos. Tomamos esta decisión considerando que, en un escenario de producción real, etiquetar erróneamente un mensaje válido (ham) como SPAM genera un impacto negativo severo debido al riesgo inminente de que el usuario pierda información crítica. Por el contrario, consideramos que el impacto de que unos pocos mensajes de SPAM logren filtrarse a la bandeja de entrada es considerablemente menor; si bien representa una ligera molestia para el usuario, no pone en peligro la pérdida de datos importantes.

Limitaciones del Modelo

Al utilizar este modelo en un escenario real, es fundamental tener en cuenta la siguiente limitación clave:

  • Restricción de Idioma: El modelo ha sido entrenado y validado de manera exclusiva utilizando el conjunto de datos ucirvine/sms\_spam, el cual está compuesto en su totalidad por mensajes en el idioma inglés. Adicionalmente, tanto la etapa de extracción de características (TF-IDF) como las reglas gramaticales empleadas para la tokenización con NLTK han sido configuradas bajo los estándares lingüísticos del inglés. Por lo tanto, el modelo no es apto para analizar o clasificar mensajes en español u otros idiomas, ya que carece del vocabulario y las estructuras gramaticales necesarias para realizar una predicción precisa.

Evaluación del Modelo

A continuación, se adjunta la matriz de confusión obtenida al evaluar el modelo sobre el conjunto de prueba (test set):

Matriz de Confusión de la Prueba

Contacto

Si tienes alguna pregunta, sugerencia o deseas conectar conmigo, no dudes en escribirme o visitar mis perfiles profesionales:

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train Andersoncrs/modelo_TF-IDF_CNB

Space using Andersoncrs/modelo_TF-IDF_CNB 1