PCA
In order to simplify our models and improve computational
efficiency, we utilised Principal Component Analysis to convert the
three input features (number of producers, budget, and highest star
revenue) into two features. This method was chosen over feature
selection to capture more of the original variance in the same
number of features, and thus complexity.
Linear Regression
Linear regression is a simple model to create a line of best fit
through our data points by training on our x features and y labels.
In doing so, we are able to derive a formula to easily determine how
our x features affect our y labels, which allows a person to easily
input what x features they want and get a corresponding y output
quickly. We split our data into training and test data and trained
our model on the training data.
After training the model, We first
determined which of the 6 y labels are the best indicator for
success. A good indicator for a movie’s success would have a lot of
its variance explained by the x features because we want the movie’s
success to be predictable from any given input data. Thus, we used
R^2 score to measure the linear regression models' success. We
applied linear regression on x with each of the y labels to see
which label has the best R^2 score, which turns out to be revenue.
Therefore, we will use revenue as our indicator for a movie’s
success for linear regression.
We then tested our linear regression
model with each of our x features to see how well our x features can
predict revenue. We got R^2 scores of 0.42, 0.49, and 0.11. This
means our x features aren’t predicting revenue very well, especially
the highest star income. The normalized RMSE are 0.29, 0.29, and
0.657, which means the differences between our test labels and
predicted labels are bad for the highest star actor salary but are
ok for the other two.
While linear regression is a simple model that
tells us how much revenue each x feature would produce, its accuracy
and predictability of our labels aren’t very good. Thus, we ought to
resort to a different model.
Random Forest
Random Forests is an ensemble learning method for classification,
regression, and other tasks that operate by constructing a multitude
of decision trees at training time and outputting the class or mean
prediction of the individual trees. A random forest regressor is a
machine learning algorithm that is used to predict continuous
values. The X features included the number of producers, budget, and
the highest star revenues. The data was split into a 9:1 ratio for
training and testing respectively and individual models were trained
with each of imdb ratings, metascore ratings, awards, revenues and
popularity as an output for the X values. Revenue turned out to be
the easiest to predict with a score of 62% which is much higher than
the score yielded by the regression model. This is primarily due to
the continuous nature of the RFRegressor and the revenue data. The
continuous nature of data needed in the Random Forest Regressor was
the reason behind the above results. IMDB scores are relatively
discrete averaging from 0 - 10, while the revenue figure is a
continuous piece of information.
K means clustering on overview vectors
We wanted to give this idea a final shot by using an NLP-based
approach based on the assumption that movies with similar plots will
have similar revenue. First, we parsed movie overviews from our
existing dataset(short descriptions of movies) and split the data
into testing and training data. Then, we converted those overviews
into vectors using the Python library sentence-transformers which
provides an easy-to-use API for making embeddings. Then, we made 30
clusters from these embeddings. These clusters were fairly accurate
and clustered similar movies together (for example - all marvel
movies were grouped together). Then we took the mean of each of the
Y fields in our dataset in each of these clusters to predict the
fields of the testing data. The testing data was classified into one
of these clusters and the fields were predicted by the mean of the
predicted cluster. The lowest NMRSE of this approach turned out to
be around 0.56 for popularity score.