I am building a KNN model to predict housing prices. I'll go through my data and my model and then my problem.
# A tibble: 81,334 x 4 latitude longitude close_date close_price <dbl> <dbl> <dttm> <dbl> 1 36.4 -98.7 2014-08-05 06:34:00 147504. 2 36.6 -97.9 2014-08-12 23:48:00 137401. 3 36.6 -97.9 2014-08-09 04:00:40 239105.
library(caret) training.samples <- data$close_price %>% createDataPartition(p = 0.8, list = FALSE) train.data <- data[training.samples, ] test.data <- data[-training.samples, ] model <- train( close_price~ ., data = train.data, method = "knn", trControl = trainControl("cv", number = 10), preProcess = c("center", "scale"), tuneLength = 10 )
My problem is time leakage. I am making predictions on a house using other houses that closed afterwards and in the real world I shouldn't have access to that information.
I want to apply a rule to the model that says, for each value
y, only use houses that closed before the house for that
y. I know I could split my test data and my train data on a certain date, but that doesn't quite do it.
Is it possible to prevent this time leakage, either in
caret or other libraries for knn (like