The scatterplot in Figure 4 shows the performance of the models in predicting the ratings. For models with more scattered plots, the variance is high and for plots that are more horizontal, bias is high.
Since most of our models were underfitting, we also tried some ensemble techniques like AdaBoost, Bagging, Randomforest and XGBoost to improve the performance of decision trees and K nearest neighbours.
For classification, we divided the Rating which was a linear variable into buckets of different sizes like 0.5, 0.2, 0.05, 0.01 and 0.005 and performed classic Classification Algorithms. The evaluation metric used was however MSE since our original task was a regression task and converting to a classification task is part of our methodology and not the problem statement.
Predict rating from Book Cover
We first converted the book images to NumPy arrays using the PIL library and did padding to make all the images of the same size (102 X 50 X 3). We normalized the data and converted this to a single array (feature size = 15300) and took it as our input feature set for ANN. We tried different activation functions, layer size and number of layers for our ANN model and our final ANN model had 8 layers with size 10, 30, 50, 100, 40, 30, 20, 10.
We also tried CNN with the normalized image as input with 5 hidden layers. The structure can be seen in Figure 5.