4.3 Case studies
4.3.3 Distribution-free post-processing for 2-metre temperature fore-
Los parámetros que manejaremos en nuestro modelo FastText son los siguientes:
Feature Size: Dimensión del vector de la palabra.
Contextual Window: Tamaño de la ventana contextual, máxima distancia entre la palabra predecida y la actual en una sentencia.
Min word count: Ignora palabras con una frecuencia menor a este numero.
Sample: Es el límite para configurar que palabras con alta frecuencia estan aleatoriamente escogidas, normalmente un buen valor está entre (0, 1e-5).
Sg: Elección de algoritmo, Skipgram=1 o CBOW=0.
Iterations: Iteraciones de entrenamiento.
Workers: Número de trabajadores, funciona mejor con el numero de núcleos de la cpu para acelerar el proceso de entrenamiento.
4.5. Modelado y evaluación
El modelo que de FastText que hemos decidido entrenar tiene los siguientes paráme- tros:
Feature Size: 150
Contextual Window: 5
Min word count: 2
Sample: 0.001
Sg: 0
Iterations: 75
Workers: 4
Hemos decidido crear unos vectores similares a los otros modelo con un entrenamien- to parecido. Al poner el parámetro Sg= 0, estamos escogiendo el algoritmo CBOW, ya que como FastText para crear los vectores va letra a letra, creemos que es la mejor manera de entrenamiento. Representaremos palabras cuya frecuencia sea mayor de 2 con min count=2. La distancia contextual es la estándar.
En este modelo también tenemos los mismos problemas relacionados con la creación de los vectores de los documentos, ya que el modelo los crea a nivel de palabra. Sin embargo, no tenemos el asunto de las palabras OOV, ya que el modelo FastText crea los vectores a partir de los n-gramas de las letras. Se ha decidido, en consecuencia, obtener los vectores de los documentos realizando la media directa de los vectores de las palabras.
4.5.
Modelado y evaluación
Por último, en cada caso después de haber creado los modelos, preparamos los mis- mos conjuntos de testeo y entrenamiento de las representaciones de los informes para alimentar a los algoritmos obteniendo en cada caso los vectores de los documentos y sus respectivas categorías. Iremos viendo la implementación de cada algoritmo, los parámetros elegidos en cada caso y por qué y cómo hemos obtenido los resultados en cada caso. Su discusión la realizaremos en el siguiente capítulo.
4.5.1. Algoritmos base
4.5.1.1. Logistic Regression
Los parámetros que manejaremos del algoritmo son los siguientes:
n jobs: Número de trabajadores, funciona mejor con el numero de núcleos de la cpu para acelerar el proceso de entrenamiento.
C: Inverso de la fuerza de regularización. Debe ser un número real positivo. Al igual que en las SVM, los valores más pequeños especifican una regularización más fuerte.
Cuyos valores propuestos han sido:
Diseño experimental
n jobs: 4
C: 0.00001
Los motivos de elección de estos valores han sido para tener el mismo número de trabajadores que el número de núcleos de nuestra CPU y al poner un valor C pequeño, tendremos una regularización más fuerte. El resto de parámetros son estándar.
4.5.1.2. Naive Bayes
En el caso de Naive Bayes hemos decidido entrenarlo con los parámetros por defecto ya que dichos parámetros requieren el conocimiento de las probabilidades de las variables y dicha información no la hemos calculado previamente.
4.5.1.3. Nearest Centroid
Los parámetros que manejaremos del algoritmo son los siguientes:
metric: Métrica empleada para el cálculo de los centroides, puede ser euclidia- na, distancia manhattan...
Cuyos valores propuestos han sido:
metric: euclidean
La métrica euclidiana nos pareció la más equilibrada entre las opciones posibles de entrenamiento del algoritmo.
4.5.1.4. KNN
Los parámetros que manejaremos del algoritmo son los siguientes:
n neighbours: Número de vecinos que se aplcarán en el algoritmo.
n jobs: Número de trabajadores, funciona mejor con el numero de núcleos de la cpu para acelerar el proceso de entrenamiento.
Cuyos valores propuestos han sido:
n neighbours: 10
n jobs: 4
El número de trabajadores se han ajustado al número de núcleos de nuestra CPU y, debido a que tendremos un conjunto entrenamiento relativamente extenso con casi cien instancias de cada clase, decidimos tener 10 vecinos en el algoritmo. El resto de parámetros son estándar.
4.5.1.5. SVM
4.5. Modelado y evaluación
kernel: Especifica el tipo de núcleo que se utilizará en el algoritmo. Debe ser linear,poly, rbf, sigmoid,precomputed ocallable. Si no se proporciona ninguno, se usará rbf. Si se proporciona un callable, se usa para calcular previamente la matriz del núcleo a partir de las matrices de datos; esa matriz debe ser una matriz de forma (n samples, n samples).
probability: Si se desea habilitar estimaciones de probabilidad. Obligatorio si se va a llamar a la funciónfit del modelo.
En el caso de las SVM, hemos decidido probar tres configuraciones diferentes para crear tres modelos distintos.
Modelo 1: kernel: linear probability: True Modelo 2: kernel: rbf probability:True Modelo 3: kernel: sigmoid probability:True
Queríamos probar tres núcleos diferentes para ver las diferencias entre ellos y qué resultados podríamos obtener con cada uno de ellos.
4.5.2. Árboles
4.5.2.1. ExtraTree Classifier
Los parámetros que manejaremos del algoritmo son los siguientes:
criterion: La función para medir la calidad de una división. Los criterios ad- mitidos son gini para la impureza de Gini (que es la probabilidad de clasificar incorrectamente un elemento elegido aleatoriamente en el conjunto de datos si se etiquetara aleatoriamente de acuerdo con la distribución de clases en el conjunto de datos) yentropy para la ganancia de información.
splitter: La estrategia utilizada para elegir la división en cada nodo. Las estra- tegias admitidas son best para elegir la mejor división y randompara elegir la mejor división aleatoria.
max depth: La profundidad máxima del árbol. Cuyos valores propuestos han sido:
criterion: gini
splitter: best
max depth: 10
Diseño experimental
Hemos decidido usar estos parámetros ya que el criteriogini se ajusta más a lo que estamos tratando de resolver, la etiquetación de las categoría frente a la supuesta ganancia de información. El hecho de tener la mejor división frente a la mejor división aleatoria nos pareció mucho más coherente a la hora de clasificar los documentos y también no queremos crear árboles sobre ajustados con mucha profundidad.
4.5.2.2. Decision Tree Classifier
En este caso, los parámetros que hemos decidio modificar son los mismos que el caso anterior.
criterion: La función para medir la calidad de una división. Los criterios ad- mitidos son gini para la impureza de Gini (que es la probabilidad de clasificar incorrectamente un elemento elegido aleatoriamente en el conjunto de datos si se etiquetara aleatoriamente de acuerdo con la distribución de clases en el conjunto de datos) yentropy para la ganancia de información.
splitter: La estrategia utilizada para elegir la división en cada nodo. Las estra- tegias admitidas son best para elegir la mejor división y randompara elegir la mejor división aleatoria.
max depth: La profundidad máxima del árbol. Cuyos valores propuestos han sido:
criterion: gini
splitter: best
max depth: 10
4.5.2.3. Random Forest Classifier
Los parámetros que manejaremos del algoritmo son los siguientes:
n estimators: Número de árboles del bosque.
criterion: La función para medir la calidad de una división. Los criterios ad- mitidos son gini para la impureza de Gini (que es la probabilidad de clasificar incorrectamente un elemento elegido aleatoriamente en el conjunto de datos si se etiquetara aleatoriamente de acuerdo con la distribución de clases en el conjunto de datos) yentropy para la ganancia de información.
max depth: La profundidad máxima del árbol.
n jobs: Número de trabajadores, funciona mejor con el numero de núcleos de la cpu para acelerar el proceso de entrenamiento.
Cuyos valores propuestos han sido:
n estimators: 100
criterion: gini
4.5. Modelado y evaluación
n jobs: 4
Los parámetros repetidos de otros clasificadores se han aplicado de la misma manera que el resto y hemos decidido tener una muestra de unos cien árboles generados aletoriamente para tener una suficiente variedad de resultados posibles a la hora de tomar la decisión de clasificación. El resto de parámetros son estándar.
4.5.3. Bagging y Boosting
4.5.3.1. Bagging
En el caso de bagging, vamos a reutilizar los clasificadores creados a partir de árboles para aplicarles esta técnica en la que manejaremos los siguientes parámetros:
base estimator: El estimador base para ajustarse a subconjuntos aleatorios del conjunto de datos. Si ninguno, entonces el estimador base es un árbol de decisión.
n estimators: El número de estimadores base en el conjunto. Cuyos valores que hemos escogido son los siguientes:
base estimator: Los trés arboles anteriores
n estimators: 20
Nos pareció suficiente crear 20 muestras de cada algoritmo a lahora de aplicar la técnica. El resto de parámetros son estándar.
4.5.3.2. Boosting
Los parámetros elegidos para modificar la técnia AdaBoost son los siguientes:
base estimator: El número de estimadores base a partir del cual se construye el conjunto. Se requiere soporte para la ponderación de la muestra. Si se establece a none, entonces el estimador base es un DecisionTreeClassifier (max depth = 1).
n estimators: El número de estimadores base en el conjunto. En caso de ajuste perfecto, el procedimiento de aprendizaje se detiene antes de tiempo.
learning rate: Parámetro de aprendizaje.
Cuyos valores que hemos escogido son los siguientes:
base estimator: Los tres árboles
n estimators: 20
learning rate: 1
Los parámetros repetidos en la técnica de bagging son los mismos y la tasa de apren- dizaje es estándar como el resto de parámetros.
Diseño experimental
4.5.4. Sistemas de votación
La implementación de los siguientes clasificadores se ha realizado de la siguiente manera:
1. Creación de 3 grupos de votación: algoritmos base (sin el clasificador Nearest Centroid al no tener un atributo de predicción de probabilidades), árboles y bagging y boosting.
2. Ejecución de votaciones tanto modo suave como modo duro.
Capítulo 5
Resultados
En esta parte del trabajo revisaremos los resultados obtenidos al ejecutar los algorit- mos de clasificación en cada uno de los modelos de representación programados. Se verán los resultados en función de los grupos de algoritmos seleccionados y observa- remos gráficamente el rendimiento de cada uno.
Para guardar los resultados en cada caso, se ha automatizado el proceso editando un documento de tipo CSV para almacenar cada atributo de manera organizada y eficiente.
5.1.
Conceptos básicos
Para poder visualizar el rendimiento de cada algoritmo con su representación de tex- tos correspondiente, primero tenemos que explicar algunos conceptos clave para su correcto entendimiento. Estos son, las matrices de confusión, la precisión, la exac- titud, la exhaustividad y el indicador F1. Cada una de estas herramientas nos dará cierta información de los algoritmos y, dependiendo del enfoque que se le dé a nuestro problema, unos resultados serán más importantes que otros y viceversa.
5.1.1. Matrices de confusión
Las matrices de confusión son las gráficas más representativas e importantes a la hora de evaluar un modelo/algoritmo de clasificación supervisado como es nuestro caso. Normalmente, las filas suelen representarse con los valores reales de los objetos a predecir y las columnas las predicciones realizadas. Por tanto los valores que se encuentren en la diagonal estarán correctamente clasificados y podremos ver en el resto de casos en qué valores se ha equivocado nuestro algoritmo. En nuestro caso particular, normalizaremos los valores a una escala cero a uno.
5.1. Conceptos básicos
Figura 5.1: Un ejemplo de matriz de confusión normalizada
5.1.2. La precisión/accuracy
En base a los resultados obtenidos podemos obtener una serie de métricas para comparar resultados. La primera es la precisión oaccuracy. Esta métrica nos indicará el número de aciertos obtenidos en base al número de predicciones realizadas sobre esa clase. Su cálculo
Precisión = Número de predicciones sobre la clase Número de total de instancias de la clase
Esta métrica puede no ser lo suficientemente representativa en casos en el que el conjunto de entrenamiento no esté del todo balanceado. Por ejemplo si tenemos un
90 %de elementos de la clase1, perfectamente podríamos obtener un90 %de precisión con un modelo que sólo prediga que cualquier instancia es de esa clase. Por tanto hay que tener cuidado al interpretar esta métrica al obtener los resultados.
A partir de este momento nos referiremos a este indicador comoaccuracy.
5.1.3. La exactitud/precision
La exactitud oprecisiones otra métrica que no se debe confundir con la accuracy. En este caso se calcula en base a las predicciones correctas realizadas sobre la clase so- bre el número total de predicciones hechas sobre esa clase. Se calcula de la siguiente manera:
Resultados
Exactitud = Número de predicciones correctas
Número de predicciones realizadas en esa clase A partir de este momento nos referiremos a este indicador comoprecision.
5.1.4. La exhaustividad/recall
La exhaustividad o recall difiere con el resto de indicadores en que obtiene su re- sultado a partir de las predicciones realizadas sobre el total de predicciones que se tendrían que haber realizado (en teoría). Su fórmula:
Exhaustividad = Número de predicciones correctas
Número de predicciones que existen sobre esa clase A partir de este momento nos referiremos a este indicador comorecall.
5.1.5. Indicador F1
En indicador F1 es la simbiosis equilibrada de las dos últimas métricas, ya que su resultado depende de ambas y nos dirá en cuánto es exacto nuestro clasificador y si es robusto o no. Podemos tener casos en los que el clasificador sea muy preciso pero falle en muchos casos que seán un poco más complicados de clasificar (y, por tanto teniendo menos recall) y al revés y esta métrica nos avisará. En conclusión, esta medida nos dará en general mucha más información que todas las anteriores y se tendrá muy en cuenta a la hora de comparar los algoritmos en cada una de las representaciones. Se calcula así:
Indicador F1 = 2· 1
1
Precision+
1
Recall
A partir de este momento nos referiremos a este indicador comoF1.