6 votos

¿Es el cálculo de una media móvil una buena forma de aproximarse a la regresión k-nearest neighbor?

Dadas muestras i.i.d ( x 1 , y 1 ), ... ( x n , y n ) tal que y i \= f 0 ( x i ) + $\epsilon$ i , i \= 1,... n para algunos f 0

Supongamos que quiero una estimación $\hat{f}$ de f 0 utilizando k -regresión del vecino más próximo en la vecindad de cada x i en mi conjunto de datos. Así, para cada x i Debo buscar el k elementos vecinos más cercanos y tomar la media del conjunto de todos los y j tal que j $\in$ $\mathcal{N}$ k ( x i ) donde $\mathcal{N}$ k ( x ) contiene el k puntos más cercanos de x :

$$\hat{f}(x_i) = \frac{1}{k}\sum_{j\in\mathcal{N}_k(x_i)} y_j$$

Ahora bien, si mi x i están todos espaciados uniformemente, entonces podría simplemente ordenarlos en orden ascendente y calcular una media móvil sobre los elementos correspondientes en y con tamaño de ventana k . Mi pregunta es: ¿Será esta media móvil aproximadamente equivalente a k -regresión de vecinos más próximos, incluso si ( x 1 , ... x n ) no están espaciados uniformemente? ¿Hay alguna prueba que pueda hacer sobre la distribución P (x) para comprobar la calidad de la aproximación?

1 votos

Modelo de media móvil es una noción fija que difiere bastante de media móvil en general - véase este y quizás editar el título.

0 votos

Es $x_i$ va a ser el punto medio de la ventana?

0 votos

Sí, siento haber omitido ese detalle. $x_i$ será el elemento medio/mediana de la ventana. Por supuesto, si ( $x_1$ , ... $x_n$ ) están espaciados uniformemente, entonces $x_i$ también será la media de la ventana.

0voto

Joeri Sebrechts Puntos 7483

Supongamos que x[i] es la entrada, e i es la posición de la entrada. El siguiente algo será muy eficiente.

sum = 0
count = 0
leftindex = i-1
rightindex = i+1
while (count < k) {
    if(abs(x[leftindex] - x[i]) > abs(x[rightindex] - x[i])) {
        sum = sum + y[rightindex]
        rightindex = rightindex + 1
    } else {
        sum = sum + y[leftindex]
        leftindex = leftindex - 1
    }
    count = count + 1
}
result = sum / k

Por supuesto, hay que hacer algunas comprobaciones adicionales de los límites a izquierda y derecha, para no caerse de los extremos. O puedes rellenar los datos con k puntos lejanos a la derecha k puntos lejanos a la izquierda antes de ejecutarlo. Además, esto no incluye el punto de entrada. Si eso es un requisito puede simplemente establecer la suma a y[i] inicialmente y contar hasta 1.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X