Clasificación de conjuntos de datos de noticias basados en regresión logística

1. Sobre el autor

Sheng Siyu, hombre, Escuela de Información Electrónica, Universidad Politécnica de Xi'an, estudiante graduado en 2021
Dirección de investigación: Investigación sobre detección de defectos de imagen industrial basada en una red no supervisada
Correo electrónico: [email protected]

Wu Yanzi , mujer, Escuela de Información Electrónica, Universidad Politécnica de Xi'an, estudiante de posgrado de 2021, Grupo
de Investigación de Inteligencia Artificial de Zhang Hongwei Dirección de investigación: Reconocimiento de patrones e inteligencia artificial
Correo electrónico: [email protected]

2. Regresión logística

2.1 Regresión logística

En el modelo de regresión, las variables dependientes son todas variables de intervalo numérico, y el modelo establecido describe la relación lineal entre la expectativa de la variable dependiente y la variable independiente. Por ejemplo, el modelo de regresión lineal común:
inserte la descripción de la imagen aquí
en el uso de modelos de regresión para analizar problemas prácticos, las variables estudiadas a menudo no son todas variables de intervalo sino variables ordinales o variables de atributo, como problemas de distribución binomial. Al analizar la edad, el sexo, el índice de masa corporal, la presión arterial promedio, el índice de enfermedad y otros indicadores para determinar si una persona ha cambiado de diabetes, Y=0 significa que no tiene enfermedad, Y=1 significa que tiene enfermedad, la variable de respuesta aquí es una variable de dos puntos. (0- 1) variable de distribución, no puede predecir la variable dependiente Y con el valor continuo de la función h (solo puede tomar 0 o 1).
En resumen, el modelo de regresión lineal generalmente trata el problema de que la variable dependiente es una variable continua.Si la variable dependiente es una variable cualitativa, el modelo de regresión lineal ya no es aplicable y se debe usar el modelo de regresión logística para resolver eso.
La regresión logística (Logistic Regression) se usa para tratar problemas de regresión donde la variable dependiente es una variable categórica. El problema común es la distribución binaria o binomial, y también puede tratar problemas de múltiples categorías. En realidad, es un método de clasificación.
inserte la descripción de la imagen aquí
La relación entre la probabilidad y las variables independientes del problema de dos clases suele ser una curva en forma de S, como se muestra en la figura anterior, que se implementa mediante la función sigmoidea.
Aquí definimos la función de la siguiente manera:
inserte la descripción de la imagen aquí
el dominio de definición de la función son todos los números reales, el rango de valores está entre [0, 1] y el resultado correspondiente al eje x en el punto 0 es 0.5. Cuando el valor de x es lo suficientemente grande, puede considerarse un problema de tipo 0 o 1. Si es mayor que 0,5, puede considerarse un problema de tipo 1. De lo contrario, es un problema de tipo 0. Si es solo 0.5, se puede dividir en tipo 0 o tipo 1. Para variables de tipo 0-1, la fórmula de distribución de probabilidad de y=1 se define de la siguiente manera:
inserte la descripción de la imagen aquíLa fórmula de distribución de probabilidad de y=0 se define de la siguiente manera:
inserte la descripción de la imagen aquí
La fórmula de valor esperado de variables aleatorias discretas es la siguiente:
inserte la descripción de la imagen aquí
Se utiliza el modelo lineal para el análisis, y la transformación de la fórmula es la siguiente:
inserte la descripción de la imagen aquíLa aplicación práctica En , la probabilidad p y la variable dependiente son a menudo no lineales Para resolver este tipo de problema, introducimos la transformación logit, de modo que haya una correlación lineal entre el logit§ y la variable independiente El modelo de regresión logística se define de la siguiente manera:
inserte la descripción de la imagen aquí
Por derivación, la probabilidad p se transforma de la siguiente manera, lo cual es consistente con la función sigmoidea y también refleja la relación no lineal entre la probabilidad p y la variable dependiente. Tomando 0,5 como límite, cuando la predicción p es mayor que 0,5, juzgamos que es más probable que y sea 1 en este momento, de lo contrario, y es 0.
inserte la descripción de la imagen aquí
Luego de obtener la función Sigmoidea requerida, solo es necesario ajustar los n parámetros θ en la fórmula como en la regresión lineal anterior.
La variable dependiente de la regresión logística puede ser binaria o multiclase, pero la binaria se usa más comúnmente y es más fácil de interpretar. Por lo tanto, el más utilizado en la práctica es la regresión logística de clasificación binaria. Para problemas de clasificación de clases múltiples, se puede considerar como un problema de clasificación de dos clases: mantenga una de ellas y el resto como la otra.

2.2 Algoritmo de regresión logística

El modelo de regresión LogisticRegression está bajo la subclase Sklearn.linear_model, y los pasos para llamar al algoritmo de regresión logística sklearn son relativamente simples, a saber:
importar el modelo: llamar a la función de regresión logística LogisticRegression().
entrenamiento fit(): llama al método fit(x,y) para entrenar el modelo, donde x es el atributo de los datos e y es el tipo.
predicción predict(): use el modelo entrenado para predecir el conjunto de datos y devolver el resultado de la predicción.

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
          verbose=0, warm_start=False)

1. Parámetros de selección de regularización: penalización
LogisticRegression y LogisticRegressionCV tienen términos de regularización por defecto. Los valores opcionales del parámetro de penalización son "l1" y "l2". Corresponden a la regularización L1 y la regularización L2 respectivamente. El valor por defecto es la regularización L2.
A la hora de ajustar parámetros, si nuestro objetivo principal es solucionar el sobreajuste, suele bastar con elegir la regularización L2 como penalización. Sin embargo, si se selecciona la regularización de L2 y se encuentra que todavía está sobreajustada, es decir, cuando el efecto de predicción es pobre, se puede considerar la regularización de L1. Además, si el modelo tiene muchas características y queremos que algunos coeficientes de características sin importancia se pongan a cero, de modo que los coeficientes del modelo sean escasos, también se puede usar la regularización L1.

2. Parámetros de selección del algoritmo de optimización: el
parámetro solver determina nuestro método de optimización para la función de pérdida de regresión logística. Hay 4 algoritmos para elegir, a saber:
liblinear: usando la implementación de la biblioteca liblinear de código abierto, el método de descenso del eje de coordenadas se usa internamente para optimizar iterativamente la función de pérdida.
lbfgs: una especie de método cuasi-Newton, que utiliza la matriz de la segunda derivada de la función de pérdida, es decir, la matriz hessiana, para optimizar iterativamente la función de pérdida.
newton-cg: También es una especie de familia de métodos de Newton.Utiliza la segunda matriz derivada de la función de pérdida, es decir, la matriz hessiana, para optimizar iterativamente la función de pérdida.
sag: Descenso de gradiente promedio estocástico, que es una variante del método de descenso de gradiente. La diferencia con el método de descenso de gradiente ordinario es que cada iteración solo usa una parte de la muestra para calcular el gradiente. Es adecuado para cuando hay muchas muestras. datos SAG es un algoritmo de convergencia lineal, que es mucho más rápido que SGD. Para comprender SAG, consulte la publicación de blog SAG, SVRG (descenso de gradiente estocástico) de algoritmos de optimización estocástica de convergencia lineal En
resumen, liblinear admite L1 y L2, solo admite OvR para clasificación múltiple, "lbfgs", "sag" " newton-cg" "Solo admite L2, admite OvR y MvM para clasificación múltiple.

3. Parámetro de selección del método de clasificación: multi_class El
parámetro multi_class determina la elección de nuestro método de clasificación.Hay dos valores ovr y multinomial para elegir.El valor predeterminado es ovr.
ovr es el mencionado uno contra el resto (OvR), y multinomial es el mencionado muchos contra muchos (MvM). Si es una regresión logística binaria, no hay diferencia entre ovr y multinomial, la diferencia está principalmente en la regresión logística múltiple.
La idea de OvR es muy simple, no importa cuánta regresión metalogística sea, podemos pensar en ella como una regresión logística binaria. El método específico es que para la decisión de clasificación de la clase Kth, tomamos todas las muestras de la clase Kth como ejemplos positivos, y todas las muestras excepto las muestras de la clase Kth como ejemplos negativos, y luego hacemos una regresión logística binaria para obtener el modelo de clasificación Kth Class. Se obtienen modelos de clasificación de otras clases y así sucesivamente.

MvM es relativamente complicado, aquí hay un caso especial de MvM uno contra uno (OvO) para una explicación. Si el modelo tiene clase T, seleccionamos dos tipos de muestras de todas las muestras de clase T cada vez, que pueden registrarse como clase T1 y clase T2, juntamos todas las muestras cuya salida es T1 y T2, y tomamos T1 como positivo. ejemplo , T2 se utiliza como ejemplo negativo y se realiza una regresión logística binaria para obtener los parámetros del modelo. Necesitamos un total de clasificaciones T(T-1)/2.
Puede verse en la descripción anterior que OvR es relativamente simple, pero el efecto de clasificación es relativamente pobre (esto se refiere a la mayoría de las distribuciones de muestra, y OvR puede ser mejor bajo algunas distribuciones de muestra). La clasificación MvM es relativamente precisa, pero la velocidad de clasificación no es tan rápida como OvR.

Si se selecciona ovr, se pueden seleccionar los cuatro métodos de optimización de la función de pérdida liblinear, newton-cg, lbfgs y sag. Pero si elige multinomial, solo puede elegir newton-cg, lbfgs y sag.

4. Parámetro tipo ponderación: class_weight El
parámetro class_weight se utiliza para indicar los distintos tipos de ponderaciones en el modelo de clasificación, se puede omitir, es decir, no se consideran las ponderaciones, o las ponderaciones de todos los tipos son iguales. Si elige ingresar, puede elegir equilibrado para permitir que la biblioteca de clases calcule el peso del tipo por sí mismo, o podemos ingresar el peso de cada tipo por nosotros mismos. Por ejemplo, para el modelo binario de 0,1, podemos definir class_weight ={0:0.9, 1:0.1}, de esta forma el tipo 0 tiene un peso del 90% y el tipo 1 tiene un peso del 10%.
Si class_weight elige equilibrado, la biblioteca de clases calculará el peso de acuerdo con el tamaño de la muestra de entrenamiento. Cuanto mayor sea el tamaño de la muestra de un determinado tipo, menor será el peso, y cuanto menor sea el tamaño de la muestra, mayor será el peso.

5. Parámetro de ponderación de la muestra: sample_weight
no es una estimación imparcial de la muestra general debido al desequilibrio de la muestra en sí bajo el problema del desequilibrio de la muestra, lo que puede conducir a una disminución en la capacidad predictiva de nuestro modelo. En este caso, podemos intentar resolver este problema ajustando el peso de la muestra. Hay dos formas de ajustar el peso de la muestra: la primera es usar balanceado en class_weight. El segundo es ajustar el peso de cada muestra por sample_weight al llamar a la función de ajuste.

3. Procedimiento experimental

3.1 Introducción al conjunto de datos fetch_20newsgroups (20 categorías de texto de noticias)

El conjunto de datos de 20 grupos de noticias contiene más de 18 000 artículos de noticias, que involucran un total de 20 temas, por lo que se denomina conjunto de datos de texto de 20 grupos de noticias. Se divide en dos partes: el conjunto de entrenamiento y el conjunto de prueba, que generalmente se usan para la clasificación de texto, y se dividen uniformemente en 20 noticias de diferentes temas.colección del grupo. El conjunto de datos de 20newsgroups es uno de los conjuntos de datos estándar internacionales utilizados para la clasificación de textos, la minería de textos y la investigación de recuperación de información. Algunos grupos de noticias tienen temas muy similares (p. ej., comp.sys.ibm.pc.hardware/comp.sys.mac.hardware), otros no tienen ninguna relación (p. ej., misc.forsale /soc.religion.christian).

3.2 Código experimental

Todo el proceso se divide en cuatro partes: recopilación de datos, extracción de características, entrenamiento del modelo y evaluación del modelo.
1. Recopilación de datos

from sklearn.datasets import fetch_20newsgroups
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)

data_home se refiere a la dirección del conjunto de datos. De manera predeterminada, todos los datos estarán en la carpeta '~/scikit_learn_data'.
El subconjunto es entrenar, probar y las tres opciones, correspondientes al conjunto de entrenamiento, al conjunto de prueba y a todas las muestras, respectivamente.
Categorías: se refiere a las categorías. Si se especifica una categoría, solo se extraerá la categoría de destino. Si es la predeterminada, se extraerán todas las categorías.
barajar: si se baraja el orden de las muestras, si son independientes entre sí.
random_state: semilla aleatoria para barajar el orden
eliminar: es una tupla utilizada para eliminar algunas palabras vacías, como las referencias al título.
download_if_missing: Si se descarga si faltan datos.
Después de las pruebas, sabemos que
veinte_trenes.datos son de tipo lista y cada elemento es de tipo str, que es un artículo.
veinte_tren.objetivo es su etiqueta.
2. Extracción de características

'''
这是开始提取特征,这里的特征是词频统计。
'''
from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)
'''
这是开始提取特征,这里的特征是TFIDF特征。
'''
from sklearn.feature_extraction.text import TfidfTransformer
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

3. Formación modelo

'''
使用逻辑回归分类,并做出简单的预测
'''
from sklearn.linear_model import LogisticRegression  # 逻辑回归
clf = LogisticRegression().fit(X_train_tfidf, twenty_train.target)
docs_new = ['God is love', 'OpenGL on the GPU is fast']
X_new_counts = count_vect.transform(docs_new)
X_new_tfidf = tfidf_transformer.transform(X_new_counts)
predicted = clf.predict(X_new_tfidf)
for doc, category in zip(docs_new, predicted):
    print('%r => %s' % (doc, twenty_train.target_names[category]))

Use el algoritmo de regresión logística para entrenar y realizar pruebas de predicción en dos categorías de oraciones para obtener los resultados
inserte la descripción de la imagen aquí
4. Evaluación del modelo
La evaluación del modelo generalmente se evalúa utilizando PRF (tasa de precisión, tasa de recuperación, valor F1) y valor Acc (valor de precisión ), por lo tanto, podemos obtener fácilmente esta información usando el método metrics.classification_report, y podemos usar este método para comparar la diferencia entre los dos objetivos:

from sklearn import metrics
import numpy as np
twenty_test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42)
docs_test = twenty_test.data
X_test_counts = count_vect.transform(docs_test)
X_test_tfidf = tfidf_transformer.transform(X_test_counts)
predicted = clf.predict(X_test_tfidf)
print(metrics.classification_report(twenty_test.target, predicted,target_names=twenty_test.target_names))
print("accurary\t"+str(np.mean(predicted == twenty_test.target)))

3.3 Resultados de ejecución

inserte la descripción de la imagen aquí

Referirse a

1. [Python] Clasificación de texto de 20 grupos de noticias (vectorización TF-IDF, diez clasificadores de
sklearn) 2. Conjunto de datos: fetch_20newsgroups (20 tipos de textos de noticias) introducción del conjunto de datos, instalación, guía detallada sobre cómo usar
3. Regresión logística (Regresión logística) Regresión)

Supongo que te gusta

Origin blog.csdn.net/m0_37758063/article/details/123642943
Recomendado
Clasificación