If there is a regression problem with data $(x,t)$ with the target values t being between [0, 1], I know we can solve this using one of regression method by minimizing the squared error. But if we had to predict $t$ with one resolution of $0.1$ e.g., it does not matter whether you predict 0.72 or 0.79; predicting 0.7 would be enough, how can I describe a way such that this problem can be formulated as a multi-class classification problem?
2 Answers
$\begingroup$
$\endgroup$
You can do it like so:
- Map every $t$ in your training set as follows: $\hat{t} = f(t)= \left \lfloor \frac{t}{r} \right \rfloor$, where $\left \lfloor \cdot \right \rfloor$ denotes a flooring operation, and $r$ is the resolution, set to 0.1 in your case. The resulting response variable $\hat{t} \in \{0,1,2,3,4,5,6,7,8,9\}$.
- Encode the numbers $\{0,...,9\}$ into 10 different output classes, e.g. using one-hot encoding. Let's say we use $y$ to denote encoded $\hat{t}$.
- Train your classification model using $(x,y)$ as training data.
Here is some python
code to play with these steps:
import numpy as np
t = np.random.rand(20,) # Generate 20 random values
r = 0.1 # Set resolution to 0.1
t_hat = np.floor( t/r ) # Quantize the values
t_hat = t_hat.astype(np.int) # Convert to integer for better encoding. compatibility
$\begingroup$
$\endgroup$
2
Bin $t$ into ten groups: $0 \leq t_1 \leq 10, 10 < t_2 \leq 20, ...$ (IE if a value is between 0 and 10 inclusive, it gets labeled "1") and predict via a classifier.
-
$\begingroup$ bin? could you elaborate a bit more? $\endgroup$ Commented Apr 19, 2020 at 3:07
-