Estoy tratando de implementar una función de regresión logística en matlab. Calculé los valores de theta, la función de costo de regresión lineal es convergente y luego uso esos parámetros en la función de regresión logística como un límite de decisión.
Estoy intentando obtener un árbol de regresión logística sobreajustado para mostrar cómo se comporta la función de coste durante el sobreajuste con respecto al tamaño del conjunto de entrenamiento. Obtengo un error de entrenamiento convergente, que es lo esperado. También obtengo un error de validación creciente, lo que también se espera, pero aunque están aumentando, mis valores de error de validación están siempre por debajo de los valores de error de entrenamiento. ¿Se supone que es así (porque estamos usando el logaritmo de la función de hipótesis y no la función de error al cuadrado) o estoy haciendo algo mal? (No puedo publicar imágenes porque soy un miembro nuevo)
Mis cálculos de la función de costes están incluidos en la parte del código, agradecería cualquier ayuda.
for i=1:row
if y(i)>0
classification(i)=1;
else
classification(i)=0;
end
classpredict(i)=1/(1+exp(-(ypredict(i))));
end
for i=1:size(data,1)-row
if validy(i)>0
classvalid(i)=1;
else
classvalid(i)=0;
end
classvalidpredict(i)=1/(1+exp(-(validpredicty(i))));
end
for i=1:size(classpredict)
costclasstrain=-(costclasstrain+(classification(i))*(log(classpredict(i)))+(1-classification(i))*(log(1-classpredict(i))))/row;
end
for i=1:size(classvalidpredict)
costclassvalid=-(costclassvalid+(classvalid(i))*(log(classvalidpredict(i)))+(1-classvalid(i))*(log(1-classvalidpredict(i))))/(size(data,1)-row);
end
2 votos
¿Cuánto tiempo has dedicado a leer textos y documentos sobre el modelo de regresión logística?
1 votos
¿Por qué cambias el signo del coste en cada iteración? ¿No debería estar el signo menos dentro del paréntesis?