Descriptive and Predictive Analysis of Euroleague
Descriptive and Predictive Analysis of Euroleague
Descriptive and Predictive Analysis of Euroleague
net/publication/339399054
CITATIONS READS
0 69
1 author:
Georgios Giasemidis
University of Reading
24 PUBLICATIONS 158 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Examining the credibility, trustworthiness and veracity of online information (incl. social media, fake news, information provenance and quality) View project
All content following this page was uploaded by Georgios Giasemidis on 23 March 2020.
g.giasemidis@gmail.com, Reading, UK
Abstract
In this study we focus on the prediction of basketball games in the
Euroleague competition using machine learning modelling. The pre-
diction is a binary classification problem, predicting whether a match
finishes 1 (home win) or 2 (away win). Data is collected from the Eu-
roleague’s official website for the seasons 2016–2017, 2017–2018 and
2018–2019, i.e. in the new format era. Features are extracted from
matches’ data and off-the-shelf supervised machine learning techniques
are applied. We calibrate and validate our models. We find that simple
machine learning models give accuracy not greater than 67% on the
test set, worse than some sophisticated benchmark models. Addition-
ally, the importance of this study lies in the “wisdom of the basketball
crowd” and we demonstrate how the predicting power of a collective
group of basketball enthusiasts can outperform machine learning mod-
els discussed in this study. We argue why the accuracy level of this
group of “experts” should be set as the benchmark for future studies in
the prediction of (European) basketball games using machine learning.
1 Introduction
Basketball is changing with fast pace. It is broadly considered that the game
has entered a new era, with a different style of play dominated by three-point
shots. An enjoyable and illustrative overview of the main changes is given in
[4], where the author demonstrates the drastic changes in the game through
graph illustrations of basketball statistics.
Advanced statistics have played a key-role in this development. Beyond
the common statistics, such as shoot percentages, blocks, steals, etc., the in-
troduction of advanced metrics, (such as the “Player Efficiency Rate”, “True
Percentage Rate”, “Usage Percentage”, “Pace factor”, and many more), at-
tempt to quantify “hidden” layers of the game, and measure a player’s or
a team’s performance and efficiency on a wide range of fields. In Layman’s
1
terms, the following exampel is illustrative. A good offensive player, but
bad defender, might score 20 points on average, but concede 15. An average
offensive player, but good defender might score on average 10 points, but
deny 10 points (i.e. 5 good defensive plays), not through blocks or steals, but
through effective personal and team defense. Using traditional basketball
statistics, the former player scores more points but overall is less efficient to
the team.
A major contribution to the field of advanced basketball statistics is
made in [10], where the author “demonstrates how to interpret player and
team performance, highlights general strategies for teams when they’re win-
ning or losing and what aspects should be the focus in either situation.”.
In this book, several advanced metrics are defined and explained. In this
direction, further studies have contributed too, see [8] and [9].
With the assistance of the advanced statistics modern NBA teams have
optimised the franchise’s performance, from acquiring players with great
potential, which is revealed though the advanced metrics, a strategy well-
known as money-ball, to changing the style of the game. A modern example
is the increase in the three-point shooting, a playing strategy also known as
“three is greater than two”.
Despite the huge success of the advanced statistics, these measures are
mostly descriptive. Predictive models started arising for NBA and college
basketball in the past ten years.
The authors in [1] first used machine learning algorithms to predict the
outcome of NBA basketball games. Their dataset spans the seasons 1991-
1992 to 1996-1997. They use standard accumulated team features (e.g.
rebounds, steals, field goals, free throws etc.), including offensive and de-
fensive statistics together with wins and loss, reaching 30 features in total.
Four classifiers were used, linear regression, logistic regression, SVMs and
neural networks. Linear regression achieves the best accuracy, which does
not exceed 70% on average (max 73%) across seasons. The authors observe
that accuracy varies significantly across seasons, with “some seasons appear
to be inherently more difficult to predict”. An interesting aspect of their
study is use of the “NBA experts” prediction benchmark, which achieves
71% accuracy.
In [14], the author trains three machine learning models, linear regres-
sion, maximum likelihood classifier and a multilayer perceptron method, for
predicting the outcome of NBA games. The dataset of the study spans the
seasons 2003–2004 to 2012–2013. The algorithms achieve accuracy 67.89%,
66,81% and 68.44% respectively. The author used a set of eight features and
in some cases PCA boosted the performance of the algorithms.
The authors of [16] use machine learning approaches to predict the out-
come of American college basketball games (NCAAB). These games are
more challenging than NBA games for a number of reasons (less games
per season, less competition between teams, etc.). They use a number of
2
machine learning algorithms, such as decision trees, rule learners, artificial
neural networks, Naive Bayes and Random Forest. Their features are the
four factors and the adjusted efficiencies, see [10, 16], all team-based fea-
tures. Their data-set extends from season 2009 to 2013. The accuracy of
their models varies with the seasons, with Naive Bayes and neural networks
achieving the best performance which does not exceed 74%. An interesting
conclusion of their study is that there is “a glass ceiling of about 74% pre-
dictive accuracy that cannot be exceeded by ML or statistical techniques”, a
point that we also discuss in this study.
In [2], the authors train and validate a number of machine learning al-
gorithms using NBA data from 2011 to 2015. They assess the performance
of the models using 10-fold cross-validation. For each year, they report the
best-performing model, achieving a maximum accuracy of 68.3%. They also
enrich the game-data with players’ injury data, but with no significant accu-
racy improvements. However, a better approach for validating their model
would be to assess it on a hold-out set of data, say the last year. In their
study, different algorithms achieve the best performance in every season,
which does not allow us to draw conclusions or apply it to a new dataset;
how do we know which algorithm is right for the next year?
The authors of [7] focused on two machine learning models, SVM and
hybrid fuzzy-SVM (HFSVM) to predict NBA games. Their data-set is re-
stricted to the regular season 2015-2016, which is split into training and test
sets. Initially, they used 33 team-level features, varying from basic to more
advanced team statistics. After applying a feature selection algorithm, they
concluded to 21 most predictive attributes. The SVM and HFSVM achieve
86.21% and 88.26% average accuracy respectively on 5-fold cross-validation.
Their high accuracy though could be an artefact of the restricted data-set, as
it is applied to a single season, which could be an exceptionally good season
for predictions. A more robust method to test their accuracy would be to
use k-fold cross validation on the training set for parameter tuning and then
validate the accuracy of the model on a hold-out set of games (which was
not part of cross-validation). Otherwise, the model might be over-fitted.
In [11], the authors use deep neural networks to predict the margin of
victory (MoV) and the winner of NBA games. They treat the MoV as a re-
gression model, whereas the game winner is treated as a classification model.
Both models are enhanced with a RNN with time-series of players’ perfor-
mance. Their dataset includes data from 1983. They report an accuracy of
80% on the last season.
Although advanced statistics have been introduced for more than a
decade in the NBA, European basketball is only recently catching up. The
Euroleague 1 organised a student’s competition in 2019 2 , whose aim was
1
The Euroleague is the top-tier European professional basketball club competition.
2
The SACkathon, see http://sackathon.euroleague.net/.
3
“to tell a story through the data visualization tools”.
Despite the oustanding progress on the prediction of NBA games, Eu-
ropean basketball has been ignored in such studies. European basketball
has a different playing style, the duration of the games is shorter and even
some defensive rules are different. Applying models trained on NBA games
to European games cannot be justified.
Predicting Euroleague games has a number of challenges. First, the
Euroleague new format is only a few years old, therefore data is limited
compared to the NBA, where one can use tens of seasons for modelling.
Also, the number of games is much lower, 30 in the first three seasons com-
pared to about 80 games in NBA. Therefore, the volume of data is much
smaller. Secondly, Euroleague teams change every season. Euroleague has
closed contracts with 11 franchises which participate every year, however
the remaining teams are determined through other paths 3 . Hence, Eu-
roleague is not a closed championship like the NBA, teams enter and leave
the competition every year, making it more challenging to model the game
results.
When the current study started, no study existed that predicted Euro-
pean basketball games. During this project, a first attempt was made by
the Greek sport-site sport24.gr, which was giving the probabilities of the
teams winning a Euroleague game, probabilities which were updated during
the game. Their model was called the “Pythagoras formula” 4 . According
to this source, “the algorithm was developed by a team of scientists from the
department of Statistics and Economics of the University of Athens in col-
laboration with basketball professionals. The algorithm is based on complex
mathematical algorithms and a big volume of data”. However, this feature
is no longer available on the website. Also, no performance information is
available about it.
More recent attempts on predicting European basketball games can be
found on Twitter accounts, which specialise in basketball analytics. Partic-
ularly, the account “cm simulations” (@cm_silulations) gives the predic-
tions of Euroleague and Eurocup games each week for the current season
2019-2020. On a recent tweet 5 , they claim that they have achieved an ac-
curacy of 64.2%, for rounds 7 to 24 of this season. However, no details of
the algorithm, the analysis and the methodology have been made public.
In this article, we aim to fill this gap, using modern machine learning
tools in order to predict European basketball game outcomes. Also, we
3
https://www.euroleaguebasketball.net/euroleague-basketball/news/i/
6gt4utknkf9h8ryq/euroleague-basketball-a-licence-clubs-and-img-agree-on-
10-year-joint-venture
4
https://www.sport24.gr/Basket/live-prognwseis-nikhs-sthn-eyrwligka-apo-
to-sport24-gr-kai-thn-pythagoras-formula.5610401.html
5
https://twitter.com/CmSimulations/status/1225901155743674368?s=20, https:
//twitter.com/CmSimulations/status/1226233097055850498?s=20
4
aim to underline the machine-learning framework and pipeline (from data
collection, feature selection, hyper-parameter tuning and testing) for this
task, as previous approaches might have ignored one or more of these steps.
From the machine-learning point of view, this is a binary classification
problem, i.e. an observation must be classified as 1 (home win) or 2 (away
win). For our analysis we focus on the Euroleague championship in the
modern format era covering three seasons, 2016-2017, 2017-2018 and 2018-
2019. The reason we focus on the Euroleague is entirely personal, due to
the experience and familiarity of the authors with the European basketball.
The reason we focus on the latest three seasons is that prior to 2016, the
championship consisted of several phases in which teams were split in several
groups and not all teams played against each other. In the modern format,
there is a single table, where all teams play against each other. This allows
for more robust results.
We should emphasize that the aim of the paper is to extend and advance
the knowledge of the machine learning and statistics in basketball, no-one
should use it for betting purposes.
This article is organised as follows. In Section 2, the data-set, its size,
features, etc., is described, whereas in Section 3 a descriptive analysis of the
data-set is presented. Section 4 focuses on the machine-learning predictive
modelling and explains the calibration and validation processes, while it also
discusses further insights such as the “wisdom of the crowd”. We summarise
and conclude in Section 6
2 Data Description
The data is collected from the Euroleague’s official web-site 6 using scraping
methods and tools, such as the Beautiful Soup package 7 in Python. The
code for data extraction is available on Github 8 . The data collection data
focuses on the regular seasons only.
5
Season results data files include game-level results, i.e. each row corre-
spond to a game. The data file stores the round number, date, home and
away teams and their scores.
Season standings data files contains the standings with the total points,
number of wins and losses, total offense, defense and score difference at the
end of each round.
3 Descriptive Analysis
In this section, we perform a descriptive analysis of the data, understanding
some key aspects of the European basketball in the new format era, i.e. the
seasons 2016 - 2017, 2017 - 2018 and 2018 - 2019. For simplicity, we refer
to each season using the end year of the season, e.g. 2016 - 2017 is referred
to as season 2017 thereafter.
In Figure 1, we plot the distribution of the scores for the Home and
Away teams for each of the three first seasons of the modern era. We
observe that Home team distribution is shifted to higher values than the
Away team distributions. Also the latter are wider for the season 2017 and
2018. Median and 75th quantile values for the Home Team distributions
increase from 2017 to 2019, i.e. Home teams tend to score more.
In Figure 2 the Home Team Score distributions are plotted for wins
(blue) and losses (red). The Win distributions are shifted to higher values
in recent seasons, i.e. Home teams score more points on average each year in
victories, whereas in losses the median score remains constant. Home Team
victories are achieved when the Home team score is around 85 points, where
in losses their median score is 76 points.
A similar plot, but for the Away Teams is shown in Figure 3. Same
conclusions as before can be drawn.
Finally, in Figure 4 the distribution of points difference for each season
for Home and Away wins respectively. The distribution of the score dif-
ference for the Home wins remains unchanged across the years, 50% (the
median) of the Home wins are determined with less than 9 points difference,
whereas 25% (the first quartile) of the Home wins the game difference is 5
points or less. For Away wins, the distribution of differences is shifted to
lower values, with 50% of the Away wins end with 8 points difference or less,
and 25% of the Away wins end with 4 points difference or less. In Layman’s
term, one could say that is harder to win on the road.
We summarise, a few more statics in Table 1. We notice that at least
63% of the games end in Home win every year. The average Home Score
has an increasing trend, same as the average Home Score of the Home wins.
However, the Away scores fluctuate for seasons 2017 - 2019.
It should be emphasised that these trends and patterns across the years
are very preliminary, as there are only three regular seasons completed so
6
Figure 1: Box plot of the score distributions for each season for the home
and away teams.
7
Figure 2: Box plot of the Home Team score distributions for wins (1) and
losses (2).
Figure 3: Box plot of the Away Team score distributions for wins (1) and
losses (2).
8
Figure 4: Box plot of the (absolute value) score difference distributions for
home (1) and away (2) wins.
far, and no statistically significant conclusions can be made for trends across
the seasons. One conclusion that seems to arise is that Home court is an
actual advantage as it has a biggest share in wins and also teams tend to
score more, and hence win, when playing at Home.
9
Figure 5: Probability of winning when a team scores certain points.
4 Predictive Modelling
In this section, we formulate the problem and discuss the methodology, the
feature selection, calibration and testing phases.
4.1 Methodology
From the machine-learning point of view, the prediction of the outcome of
basketball games is a binary classification problem, one needs to classify
whether a game ends as 1 (home win) or 2 (away win).
Second, we need to define the design matrix of the problem, i.e. the
observations and their features. Here, we experiment with two approaches,
match-level and team-level predictions, elaborated in the next subsections.
• Position in the table, prior the game, of the home and away team
respectively.
• The average offense of the season’s matches, prior the game, of the
home and away team respectively.
• The average defense of the season’s matches, prior the game, of the
home and away team respectively.
10
• The average difference between the offense and defense of the season’s
matches, prior the game, of the home and away team respectively.
• The form, defined as the fraction of the past five games won, of the
home and away team respectively.
• Home flag, an indicator whether the team play at home (1) or away
(0).
• The average offense of the season’s matches of the team prior the game.
• The average defense of the season’s matches of the team prior the
game.
• The average difference between the offense and defense of the season’s
matches of the team prior the game.
• The final-four flag, a binary variable indicating whether the team qual-
ified to the final-four of the previous year.
11
Now, we have seven features for each observation (i.e. team), but we also
doubled the number of observations compared to the match-level approach.
The machine-learning model predicts the probability of a team to win, and
these probabilities are combined to predict the outcome of a game.
As mentioned before, these features can be expanded to include percent-
age shootings, steals, etc. We leave this for future work.
For the remaining of the analysis, we split the data into two sub-sets,
the 2017, 2018 seasons for hyper-parameter calibration, feature selection
and training, and the final season 2019 for testing. Also, all features are
normalised to the interval [0, 1], so that biases due to magnitude are removed.
4.1.3 Classifiers
The binary classification problem is a well-studied problem in the machine-
learning literature and numerous algorithms have been proposed and devel-
oped [6]. Here, we experiment with the following list of the off-the-shelves
algorithms that are available in the scikit-learn Python library 9 [12]. The
reason we use these algorithms is two-fold; (i) we do not want to re-invent
the wheel, we use well-established algorithms (ii) the scikit-learn library has
been developed and maintained at high-standards by the machine-learning
community, constituting an established tool for the field.
The classifiers are:
• Logistic Regression (LR)
• Support Vector Machines (SVM) with linear and RBF kernels
• Decision Tree (DT)
• Random Forest (RF)
• Naive Bayes (NB)
• Gradient Boosting (GB)
• k-Nearest Neighbours (kNN)
• Discriminant Analysis (DA)
• AdaBoost (Ada)
4.2 Calibration
The above classifiers have hyper-parameters, which we tune using 5-fold
cross-validation and grid-search on the training set. Although some algo-
rithms have more than one hyper-parameters, in the majority of the classi-
fiers, we limit ourselves to tuning only a few parameters in order to speed
the computations. These hyper-parameters are:
9
https://scikit-learn.org/stable/
12
Figure 6: Accuracy (blue) and weighted accuracy (red) scores of 5-fold cross-
validation at the match-level classification.
• The regularisation strength and the width of the RBF kernel for the
SVM-rbf
13
Figure 7: Accuracy (blue) and weighted accuracy (red) scores of 5-fold cross-
validation at the team-level classification.
14
Figure 8: Ranking (1 most, 12 lest informative) of features according to the
ANOVA, mutual information (“MI”) and Chi-square (“Chi2”) filter meth-
ods. The “x” and “y” suffixes refer to the features of the Home and Away
team respectively.
15
Figure 10: Accuracy and weighted accuracy for increasing number of prin-
cipal components.
4.3.2 PCA
Principal Component Analysis (PCA) is a dimensional reduction of the fea-
ture space method, see [6] for further details. We run the PCA for increasing
number of components, from 1 to the maximum number of features and as-
sess the number of components using the Ada model. In addition, at each
value, grid-search finds the optimal hyper-parameter (the number of estima-
tors) and optimal model is assessed 11 .
The best accuracy and weighted-accuracy scores for different number of
components are plotted in Figure 10. First, we observe that the model’s per-
formance peaks at three components, which capture most of the variance. As
more components are added, noise is added and the performance decreases.
Second, even at peak performance the accuracy and weighted accuracy do
not exceed those of the Ada model with the originals features. Hence, we
discard PCA as a potential method for feature reduction/selection.
11
The reason we re-run the grid-search is that the hyper-parameter(s) found in the
previous section is optimal to the original feature-set. PCA transforms the features and
hence a new hyper-parameter might be optimal.
16
4.3.3 Wrapper Methods
Wrapper methods scan combinations of features and assess their perfor-
mance using a classification algorithm and select the best feature (sub-)set
that maximises the performance score (in a cross-validation fashion). Hence,
they depend on the classification method.
Since the number of features in our study is relatively small (12), we are
able to scan all possible combinations of features subsets (4, 095 in total).
As we cannot find the optimal hyper-parameters for each subset of features
(the search space becomes huge), we proceed in a two-step iterative process.
First, we use the best pair of hyper-parameters of the “Ada2” algorithm12
to scan all the combinations of features. Then, we select the combination of
features which outperforms the others. In the second step, we re-train the
algorithm to find a new pair of hyper-parameters that might be better for
the selected feature subset.
In first step, we sort the different combinations of features by their per-
formance and plot the accuracy and weighted accuracy of the top ten combi-
nation in Figure 11. We observe that the two sub-sets of features are in the
top two feature sub-set both in accuracy and weighted accuracy. We select
these two feature sub-sets for further evaluation, hyper-parameter tuning,
final training and testing. These feature tests are:
Having selected these two sets of features, we proceed to the step two
of the iterative process and re-calibrate their hyper-parameters. At the end
of the two-step iterative process, we identify the following subset of features
with their optimal hyper-parameters:
• Model 1: Ada2 with 141 estimators and 0.7 learning rate achieving
0.7498 accuracy and 0.7222 weighted accuracy.
• Model 2: Ada2 with 115 estimators and 0.7 learning rate, achieving
0.7375 accuracy and 0.7066 weighted accuracy.
17
(a) Accuracy (b) Weighted Accuracy
Figure 11: Performance scores of the top-10 sub-sets of features via the wrap-
per method of feature selection. The x-axis indicates the index (zero-based)
of the feature in the following list [’Position Home’, ’Position Away’, ’Offence
Home’, ’Offence Away’, ’Defence Home’, ’Defence Away’, ’Form Home’,
’Form Away’, ’Difference Home’, ’Difference Away’, ’Home F4’, ’Away F4’],
see also Section 4.1.1
4.4 Validation
In this section, we use the models (i.e. features and hyper-parameters) se-
lected in the previous section for validation in the season 2018-2019. For
comparison, we also include the Ada2 model with all features (without fea-
ture selection) as “Model 3”. At each game round, we train the models
given all the available data before that round. For example, to predict the
results of round 8, we use all data available from seasons 2017, 2018 and
the rounds 2 to 7 from season 2019. We ignore round 1 in all seasons, as
no information (i.e. features) is still available for that round. 13 Then we
predict the results of the 8 games of that round, we store the results and
proceed to the next round.
We benchmark the models against three simple models. These are:
18
Accuracy Weighted Accuracy
Model 1 0.6595 0.6096
Model 2 0.6595 0.6211
Model 3 0.6681 0.6306
Benchmark 1 0.6509 0.5000
Benchmark 2 0.7198 0.6446
Benchmark 3 0.6810 0.7035
Table 2: Accuracy and weighted accuracy of the three models and three
benchmarks.
that the models 1 and 2 resulting from feature selection perform worse than
model 3 (all features are present). This implies that the models 1 and 2 have
been over-fitted and no feature selection was required at this stage as the
number of features is still relatively small. This is also in agreement with
the filter methods feature selection. The performance of benchmark 2 is a
special case, as the season 2018-2019 the teams that qualified to the Final-4
of the previous season (2017-2018) continued their good basketball perfor-
mance. However, historically, this is not always the case and it is expected
that this benchmark not to be robust for other seasons.
We focus on “Model 2” and plot the number of correct games in every
round of the season 2018-2019 in Figure 12, and the model’s accuracy per
round in 13. From these Figures, we observe that the model finds perfect
accuracy in rounds 20 and 23, whereas it achieves 7/8 in four other rounds.
With the exception of 4 rounds the model always predicts at least half of
the games correctly. We manually inspected round 11, where the model
has its lower accuracy, and there were 4 games that a basketball expert
would consider “unexpected”, a factor that might contribute to the poor
performance of the model in that round.
In Figure 13 we also plot the trend of the accuracy, which is positive,
and indicates that as the seasons progresses, the teams become more stable
and the model more accurate.
19
Figure 12: Number of correct games per round
20
Accuracy Weighted Accuracy
Model 1 0.6607 0.6113
Model 2 0.6563 0.6199
Model 3 0.6696 0.6331
Benchmark 1 0.6518 0.5000
Benchmark 2 0.7188 0.6449
Benchmark 3 0.6786 0.7027
Majority Vote of the Members 0.7321 0.6811
Table 3: Accuracy and weighted accuracy of the three models, three bench-
marks and the forum results.
21
Also, proper validation of the models on a hold-out set and their bench-
marking had been omitted in some of the previous studies (most of them
validated their models using k-fold cross validation).
Our model achieves 75% accuracy using 5-fold cross validation. However,
this is not the complete picture. The model was properly validated on a hold-
out set, the season 2018–2019, achieving accuracy 66.8%. This indicates
that either the models were over-fitted during k-fold cross validation or the
season 2018–2019 is exceptionally difficult to predict. However, the success
of simple benchmarks shows that over-fitting is more likely to be the case.
Over-fitting during the training phase (including feature selection and hyper-
parameter tuning) is always a risk in machine learning. One lesson taken is
that k-fold cross validation is not always an informative and conclusive way
to validate a model.
We also compared our results to the collective predictions of a group of
basketball enthusiasts. The collective predictive power of that group out-
performs any model (machine learning or benchmark) in this study. We are
intrigued by this result. We believe that any machine learning model to be
considered successful should outperform the human predicting capabilities
(either individual or collective). For this reason, we set the accuracy of 73%
as the baseline for accuracy of Euroleague basketball games. This is also in
agreement with [16], in which the authors found that all machine learning
models had a predictive accuracy bounded by 74% (althouth this was for
NBA games). Future models for basketball predictions should aim to break
this threshold.
22
This study is neither a final solution nor the end-story. In contrast, it
lays the methodology and best-practices for further exploring the question
of predictions of game outcomes. We will continue re-train and re-evaluate
our models with the 73% accuracy threshold (the accuracy of the wisdom
basketball crowds) in mind.
References
[1] Matthew Beckler, Hongfei Wang, and Michael Papamichael. NBA
oracle. https://www.mbeckler.org/coursework/2008-2009/10701_
report.pdf, 2009.
[2] Ruogu Fang, Gregory Jean-Baptiste, Xuejiao Liu, and Dionny Santiago.
NBA game prediction based on historical data and injuries. http:
//dionny.github.io/NBAPredictions/website/, 2015.
[4] Kirk Goldsberry. SprawlBall: A Visual Tour of the New Era of the
NBA. Houghton Mifflin Harcourt, Bostom, New York, 2019.
[6] Trevor Hastie, Robert Tibshirani, and Jerome Friedman. The Elements
of Statistical Learning. Springer, New York, USA, 2nd edition, 2009.
[8] Justin Kubatko, Dean Oliver, Kevin Pelton, and Dan T Rosenbaum. A
starting point for analyzing basketball statistics. Journal of Quantita-
tive Analysis in Sports, 3, 2007.
23
[10] Dean Oliver. Basketball On Paper: Rules and Tools for Performance
Analysis. Potomac Books, Inc., Quicksilver Drive, Dulles, VA, USA,
2004.
24