modelo_TF-IDF_CNB / README.md
Andersoncrs's picture
Update README.md
c8bb941 verified
|
Raw
History Blame Contribute Delete
7.09 kB
---
language: en
library_name: scikit-learn
license: mit
pipeline_tag: text-classification
tags:
- text-classification
- tf-idf
- complement-naive-bayes
- grid-search
model_format: skops
dataset_name: ucirvine/sms_spam
datasets:
- ucirvine/sms_spam
---
# **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) = \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)) \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:
$$IDF_{\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\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](matriz_confusion_final.png)
# **Contacto**
Si tienes alguna pregunta, sugerencia o deseas conectar conmigo, no dudes en escribirme o visitar mis perfiles profesionales:
* 馃捈 **LinkedIn:** [Anderson Rodr铆guez](https://www.linkedin.com/in/andersoncrs)
* 馃悪 **GitHub:** [Andersoncrs](https://github.com/Andersoncrs)
* 馃摟 **Correo Electr贸nico:** andersoncamilo.rodriguez.s@gmail.com