[Sklearn] Regresión logística

Notas sobre "Aprendizaje automático de Caicai"

1. Regresión logística

1. Regreso

La regresión lineal es el algoritmo de regresión más simple en el aprendizaje automático. Escribe una ecuación con la que casi todo el mundo está familiarizado:
Inserte la descripción de la imagen aquí

2. Regresión logística binaria

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
No es difícil encontrar que la naturaleza de la probabilidad logarítmica de y (x) es en realidad nuestra regresión lineal z. De hecho, estamos tomando la probabilidad logarítmica del resultado de la predicción del modelo de regresión lineal para hacer que el resultado sea infinitamente cercano a 0 y 1. . Por lo tanto, el modelo correspondiente se llama " retorno logarítmico de probabilidad " (Regresión logística), que es nuestra regresión logística , este "retorno" se utiliza para la clasificación del clasificador .

Como se mencionó anteriormente, la tarea principal de la regresión lineal es construir esta función de predicción resolviendo, y esperar que la función de predicción pueda ajustarse a los datos tanto como sea posible, por lo que la tarea principal de la regresión logística es similar: resolver θ \ thetaθ para construir una función de predicción que pueda ajustar los datos tanto como sea posibley (x) y (x)y ( x ) , y obtenga el valor de etiqueta correspondienteyyingresando la matriz de características en la función de prediccióny

3. Función de pérdida

Utilice el índice de evaluación de la "función de pérdida" para medir el parámetro θ \ thetaEl tamaño de la pérdida de información generada cuando el modelo θ se ajusta al conjunto de entrenamiento se utiliza para medir los pros y los contras de los parámetros. Si después de modelar con un conjunto de parámetros, el modelo funciona bien en el conjunto de entrenamiento, entonces decimos que la pérdida en el proceso de ajuste del modelo es pequeña, y el valor de la función de pérdida es pequeño, y este conjunto de parámetros es excelente.
Inserte la descripción de la imagen aquí
Dado que buscamos la función de pérdida mínima para que el modelo tenga un rendimiento óptimo en el conjunto de entrenamiento, puede surgir otro problema: si el modelo se desempeña bien en el conjunto de entrenamiento pero funciona mal en el conjunto de prueba, el modelo se sobreajustará. Aunque la regresión logística y la regresión lineal son inherentemente modelos de ajuste insuficiente, todavía necesitamos controlar la tecnología de sobreajuste para ayudarnos a ajustar el modelo.El controldelsobreajuste enla regresión logística selogra mediante laregularización.

Dos, regresión logística en sklearn

1. Regresión en sklearn

Inserte la descripción de la imagen aquí

2.modelo_lineal.Regresión logística

sklearn.linear_model.LogisticRegression (
	penalty=’l2’,
	dual=False, 
	tol=0.0001, 
	C=1.0,
	fit_intercept=True, 
	intercept_scaling=1, 
	class_weight=None, 
	random_state=None, 
	solver=’warn’, 
	max_iter=100,
	multi_class=’warn’, 
	verbose=0, 
	warm_start=False, 
	n_jobs=None)

3. Parámetros importantes penalización & C

3.1 Regularización

La regularización es un proceso que se utiliza para evitar el sobreajuste del modelo . Hay dos opciones de uso común , regularización L1 y regularización L2 , que se implementan agregando la forma normal L1 y el múltiplo de la forma normal L2 del vector de parámetros después de la función de pérdida.
La norma L1 se expresa como la suma de los valores absolutos de cada parámetro en el vector de parámetros, y la norma L2 se expresa como la raíz cuadrada de la suma de cuadrados de cada parámetro en el vector de parámetros.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
En términos generales, si nuestro principal objetivo es evitar el sobreajuste, basta con elegir la regularización L2. Sin embargo, si la regularización de L2 todavía está sobreajustada y el modelo funciona mal en el conjunto de datos desconocido, entonces se puede considerar la regularización de L1.

4. Código

4.1 Determine qué efecto de L1 y L2 es mejor.

l1 = []
l2 = []
l1test = []
l2test = []
 
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3,random_state=420)
 
for i in np.linspace(0.05,1.5,19):
    lrl1 = LR(penalty="l1",solver="liblinear",C=i,max_iter=1000)
    lrl2 = LR(penalty="l2",solver="liblinear",C=i,max_iter=1000)
    
    lrl1 = lrl1.fit(Xtrain,Ytrain)
    l1.append(accuracy_score(lrl1.predict(Xtrain),Ytrain))
    l1test.append(accuracy_score(lrl1.predict(Xtest),Ytest))
    lrl2 = lrl2.fit(Xtrain,Ytrain)
    l2.append(accuracy_score(lrl2.predict(Xtrain),Ytrain))
    l2test.append(accuracy_score(lrl2.predict(Xtest),Ytest))
 
graph = [l1,l2,l1test,l2test]
color = ["green","black","lightgreen","gray"]
label = ["L1","L2","L1test","L2test"]    
 
plt.figure(figsize=(6,6))
for i in range(len(graph)):
    plt.plot(np.linspace(0.05,1.5,19),graph[i],color[i],label=label[i])
plt.legend(loc=4) #图例的位置在哪里?4表示,右下角
plt.show()

Inserte la descripción de la imagen aquí

4.2 Método de inclusión

fullx = []
fsx = []
 
C=np.arange(0.01,10.01,0.5)
 
for i in C:
    LR_ = LR(solver="liblinear",C=i,random_state=420)
    
    fullx.append(cross_val_score(LR_,data.data,data.target,cv=10).mean())
    
    X_embedded = SelectFromModel(LR_,norm_order=1).fit_transform(data.data,data.target)
    fsx.append(cross_val_score(LR_,X_embedded,data.target,cv=10).mean())
    
print(max(fsx),C[fsx.index(max(fsx))])
 
plt.figure(figsize=(20,5))
plt.plot(C,fullx,label="full")
plt.plot(C,fsx,label="feature selection")
plt.xticks(C)
plt.legend()
plt.show()

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_45617555/article/details/112487700
Recomendado
Clasificación