Update README.md
Browse files
README.md
CHANGED
|
@@ -10,6 +10,8 @@ tags:
|
|
| 10 |
- grid-search
|
| 11 |
model_format: skops
|
| 12 |
dataset_name: ucirvine/sms_spam
|
|
|
|
|
|
|
| 13 |
---
|
| 14 |
# **Modelo de Clasificación de Spam usando TF-IDF y Complement Naive Bayes**
|
| 15 |
|
|
@@ -17,7 +19,7 @@ Este modelo ha sido entrenado para clasificar mensajes de texto, determinando si
|
|
| 17 |
|
| 18 |
# **Conjunto de Datos**
|
| 19 |
|
| 20 |
-
El conjunto de datos utilizado para llevar a cabo el entrenamiento del modelo ha sido ucirvine/
|
| 21 |
|
| 22 |
# **Arquitectura del Modelo**
|
| 23 |
|
|
@@ -26,15 +28,14 @@ El modelo está compuesto por dos pasos principales:
|
|
| 26 |
* **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.
|
| 27 |
* La Frecuencia del Término (TF) está dada por la siguiente fórmula:
|
| 28 |
$$TF(t, d) = \frac{f(t, d)}{\sum_{t' \in d} f(t', d)}$$
|
| 29 |
-
Dado que en el caso de este modelo hemos utilizado la instrucción
|
| 30 |
$$TF(t, d) = 1 + \log(f(t, d)) \quad \text{si } f(t, d) > 0$$
|
| 31 |
* Respecto a la Frecuencia Inversa del Documento (IDF), se aplica la fórmula estándar implementada en Scikit-Learn:
|
| 32 |
$$IDF_{\text{Scikit-Learn}}(t) = \log\left(\frac{1 + N}{1 + df(t)}\right) + 1$$
|
| 33 |
|
| 34 |
-
Finalmente, obtenemos la puntuación definitiva multiplicando ambos términos:
|
| 35 |
$$TF\text{-}IDF(t, d) = TF(t, d) \times IDF(t)$$
|
| 36 |
-
|
| 37 |
-
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.
|
| 38 |
|
| 39 |
* **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*.
|
| 40 |
|
|
@@ -101,5 +102,4 @@ Si tienes alguna pregunta, sugerencia o deseas conectar conmigo, no dudes en esc
|
|
| 101 |
|
| 102 |
* 💼 **LinkedIn:** [Anderson Rodríguez](https://www.linkedin.com/in/andersoncrs)
|
| 103 |
* 🐙 **GitHub:** [Andersoncrs](https://github.com/Andersoncrs)
|
| 104 |
-
* 📧 **Correo Electrónico:** andersoncamilo.rodriguez.s@gmail.com
|
| 105 |
-
|
|
|
|
| 10 |
- grid-search
|
| 11 |
model_format: skops
|
| 12 |
dataset_name: ucirvine/sms_spam
|
| 13 |
+
datasets:
|
| 14 |
+
- ucirvine/sms_spam
|
| 15 |
---
|
| 16 |
# **Modelo de Clasificación de Spam usando TF-IDF y Complement Naive Bayes**
|
| 17 |
|
|
|
|
| 19 |
|
| 20 |
# **Conjunto de Datos**
|
| 21 |
|
| 22 |
+
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.
|
| 23 |
|
| 24 |
# **Arquitectura del Modelo**
|
| 25 |
|
|
|
|
| 28 |
* **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.
|
| 29 |
* La Frecuencia del Término (TF) está dada por la siguiente fórmula:
|
| 30 |
$$TF(t, d) = \frac{f(t, d)}{\sum_{t' \in d} f(t', d)}$$
|
| 31 |
+
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:
|
| 32 |
$$TF(t, d) = 1 + \log(f(t, d)) \quad \text{si } f(t, d) > 0$$
|
| 33 |
* Respecto a la Frecuencia Inversa del Documento (IDF), se aplica la fórmula estándar implementada en Scikit-Learn:
|
| 34 |
$$IDF_{\text{Scikit-Learn}}(t) = \log\left(\frac{1 + N}{1 + df(t)}\right) + 1$$
|
| 35 |
|
| 36 |
+
Finalmente, obtenemos la puntuación definitiva multiplicando ambos términos:
|
| 37 |
$$TF\text{-}IDF(t, d) = TF(t, d) \times IDF(t)$$
|
| 38 |
+
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.
|
|
|
|
| 39 |
|
| 40 |
* **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*.
|
| 41 |
|
|
|
|
| 102 |
|
| 103 |
* 💼 **LinkedIn:** [Anderson Rodríguez](https://www.linkedin.com/in/andersoncrs)
|
| 104 |
* 🐙 **GitHub:** [Andersoncrs](https://github.com/Andersoncrs)
|
| 105 |
+
* 📧 **Correo Electrónico:** andersoncamilo.rodriguez.s@gmail.com
|
|
|