Low r2 value in prediction of discrete value

I have a data set in which I want to score clients be 3 be 0 be -3. I have a dataset which contains 200000 observations 0: 192000 3: 600 -3: 200 with 160 explanatory variables including 156 numerical variables which are almost dummy and Only 4 categorical variable.

I was trying to do a regression with randomforest and xgboost I find an R2 of 0.002 very low. for my interpretation I said that by dint of having values ​​of class 0 which present very much almost all of the data that the model is predicting values ​​which are close to 0. So looking at the explanation of R2 is how our model is doing better than the average or looking at the predictions I saw that the model predicts values ​​similar to the average of target which is 0.004 so for that I found a very low value. I started to do classification now but I would like to understand what I found as the value of R2 and why in this case I should not do any regression (is that because the dependent variable is discrete or because I have variables which are almost all dummy) .

I would like to have an explanation of the result that I found and if my reasoning is correct.

@mehdd, since your target variable is discrete, this should be modelled as a classification problem.
And what do you mean by a “dummy” variable?
Since the dataset is heavily class imbalanced, the model might have become biased towards the majority class. If the test dataset follows the same distribution, then it would output the majority class label most of the times.

© Copyright 2013-2019 Analytics Vidhya