No estoy seguro de haberle entendido bien. Sin embargo, creo que puedes construir la distribución de probabilidad empírica del error (utilizando el conjunto de pruebas), si es necesario, utilizando bootstrapping. A continuación, puede estimar la distribución de probabilidad del error utilizando MLE, utilizar la estimación no paramétrica, etc. Si tienes una distribución, entonces puedes estimar fácilmente la probabilidad de exceder algún valor dado del error.
Tenga en cuenta que se necesitan muchas observaciones para hacer una buena estimación de la distribución. En el caso de este conjunto de datos (iris), este enfoque no proporcionará resultados muy sólidos.
Si este método falla, siempre se puede utilizar La desigualdad de Chebyshev
A continuación tienes un código R para un ejemplo de juguete:
library(randomForest)
library(ggplot2)
data(iris)
set.seed(2020)
df <- iris
test.df <- iris #in your case it will be a real test set
head(df)
rf.model <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width ,data=df)
check.df <- data.frame(predicted = predict(rf.model,newdata=test.df), observed = test.df$Sepal.Length)
head(check.df)
#uncomment line below to display a scatter plot
#ggplot(data = check.df,aes(x=observed,y=predicted)) + geom_point() + geom_smooth(method="lm")
error.df <- data.frame(error = check.df$observed - check.df$predicted)
#uncomment line below to display a histogram
#ggplot(data = error.df,aes(x=error,y=..density..)) + geom_histogram() + geom_density() # plot the histogram and density
cdf <- ecdf(x=error.df$error) #empirical CDF function
#probability of error exceeding 0.2 on both sides, so including also error exceeding -0.2, P(error<-0.2 or error>0.2)
P = cdf(-0.2) + (1-cdf(0.2))
P
Por supuesto, puedes utilizar la medida que quieras para el error.
También intervalos de predicción puede ser interesante para usted.