1
$\begingroup$

I am currently using PLS (the set of predictors are quite highly-dimensional) to predict a particular variable, $age$, and I am using Caret's train implementation using the pls method:

modelFit <- train(train$age~.,data=train,method = "pls",tuneLength=100)

The above method does pretty well at predicting, although it does sometimes predict a negative value for $age$, which is nonsensical.

To try to sort this problem, I have tried using $log(age)$ as my dependent variable, then exponentiating to retrieve a non-negative value of $age$. This seems to do ok, but the model does (predictably) exhibit considerable heteroscedasticity, where the error variance increases with $age$. This is because I am training a model on the log scale, and hence a prediction that does reasonably well on this scale will not on the non-logged scale.

I am not sure whether this method is optimal; I can't help but think that training on the logged scale, when what I care about is on the non-logged scale is not idea. In particular, are there any machine learning methods that account for this type of dependent variable naturally? Are these preferential?

Edit: to be clear, I know of models that handle this problem (such as the Tobit model) in econometrics. What I am after here is whether there are machine learning equivalents that handle this. Essentially, are there modifications to PLS or other dimensionality-reduction techniques that prevent non-negative predictions?

Best,

Ben

$\endgroup$
1
$\begingroup$

Take a look at the predictionBounds option in trainControl. You can set a lower (or upper) limit on what the predictions can be

Max

$\endgroup$
0
$\begingroup$

Could the tobit model be what you are looking for?

https://en.wikipedia.org/wiki/Tobit_model

$\endgroup$
1
  • $\begingroup$ Hi, I know the Tobit model, but I don't know whether there are implementations of this with PLS/other-machine-learning-packages. I am looking for this type of information here. $\endgroup$ – ben18785 Aug 31 '15 at 13:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.