Regresión lineal múltiple detallada

Soy un novato al principio, espero registrar lo que he aprendido como tomar notas, y también espero ayudar a las personas que también están comenzando.

Tabla de contenido

1. Descripción del problema

2. Análisis de problemas

3. Resuelva el problema: encuentre w y b

1. Conversión de forma vectorial

2. Estilo de gol

3. La derivada es 0 para sacar una conclusión

4. El resultado final del modelo

4. Problemas ocultos: puede que no sea una matriz de rango completo

5. La solución del problema oculto - regularización

1. Regularización L1 - Regresión Lasso

2. Regularización L2 - regresión de cresta

6. Cambios y aplicaciones de la regresión lineal

Siete, implementación de python

1. Regresión lineal múltiple

2. Regresión de cresta

3. regresión de lazo

Ocho, modelo lineal - problema de clasificación de problemas de regresión


1. Descripción del problema

Ahora tenemos un conjunto de datos D a la mano: cada muestra está descrita por d atributos, es decir  \boldsymbol{x} = (x_{1};x_{2};...;x_{d}), donde x_{yo}está el valor de la muestra x en el i-ésimo atributo. Y x_{yo}el valor del resultado final correspondiente de cada muestra es y_{yo}.

Ahora viene una nueva muestra \boldsymbol{x}_{j}y quiero saber su valor de resultadoy_{j}


2. Análisis de problemas

Necesitamos encontrar un modelo lineal para predecir de acuerdo con el conjunto de datos D \boldsymbol{x}_{j}, y_{j}es decir, encontrar f(\boldsymbol{x}_{i})=w^{T}\boldsymbol{x}_{i}+bla w y b apropiadas.


3. Resuelva el problema: encuentre w y b

Podemos usar el método de mínimos cuadrados para resolver este problema.

1. Conversión de forma vectorial

Primero, combine w y b en una forma vectorial \sombrero{\boldsymbol{w}} = (w;b)con un tamaño de (d+1)*1;

Luego reescriba la matriz de datos X: X= \begin{pmatrix} \boldsymbol{x}_{1} & \boldsymbol{x}_{2}&...&\boldsymbol{x}_{m}\\ 1 & 1 & ...& 1\end{matriz}, el tamaño es (d+1)*m.

Luego escribe el patrón vectorial para la etiqueta y también: \boldsymbol{y} = (y_{1};y_{2};...;y_{m})

2. Estilo de gol

 \underset{\hat{w}}{arg min}(\boldsymbol{y}-\hat{w}^{T}X)(\boldsymbol{y}-\hat{w}^{T}X)^ {T}

hacer E = (\boldsymbol{y}-\hat{w}^{T}X)(\boldsymbol{y}-\hat{w}^{T}X)^{T}

3. La derivada es 0 para sacar una conclusión

\frac{\parcial E}{\parcial \hat{w}} = 2X(X^{T}\hat{w}-\boldsymbol{y})=0\rightarrow \hat{w}=(XX^{ T})^{-1}X\boldsymbol{y}  

4. El resultado final del modelo

\sombrero{\boldsymbol{x}_{i}} = (\boldsymbol{x}_{i};1)

f(\hat{\boldsymbol{x}_{i}}) = \hat{\boldsymbol{x}_{i}}(XX^{T})^{-1}X\boldsymbol{y}


4. Problemas ocultos: XX^{T}puede que no sea una matriz de rango completo

XX^{T}Es posible que no sea una matriz de rango completo y \hat{w}se generarán varias soluciones óptimas. ¿Qué solución debe seleccionarse como\hat{w}

Por ejemplo, si la cantidad de muestras es pequeña, la cantidad de atributos de características es grande o incluso excede la cantidad de muestras, entonces no es una matriz de rango completo en este momento y se pueden resolver múltiples XX^{T}soluciones \hat{w}.


5. La solución del problema oculto - regularización

El papel de la regularización es elegir un modelo con un riesgo empírico pequeño y complejidad del modelo al mismo tiempo.

1. Regularización L1 - Regresión Lasso

Agregar un elemento después de la función objetivo \lambda \sum_{i=1}^{d}|w_{i}|

Entonces, la función objetivo se convierte en \underset{\hat{w}}{arg min}((\boldsymbol{y}-\hat{w}^{T}X)(\boldsymbol{y}-\hat{w}^{T}X) ^{T}+\lambda\sum_{i=1}^{d}|w_{i}|)

El primer elemento es el riesgo empírico mencionado anteriormente, y el segundo elemento controla la complejidad del modelo.

Entre ellos \lambda >0, se controla el grado de castigo: \lambda \rightarrow \infty ,\hat{w}\rightarrow 0;\lambda \rightarrow 0 ,\hat{w}\rightarrow (XX^{T})^{-1}X\boldsymbol{y}

Esto también se conoce como regresión de Lasso.

Como se muestra en la siguiente figura (suponiendo que solo hay dos atributos): el contorno del término de error cuadrático regularizado L1 y el contorno regularizado a menudo se cruzan en el eje de coordenadas, lo que significa que uno de los atributos se descarta, lo que refleja la selección de características. es más fácil obtener una solución dispersa (en comparación con la regularización L2 a continuación), es decir, habrá menos valores distintos de cero en el vector W obtenido.

2. Regularización L2 - regresión de cresta

Agregar un elemento después de la función objetivo\lambda \sum_{i=1}^{d}w_{i}^{2}

Entonces, la función objetivo se convierte en \underset{\hat{w}}{arg min}((\boldsymbol{y}-\hat{w}^{T}X)(\boldsymbol{y}-\hat{w}^{T}X) ^{T}+\lambda\sum_{i=1}^{d}w_{i}^{2})

Esto también se conoce como regresión de cresta.

La regularización L2 selecciona los parámetros uniformemente, de modo que los coeficientes de la curva de ajuste sean similares. Aunque no se puede reducir el número de elementos, los coeficientes están equilibrados. Esto es diferente de la regularización L1 en principio.


6. Cambios y aplicaciones de la regresión lineal

Si el modelo del problema no es una regresión lineal, intente aproximar las predicciones del modelo a las derivadas de y.

Por ejemplo, regresión log-lineal lny_{i}=w^{T}\boldsymbol{x}_{i}+b

De manera más general: y=g^{-1}(w^{T}\boldsymbol{\boldsymbol{x}}+b), que se denomina modelo lineal generalizado.


Siete, implementación de python

1. Regresión lineal múltiple

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(x,y,test_size=0.3,random_state=1)//x,y分别为已经分好的属性数据和标记数据
model = LinearRegression()
model.fit(X_train, Y_train)
score = model.score(X_test, Y_test)
print('模型测试得分:'+str(score))
Y_pred = model.predict(X_test)
print(Y_pred)

2. Regresión de cresta

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(x,y,test_size=0.3,random_state=1)//x,y分别为已经分好的属性数据和标记数据
model = Ridge(alpha=1)
model.fit(X_train, Y_train)
score = model.score(X_test, Y_test)
print('模型测试得分:'+str(score))
Y_pred = model.predict(X_test)
print(Y_pred)

3. regresión de lazo

from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(x,y,test_size=0.3,random_state=1)//x,y分别为已经分好的属性数据和标记数据
model = Lasso(alpha=0.1)
model.fit(X_train, Y_train)
score = model.score(X_test, Y_test)
print('模型测试得分:'+str(score))
Y_pred = model.predict(X_test)
print(Y_pred)

Ocho, modelo lineal - \flecha correctaproblema de clasificación de problemas de regresión

Todos los mencionados anteriormente utilizan modelos lineales para resolver problemas de regresión. De hecho, los modelos lineales también se pueden usar para resolver problemas de clasificación: regresión logística (regresión de probabilidad logarítmica).

Para obtener más información, consulte Regresión logística (Regresión logística)


Todos son bienvenidos a criticar y corregir en el área de comentarios, gracias~

Supongo que te gusta

Origin blog.csdn.net/weixin_55073640/article/details/125807369
Recomendado
Clasificación