Bekijk online - Ghent University Library

Geoptimaliseerd voorspellen van voetbaluitslagen met
behulp van collectieve kennis op Twitter en machinaal
leren
Jasper Zuallaert
Promotor: prof. dr. ir. Rik Van de Walle
Begeleiders: ir. Fréderic Godin, ir. Baptist Vandersmissen
Masterproef ingediend tot het behalen van de academische graad van
Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Elektronica en Informatiesystemen
Voorzitter: prof. dr. ir. Jan Van Campenhout
Faculteit Ingenieurswetenschappen en Architectuur
Academiejaar 2013-2014
Geoptimaliseerd voorspellen van voetbaluitslagen met
behulp van collectieve kennis op Twitter en machinaal
leren
Jasper Zuallaert
Promotor: prof. dr. ir. Rik Van de Walle
Begeleiders: ir. Fréderic Godin, ir. Baptist Vandersmissen
Masterproef ingediend tot het behalen van de academische graad van
Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Elektronica en Informatiesystemen
Voorzitter: prof. dr. ir. Jan Van Campenhout
Faculteit Ingenieurswetenschappen en Architectuur
Academiejaar 2013-2014
Voorwoord
Mijn passie voor sport heeft mij gestuurd in het kiezen van een thesisonderwerp. Al
gauw was duidelijk dat we sport en Twitter zouden samenbrengen, en na enkele idee¨en
uitgewisseld te hebben, kwamen we tot het idee om voetbalwedstrijden te gaan voorspellen
met Twitter. De keuze voor de Engelse Premier League sprak ook voor zich, gezien ik
geen enkele speeldag mis en het nieuws daar op de voet volg. Het was dus een bijzonder
fijne ervaring om passie en studie samen te brengen in deze masterproef.
Enkele dankwoordjes bij het schrijven van deze masterproef zijn op hun plaats. Vooraleerst zou ik prof. dr. ir. Rik Van de Walle willen bedanken voor de mogelijkheid om
Twitter te gaan bestuderen op het vlak van voetbalgebeuren. Heel veel dank gaat ook uit
naar mijn schitterende begeleiders, Fr´ederic Godin en Baptist Vandersmissen, die mij op
de voet gevolgd hebben tijdens mijn thesis, en mij ten allen tijde snel van constructieve
feedback voorzien hebben.
Verder wil ik ook mijn familie en vrienden bedanken, die mij tijdens de lange thesisdagen
en -nachten gezelschap gehouden en gesteund hebben, en die mij ook door de rest van
mijn studies geholpen hebben.
Jasper Zuallaert, juni 2014
i
Toelating tot bruikleen
“De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen
van de scriptie te kopi¨eren voor persoonlijk gebruik.
Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met
betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van
resultaten uit deze scriptie.”
Jasper Zuallaert, juni 2014
ii
Geoptimaliseerd voorspellen van voetbaluitslagen met behulp
van collectieve kennis op Twitter en machinaal leren
door
Jasper Zuallaert
Afstudeerwerk ingediend tot het behalen van de graad van
Master in de ingenieurswetenschappen: computerwetenschappen
Academiejaar 2013-2014
Universiteit Gent
Faculteit Ingenieurswetenschappen en Architectuur
Vakgroep Elektronica en informatiesystemen
Voorzitter: prof. dr. ir. J. Van Campenhout
Promotor: prof. dr. ir. R. Van de Walle
Thesisbegeleiders: Fr´ederic Godin, Baptist Vandersmissen
Samenvatting
In deze masterproef onderzoeken we de mogelijkheid om met de collectieve kennis op
Twitter voorspellingen voor voetbalwedstrijden te doen. We bouwen eerst enkele afzonderlijke systemen op, die kijken naar het aantal berichten dat per ploeg geplaatst wordt,
de emoties in de berichten en de voorspellingen die de gebruikers zelf doen. Door middel
van machinaal leren kunnen we met die informatie voorspellingen gaan doen.
We vergelijken met een voorspeller die enkel naar statistieken kijkt, en met een systeem
dat de voorspellingen van de gokkantoren volgt. Eerst kijken we of de resultaten van die
voorspeller ge¨evenaard kunnen worden, en daarna gaan we de twee aanpakken combineren
om een nog beter systeem te verkrijgen.
Trefwoorden: voetbalvoorspellingen, Twitter, machinaal leren
iii
Optimized techniques for predicting football games
using the wisdom of the crowd on Twitter and
machine learning techniques
Jasper Zuallaert
Supervisor(s): prof. dr. ir. Rik Van de Walle, Fr´ederic Godin, Baptist Vandersmissen
Abstract— In this paper, a system is presented to predict the winner of
football games by analysing Twitter and with the use of machine learning.
The system consists of four parts. The first part takes a statistical approach
to predict the games, not yet using Twitter. A second part analyses the tweet
counts for each team before a game. A third part calculates the general
feelings on Twitter before a game, by running a sentiment analysis on each
relevant tweet. A last part analyses the score predictions of the Twitter
users themselves. The performance of the first and fourth system were very
pleasing, so we combined them into an even better system. The combined
system was compared to an approach following the bookmakers’ odds. The
combined system was able to slightly outperform the bookies.
Keywords—Football predictions, Twitter, machine learning
I. I NTRODUCTION
LL over the globe, gambling and betting websites are very
popular. An incredible amount of money is spent gambling each year. In Great Britain alone we’re talking about more
than five billion pounds a year. Football embodies a big part of
that amount. Thus, constructing an efficient football prediction
mechanism can be a lucrative but also a challenging task.
The automatic prediction of football games nowadays almost
exclusively makes use of statistics. This approach includes the
position in the ranking, the amount of goals scored or conceded,
... Complicated systems can also include individual player performances or injuries. In this paper, social media is introduced
to football predictions. With a few different approaches, we tried
to make predictions based on Twitter talk, and to combine them
into an even better system.
Twitter was an easy choice, as it has a very open community,
where short messages are posted. That’s what makes it easier to
get to the core of what people are trying to say. The community
is also very vivid when it comes to football. For instance, Arsenal has had periods this season where the amount of Twitter
messages sometimes rose above one million in one week.
A
II. R ELATED W ORK
There has been some research where Twitter is indeed used as
an information source to predict certain events. In [1] the possibility of predicting republican pre-elections in 2011 is studied.
The study learns us that one could claim that Twitter talk and the
outcome of the elections are correlated, but [2] tells us we should
take the results with a pinch of salt, as there are many more factors that should be taken into account. A more succesful study
is executed in [3], where the stock market is predicted by analyzing the general mood on Twitter. Automatic crime prediction
is performed in [4], also by analyzing the moods on Twitter.
The study that is closest to this paper is done in [5]. Here, the
authors also try to use Twitter in order to predict the outcome
of American football games. The prediction percentage of the
outcome of the games however was not improved by using Twitter. However, they did manage to boost their predictions for the
point spread and the upper bound for the total amount of points.
This boost was achieved by combining the statistical approach
and the tweet counts of the teams involved.
Most of these studies predict certain events based on Twitter
in a similar fashion. They all use machine learning techniques,
where a certain amount of data is used as to study the correlation
between the Twitter information and the outcome of the event
(“training set”), and another part of the data is used to evaluate
the system (“testing set”). The information that is extracted from
Twitter is the amount of tweets that is posted about each party,
and the mood amongst the users. That mood is calculated by
sentiment analysis”.
III. M ETHODOLOGY
The football games are predicted separately by a few individual systems. After evaluation of the systems, a combination
of the best ones is made in order to improve the performance
even more. First, the individual systems are described. Each
of these systems produces some information (“attributes”) for
each game. Machine learning techniques are then used to build
a model that is able to predict other football games, based on
new information. The choice of these techniques was made by
reading related work and experimenting with the most widely
used techniques. We chose Support Vector Machines, Logistic
Regression and Naive Bayes.
A. Statistical approach
The first approach uses the statistics before a game. Twitter
is not yet involved here. For each game the ranking, average
points per game, average goals for/against per game, ... of both
teams are listed.
B. Counting tweets
In this approach, we look at the amount of tweets that are
placed for each team. We count all the tweets that include the
official hashtag of a certain team. For both teams in a game, we
look at the average amount of tweets posted (containing their
hashtag) per day, since the last game. Based on the comparison
of both averages, predictions are made.
C. Sentiment analysis
In this third approach, we take a look at the general mood
for both teams before the game. In order to do so, we want to
divide all the tweets into seven classes of emotion: neutral (or
irrelevant), positive, negative, doubtful, confident, encouraging
and nervous. We build a model that is able to classify each tweet
into one of these classes. To do so, we manually annotated more
than three thousand tweets, and by using machine learning tools
that then construct the model for our needs.
We classify each tweet in the last 24 hours before a game.
Based on all the tweets before the game, we can calculate the
average sentiment score ratio for each class. Based on those
ratios for each team, a prediction of the game can be made.
D. Prediction analysis
A fourth and final individual approach consists of searching
the tweets for predictions that are made by the users themselves.
In the last 24 hours before a game, the tweets that contain scores
are filtered, and averages are made for neutral and biased (home
or away) user predictions. Biased user predictions are the ones
that contain only one mention of a team. Based on the average
scores for each type of user prediction, the outcome of the game
is predicted.
E. Combining the individual systems
Next, three types of methods to combine the individual system are discussed.
A first type combines the attributes of the individual systems.
A second type predicts the games using the individual systems, and then issues majority voting in order to choose which
prediction is chosen. A similar voting algorithm is to look at the
probability that each system gives to its prediction. From those
probabilities, the highest one is chosen.
A third and last type also predicts the games using the systems
individually, and then constructs new information attributes by
listing the predictions (and probabilities) of the systems. On
these attributes, machine learning is again executed, so the
model can learn from what the systems predict individually.
IV. E VALUATION
The evaluation is done over two hundred games in the English Premier League season 2013-2014. We evaluate using a
chronological model, which is described in IV-A. Next, we include some basic approaches to which we compare our systems.
A. Test setup
The games for which we have gathered tweets run from match
days 10 to 24, and match days 29 to 34 (including one match day
for postponed games), totalling two hundred games. The first
hundred games are exclusively used for training our systems.
The remaining games are split up into two groups: from match
day 20 to 24 and from match day 29 to 34 (both fifty games).
Evaluation is done seperately for both groups.
Evaluation is based on a chronological model. This implies
that all information used to predict a game, is available before
the start of the game. Of course we need to make a choice of
which attributes we find valuable and which we should ignore.
System
Home advantage
Lawro’s Pred.
bookmakers
statistics
tweetcount
sentiment
predictions
combined
md 20-24
0.48
0.62
0.66
0.58
0.48
0.50
0.58
0.66
md 29-34
0.54
0.58
0.68
0.70
0.52
0.56
0.68
0.70
md 20-24,29-34
0.51
0.60
0.67
0.64
0.50
0.53
0.63
0.68
TABLE I
T HE CORRECTNESS PERCENTAGES OF THE MOST IMPORTANT SYSTEMS
( MD = MATCH DAY )
To make that decision, for each group of games we do a seperate
calculation. We only do this once for each group, as it’s a computationally intensive task. We try each attribute combination
with the games that are available before each group (resp. a hundred and a hundred and fifty), and run 10-fold cross-validation
to find out which combination reaches the highest correctness
percentages.
After finding out which attribute combinations should work
best, we approach each match day seperately. With each match
day, we have a few more games at our disposal. With the games
available (100 for the first game, 110 for the second game, ...),
we calculate the best classifier (type and parameters) by running
10-fold cross-validation. Next, the classifier is trained on the
games that are available, and finally we make a prediction for
each of the (most of the time) ten games of the match day.
B. Comparison baselines
A few simple baseline systems with which we compare our
systems, are listed below.
• Simply letting the home team win the game.
• Expert predictions: each match day, Mark Lawrenson, who
is an important pundit at the BBC, does a prediction contest
against a celebrity. His predictions can be used as an “expert
system” baseline to compare with.
• The odds of more than fifty bookmakers ahead of each game
are gathered. Next, the outcome with the highest probability
according to the odds is predicted.
V. R ESULTS
The results of the baseline approaches, and those of the most
important classifiers of each individual or combined system, are
given in Table I.
It’s clear to see that the statistics (64%) and predictions (63%)
outperform our other individual systems (50% and 53%). We
choose to combine these two approaches, and we can see it outperforms the separate systems considerably (68%). The bookmakers’ results are slightly outperformed as well.
It’s notable that the first series of games are a lot harder to
predict than the second series, as all approaches but one have a
lower percentage for the first series. This can partly be explained
by the fact that there are twice as many draws in the second
series than in the first. Draws are never predicted by succesful
predictors, as they’re too rare and too accidental. We conclude
that results in a football season can be very varying, and that we
need a bigger dataset for a more general analysis.
When we would have used our combined system to bet on the
two series of games at the bookmakers, we would have made a
profit of almost 30%, whereas following the bookmakers or the
expert predictions only offered a profit of 18%. We can conclude
that our system is a succesful one.
VI. C ONCLUSION AND F UTURE W ORK
By constructing a prediction system that uses Twitter as well
as statistics, we found a way to outperform the bookmakers and
expert knowledge on predicting the winner of football games.
By using statistics of each team, and the predictions that are
placed by the Twitter users themselves, we constructed a model
that predicted 68 out of a hundred testing games correctly.
In the future, sentiment analysis should be improved, and
above all, more testing needs to be done with bigger datasets.
We only had Twitter data for two hundred games at our disposal, which corresponds to approximately half a football season. Some of the systems would work better if they had more
data to train on, and the risk of overfitting would be nullified.
Also, the nature of results tends to evolve over the course of a
season. By collecting data over several seasons, testing could be
done on the whole of a season, and a more general conclusion
could be made.
R EFERENCES
[1] L. Shi, N. Agarwal, A. Agrawal, R. Garg, and J. Spoelstra, “Predicting us
primary elections with twitter,” in Proceedings of Social Network and Social Media Analysis: Methods, Models and Applications (NIPS Workshop),
Lake Tahoe, NV, December 7, 2012.
[2] Panagiotis Takis Metaxas, Eni Mustafaraj, and Daniel Gayo-Avello, “How
(not) to predict elections.,” in SocialCom/PASSAT. 2011, pp. 165–171,
IEEE.
[3] J. Bollen, H. Mao, and X. Zeng, “Twitter mood predicts the stock market,”
Journal of Computational Science, vol. 2, no. 1, pp. 1–8, March 2011.
[4] Xiaofeng Wang, Matthew S. Gerber, and Donald E. Brown, “Automatic
crime prediction using events extracted from twitter posts,” in Proceedings of the 5th International Conference on Social Computing, BehavioralCultural Modeling and Prediction, 2012, SBP’12, pp. 231–238.
[5] S. Sinha, C. Dyer, K. Gimpel, and N. A. Smith, “Predicting the nfl using
twitter,” in Proceedings of ECML/PKDD Workshop on Machine Learning
and Data Mining for Sports Analytics, 2013.
Inhoudsopgave
1 Inleiding
1
1.1
Probleemstelling
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Literatuurstudie
2.1
2.2
2.3
2.4
4
Sentimentanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.1.1
Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.1.2
Technisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.3
Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Voorspellingen op basis van Twitter . . . . . . . . . . . . . . . . . . . . . .
6
2.2.1
Verkiezingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2.2
Beursgangen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2.3
Misdaad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.4
Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Sportvoorspellingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3.1
Sportvoorspellingen op basis van statistieken . . . . . . . . . . . . .
9
2.3.2
Sportvoorspellingen op basis van Twitter . . . . . . . . . . . . . . .
9
Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Gebruikte technieken en software
3.1
Gebruikte technieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1
3.2
11
Machinaal leren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Gebruikte software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1
Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2
SentiStrength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.3
Twokenize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.4
Twitter4J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.5
Overige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
vii
4 Werkwijze voor de verschillende modules
17
4.1
Module 1 - Statistieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2
Module 2 - Aantal berichten . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3
Module 3 - Sentimentanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.1
Wegfilteren van irrelevante Twitterberichten . . . . . . . . . . . . . 19
4.3.2
Annoteren van Twitterberichten . . . . . . . . . . . . . . . . . . . . 24
4.3.3
Classificeren van Twitterberichten . . . . . . . . . . . . . . . . . . . 26
4.3.4
Het voorspellen van wedstrijden a.d.h.v. de sentimentscores . . . . 27
4.4
Module 4 - Voorspellingsanalyse . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5
Combineren van de verschillende modules . . . . . . . . . . . . . . . . . . . 32
4.6
4.5.1
Type A: Een nieuwe vector opbouwen door vectoren van individuele
systemen samen te voegen . . . . . . . . . . . . . . . . . . . . . . . 32
4.5.2
Type B: Meerderheidsstemming en aanverwanten . . . . . . . . . . 32
4.5.3
Type C: Een nieuwe vector opbouwen a.d.h.v. de voorspellingen
per module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Evaluatie
5.1
5.2
5.3
De twee evaluatiemodellen . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.1
Het chronologisch model . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1.2
Niet-chronologisch model . . . . . . . . . . . . . . . . . . . . . . . . 40
5.1.3
Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Basisvoorspellingssystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2.1
De thuisploeg steeds laten winnen . . . . . . . . . . . . . . . . . . . 41
5.2.2
Expertvoorspellingen . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.3
Voorspellingen op basis van de cijfers van gokkantoren . . . . . . . 42
5.2.4
Discussie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Module 1 - Statistieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.1
5.4
5.5
37
Discussie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Module 2 - Aantal berichten . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.1
Fluctuaties in aantallen over een langere periode . . . . . . . . . . . 44
5.4.2
Verdeling van de berichtenaantallen over de verschillende ploegen . 45
5.4.3
De evolutie naar het eind van het seizoen toe . . . . . . . . . . . . . 47
5.4.4
Het voorspellen van de wedstrijden . . . . . . . . . . . . . . . . . . 47
Module 3 - Sentimentanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.1
Het classificeren van de berichten . . . . . . . . . . . . . . . . . . . 49
5.5.2
Het aanduiden van de ploeg waarover elk bericht gaat . . . . . . . . 50
viii
5.5.3
5.6
5.7
5.8
5.9
Het voorspellen van de wedstrijden . . . . . . . . . . . . . . . . . . 51
Module 4 - Voorspellingsanalyse . . . . . . . . . . . . . . . . . . . . . . . . 52
5.6.1
Het correct ontleden van de Twitterberichten . . . . . . . . . . . . 52
5.6.2
De voorspellingen die de Twittergebruikers zelf doen . . . . . . . . 52
5.6.3
Het voorspellen van de wedstrijden . . . . . . . . . . . . . . . . . . 53
5.6.4
Discussie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Gecombineerde modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.7.1
Een overzicht van de individuele modules . . . . . . . . . . . . . . . 54
5.7.2
Twee verschillende combinaties van vectoren . . . . . . . . . . . . . 55
5.7.3
Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.7.4
Discussie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Verdere analyse van de belangrijkste systemen . . . . . . . . . . . . . . . . 57
5.8.1
Een vergelijking per speeldag . . . . . . . . . . . . . . . . . . . . . 57
5.8.2
De voorspellingen waar nog fouten gemaakt worden . . . . . . . . . 58
5.8.3
Een vergelijking met de gokkantoren . . . . . . . . . . . . . . . . . 61
Overzicht van de belangrijkste resultaten . . . . . . . . . . . . . . . . . . . 62
6 Besluit en toekomstig werk
63
6.1
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.2
Toepasbaarheid op het WK . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3
Toekomstig werk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Bibliografie
69
ix
Gebruikte afkortingen
CL
csv
EK
EPL
FA Cup
GUI
NFL
NYG
ML
sd
SRL
SVM
tf-idf
WK
Champions League
Comma-separated values
Europees kampioenschap
English Premier League
Football Association Cup
Graphical User Interface
National Football League
New York Giants
Machinaal Leren
speeldag
Semantic Role Labeling
Support Vector Machine
term frequency - inverse domain frequency
Wereldkampioenschap
x
Hoofdstuk 1
Inleiding
1.1
Probleemstelling
E´en van de bekendste online sociale netwerken ter wereld is Twitter. Gebruikers plaatsen
daar korte berichtjes (“tweets”), die dan gelezen worden door volgers. Sinds de oprichting
in 2006 heeft Twitter ondertussen de wereld veroverd, en valt er heel veel informatie en
opinies mee te verzamelen over politiek, evenementen, enz.
Twitter is ook een medium dat kan helpen om voorspellingen te doen. Er is al heel wat
onderzoek gedaan naar het al dan niet effectief kunnen voorspellen van verkiezingsresultaten ([8, 20, 15]) en beurscijfers ([4]). In deze masterproef maken wij de brug naar
sportevenementen. Meerbepaald gaan we de winnaars van voetbalwedstrijden voorspellen.
Voetbal is namelijk met 265 miljoen beoefenaars nog steeds de populairste sport ter wereld
[12], en het wordt dan ook uitgebreid besproken op Twitter. Zowel voor, tijdens als na
de wedstrijden geven gebruikers zowel algemene informatie als hun ongezouten mening
over spelers, ploegen en gebeurtenissen. Het geheel van die Twitterberichten vormt een
haast onuitputtelijke bron aan informatie die verder strekt dan louter een opsomming van
feiten.
Twitter is het ideale medium om voetbalwedstrijden mee te gaan voorspellen, gezien het
grote aantal berichten dat over voetbal geplaatst wordt. Zo werd Arsenal (meerbepaald
de termen “Arsenal”, “#gunners” en “#afc”) bijvoorbeeld ruim 700 000 keer vermeld
in de week van vier tot negen november 2013 (inclusief een Europese wedstrijd tegen
Dortmund), en werden er een dag later, waar een wedstrijd tegen Man Utd plaatsvond,
maar liefst nog eens 490 000 vermeldingen opgetekend. De beperktheid van expressieruimte (140 tekens) geeft ook de mogelijkheid om puur de kern van de meningen van alle
verschillende gebruikers in achting te nemen.
1
Om voetbalwedstrijden te voorspellen wordt vandaag vooral gekeken naar prestaties en
statistieken van beide betrokken ploegen in het verleden. Voorbeelden daarvan zijn het
aantal behaalde punten in de competitie, het aantal gemaakte goals, de prestaties van
individuele spelers in de voorbije wedstrijden of blessures. Verscheidene elementen bij een
voetbalwedstrijd zitten echter niet meteen vervat in statistieken, zoals de onrust in een
spelersgroep, de zenuwen voorafgaand aan een erg belangrijke wedstrijd, de overmatige
zelfzekerheid die kan heersen bij een topploeg, enz. Met sociale media vinden we een
manier om die ontbrekende informatie in te vullen.
Wanneer we succesvolle voorspellingen kunnen doen, is de link naar gokkantoren snel
gelegd. Websites voor gokken en wedden zijn bijzonder populair. In Groot-Brittanni¨e
werd van april 2011 tot maart 2012 maar liefst 6,8 miljard euro ingezet op goksites [6].
Ook voetbalwedstrijden hebben hun aandeel in die omzet. Een hoog correctheidspercentage bij het voorspellen van voetbalwedstrijden kan dus zeer lucratief zijn, zowel voor de
gokkantoren als voor de gokkers. Doorgaans gaan de gokkantoren uit van 11/10 kansen;
d.w.z. om geen winst of verlies te maken dient de speler elf keer te winnen en tien keer te
verliezen[1]. Wanneer de gokkantoren of gokkers dus een correctheidspercentage van meer
dan 52,4% op de voorspellingen kunnen voorleggen, is het mogelijk om winst te maken.
In deze masterproef wenden we de collectieve kennis op Twitter aan om even goed proberen te doen als de huidige voorspellingsmechanismen (voor voetbalwedstrijden), en om
vervolgens die mechanismen te gaan optimaliseren. Aan de hand van voorspellingen,
opinies en gevoelens op Twitter wordt een vollediger beeld gevormd van wat er allemaal
speelt rond de voetbalwedstrijd in kwestie, zodat een nauwkeurigere voorspelling mogelijk
is.
1.2
Overzicht
We verzamelden de Twitterdata over alle ploegen in de Engelse Premier League gedurende
een deel van het seizoen 2013-2014. In eerste instantie hebben we aan de hand van huidige
voorspellingsmechanismen (die voor het overgrote deel gebaseerd zijn op statistieken) een
voorspeller geconstrueerd, om te kijken welke percentages we daaruit kunnen halen.
We keken welke attributenverzamelingen (Eng. feature sets) de nauwkeurigste voorspellingen kunnen doen. Voorbeelden van zo’n verzamelingen zijn de stand op het moment
in de Premier League, het aantal gescoorde doelpunten, enz. In volgende stappen hebben
we Twitter betrokken.
In een eerste benadering hebben we gekeken over welke teams er het meeste berichten
geplaatst worden, voorafgaand aan een wedstrijd. Verder hebben we de inhoud van berichten ontleed, waarbij we ge¨ınteresseerd zijn in het sentiment dat schuilt in de berichten,
2
of in de voorspellingen die de gebruikers zelf doen.
In deze masterproef volgt na deze korte inleiding eerst een studie van de reeds bestaand
onderzoek in Hoofdstuk 2. Vervolgens lichten we in Hoofdstuk 3 enkele gebruikte technieken en software toe. In Hoofdstuk 4 worden de verschillende werkwijzen gedetailleerd
beschreven, waarna ze in Hoofdstuk 5 ge¨evalueerd worden. We sluiten af met een besluit
in Hoofdstuk 6, en we geven een overzicht van de huidige beperkingen van het systeem
en de mogelijke verbeteringen naar de toekomst toe.
3
Hoofdstuk 2
Literatuurstudie
In deze literatuurstudie onderzoeken we enkele verschillende domeinen, waar deze masterproef verband mee houdt. Ten eerste onderzoeken we een typische techniek die op Twitter
toegepast kan worden, namelijk de sentimentanalyse van berichten. In dit hoofdstuk zal
die sentimentanalyse als een nuttige en veelvuldig gebruikte techniek blijken. Vervolgens
onderzoeken we de mogelijkheid om voorspellingen te doen op het vlak van verkiezingen,
beurscijfers en misdaad. Daarna onderzoeken we de mechanismen om sportuitslagen te
voorspellen, aan de hand van statistieken en aan de hand van Twitter. Statistische voorspellingen zijn al veelvuldig onderzocht, maar Twittervoorspellingen worden maar in ´e´en
paper beschreven [21]. De technieken uit die paper zijn ook erg voor verbetering vatbaar.
Tenslotte besluiten we met een conclusie.
2.1
Sentimentanalyse
In deze sectie bekijken we sentimentanalyse. Bij sentimentanalyse worden emoties in
berichten geanalyseerd. Het is een ingewikkeld proces om te zoeken wat een gebruiker net
bedoelt met een bericht. Daartoe bestaan verschillende mechanismen die een positieve of
negatieve waarde geven aan een bericht of andere emoties toekennen.
2.1.1
Algemeen
Om bepaalde emoties in berichten te onderscheiden hebben we nood aan een techniek
voor sentimentanalyse. Die analyse dient om te achterhalen wat een gebruiker net bedoelt
met een bericht. Het geeft een positieve/negatieve/neutrale ingesteldheid weer naar een
bepaalde entiteit. Een voorbeeld hiervan is “My dog is freaking me out”, waar er een
duidelijk negatieve ingesteldheid is tegenover de hond. We beschrijven eerst de werkwijze
en vervolgens worden enkele voorbeelden aangehaald.
4
De auteurs van [19] en [17] zoeken naar semantische entiteiten, en het positief/negatief
ingesteld zijn tegenover die entiteiten. Doorgaans is dat op Twitter lastiger dan in grotere
teksten, gezien het feit dat de berichten erg kort zijn, en het taalgebruik vaak minder
formeel is.
In [19] staan een aantal manieren beschreven om die semantische entiteiten te verwerken.
Enerzijds zijn er de entiteiten (iPod, iPad, ...) en hoort er bij die entiteiten een semantisch concept (in dit geval bv. Apple-product). Bij het analyseren van alle opgehaalde
berichten worden de entiteiten vervangen door het concept, of wordt het concept gewoon
toegevoegd als extra informatie aan het bericht. Op die manier worden semantische entiteiten verbonden met elkaar. Verder wordt een spamfilter toegepast, die ongewenste
berichten uit de dataset moet verwijderen, zoals anderstalige berichten of retweets. Vervolgens wordt er op spelling gecontroleerd en wordt de tekst genormaliseerd (bv. “hatin’
” wordt “hating”). De berichten krijgen scores aangewezen gebaseerd op woordenlijsten,
die zowel handmatig of automatisch (via machinaal leren, hier a.d.h.v. Naive Bayes) opgesteld zijn. In zulke woordenlijst bevindt zich bijvoorbeeld een deel met positieve woorden
(bv. “awesome”) en negatieve woorden (bv. “terrible”). Woorden kunnen ook nog eens
krachtiger gemaakt worden door adjectieven (“very”) of hoofdlettergebruik.
In [9] worden acht verschillende methoden/systemen vergeleken; Emoticons, SASA, SenticNet, SentiWordNet, SentiStrength, Happiness Index, LIWC en PANAS-t. Het gaat
zowel over gesuperviseerde als niet-gesuperviseerde systemen. Bij sommige systemen is
er niet alleen een positief/neutraal/negatief resultaat voor een bericht, maar ook emoties
als kwaadheid of angst worden in rekening gebracht. Het PANAS-t systeem ondersteunt
bijvoorbeeld elf verschillende stemmingen.
Tussen de resultaten van de verschillende systemen op eenzelfde berichtenverzameling kan
echter nog steeds redelijk wat verschil zitten (tot amper 33% overeenkomstige resultaten).
Het combineren van die methodes kan wel leiden tot betere resultaten. In de paper worden
enkele systemen gecombineerd voor betere resultaten, en dus wordt er enkel naar een
positief, neutraal of negatief sentiment gekeken.
2.1.2
Technisch
De opbouw van het analysesysteem zelf wordt onder andere in [18] en [3] beschreven.
Het sentimentprobleem is ingewikkelder dan de traditionele categorizatieproblemen (vb.
sport/politiek/...), gezien een negatieve zin kan voorkomen zonder een negatief woord
te bevatten (bv. “how could anyone sit through this movie?”). Daarom verkiezen ze
een corpusgebaseerde aanpak, in plaats van woordenlijsten die opgebouwd zijn vanuit de
intu¨ıtie.
Een belangrijke factor in zo’n systeem is het reduceren van de attribuutdimensies (Eng.
5
feature dimensions). Voor elk woord kiezen we namelijk een nieuwe dimensie, en dit kan
voor overfitting zorgen. Overfitting wil zeggen dat we te veel specifieke trainingsinformatie aan het systeem doorgeven, waardoor het voor de trainingsverzameling extreem goede
resultaten zal geven, maar voor algemene gevallen zal falen. De dimensiereductie kan op
verschillende manieren bekomen worden, zoals het schrappen van woorden die minder dan
driemaal voorkomen, het schrappen van stopwoorden (hoewel dit soms slechtere performantie kan geven), of het samenvoegen van woorden met hetzelfde prefix (vb. “fun” en
“funny”).
De drie machinaal-leren-technieken die vergeleken worden zijn Naive Bayes, Maximum
Entropy en Support Vector Machine (afk. SVM). Uit de resultaten blijkt dat de SVM er
bovenuit steekt. Het bleek gunstiger om attribuutaanwezigheid (Eng. feature presence)
dan attribuutfrequentie (Eng. feature frequency) te gebruiken bij het controleren van
tekst (d.w.z. enkel 0 voor afwezig en 1 voor aanwezig gebruiken, en meerdere voorkomens negeren). Verder bleken bigrams (bij unigrams wordt gekeken naar het voorkomen
van ´e´en woord, bij bigrams naar het voorkomen van de exacte opeenvolging van twee
woorden) de prestaties niet te verbeteren, maar dit zou in korte berichten (Twitter) wel
het geval kunnen zijn, omdat we vaak dezelfde woordcombinaties gaan hebben (wegens
voetbalwoordenschat). Tenslotte gaf ook positie- en Part-Of-Speechanalyse geen noemenswaardige prestatieverbetering.
2.1.3
Conclusie
De sentimentanalyse zal in de komende sectie een populair middel blijken om informatie
uit berichten te halen. Wanneer we voetbalploegen als semantisch concept kiezen, kunnen we in de berichten allerhande entiteiten terugvinden die bij dat concept horen. Bij
het concept “Arsenal” horen bijvoorbeeld “Emirates” (stadion), “Gunners” (bijnaam) en
“Arteta” (speler). Het lijkt ook interessant om rekening te houden met meer emoties
dan enkel positief/negatief, zoals bijvoorbeeld spanning (voor belangrijke wedstrijden) of
angst (tegen sterkere tegenstanders).
2.2
Voorspellingen op basis van Twitter
Sociale media zijn al vaak in verband gebracht met het voorspellen van de toekomst.
Hieronder zetten we enkele voorbeelden uit de literatuur uiteen. Het eerste voorbeeld is
het voorspellen van verkiezingen. De vraag of Twitter al dan niet gebruikt kan worden om
verkiezingen te voorspellen is al uitvoerig besproken in de literatuur. Het volgende voorbeeld is het voorspellen van de beursgangen, en het laatste voorbeeld is het voorspellen
van misdaad, waar nog uitgebreidere technieken besproken worden.
6
2.2.1
Verkiezingen
Een veelbesproken domein voor voorspellingen is dat van verkiezingen (meestal in Amerika). In [20] wordt gekeken naar de voorverkiezingen van de republikeinen in september
2011. In een eerste experiment wordt enkel naar het berichtenvolume (Eng. Tweet volume) gekeken (d.w.z. het aantal berichten per tijdseenheid). Die aanpak gaf een correlatie
met de peilingen aan bij amper vier van de zes kandidaten. Ook het selecteren van enkel
positieve commentaren hielp hier niet bij.
Daarom hebben de onderzoekers een aantal attributenverzamelingen opgelijst (zoals het
aantal berichten door offici¨ele accounts, aantal volgers, ...), die aan de hand van een
lineair regressiemodel verwerkt worden. Ook hier waren de resultaten niet goed en moet
de methodologie verbeterd worden.
De auteurs van [15] tonen aan dat gebruikte technieken (indien ze al veelbelovende resultaten voortbrachten) echter niet zomaar hergebruikt kunnen worden. Er moet zeker
rekening gehouden worden met extra factoren, zoals het feit dat sociale-mediadata fundamenteel verschilt van andere data (spam, propaganda, ...).
2.2.2
Beursgangen
De auteurs van [4] voorspellen op een succesvolle manier de verandering van de beurscijfers. De juiste richting (omhoog of omlaag) van de dagelijkse slotkoers wordt met een
nauwkeurigheid van 87,6% voorspeld. Er worden twee aanpakken getest: OpinionFinder
en GPOMS.
Bij OpinionFinder wordt enkel gebruik gemaakt van een analyse aan de hand van een
positief/negatief sentiment. Dit gebeurt aan de hand van een lexicon met sterke positieve,
positieve, negatieve en sterke negatieve woorden. De scores van die woorden worden per
bericht opgeteld.
GPOMS (Google-Profile of Mood States) maakt gebruik van zes verschillende stemmingen
(kalm, alert, zeker, vitaal, vriendelijk, vrolijk). De stemmingen worden toegekend aan
berichten op basis van een lexicon met vooral terugkerende woordgroepen van 4 of 5
woorden (Eng. 4- & 5-grams).
Uit experimenten blijkt dat er een duidelijke respons is van de stemming van Twittergebruikers op gebeurtenissen, zoals in dit geval de presidentsverkiezingen in 2008 en Thanksgiving. Bovendien blijkt dat er een oorzakelijk verband is tussen de Dow Jones Industrial
Average (DJIA) en (enkel) de kalm-index die uit de berichten opgemaakt is.
Het uiteindelijke voorspellen gebeurt via een zelf-organiserend vaag neuraal netwerk (Eng.
Self-Organizing Fuzzy Neural Network), dat geoefend wordt op basis van DJIA-cijfers, en
de stemming van de laatste paar dagen.
7
2.2.3
Misdaad
Een nog iets uitgebreidere sentimentanalyse van Twitterberichten wordt verricht in [23].
Hier proberen de auteurs aan de hand van een aantal thema’s (Eng. topics) per dag de
gebeurtenissen van de volgende dag te voorspellen.
De belangrijkste techniek die gebruikt wordt is Semantic Role Labeling (SRL). Hierbij
worden de zinnen ontleed, en worden onderwerpen, werkwoorden e.d. aangeduid. Op die
manier kunnen twee syntactisch verschillende zinnen met dezelfde semantische betekenis
toch op dezelfde manier benaderd worden (bv. “A belt B” en “B wordt gebeld door
A” hebben semantisch gezien dezelfde waarde, maar ze hebben syntactisch een andere
opbouw).
Verder wordt Latent Dirichlet Allocation (LDA) gebruikt om de berichten semantisch te
ontleden, en zo per dag de besproken thema’s te bepalen. Tenslotte worden aan de hand
van lineaire regressie events (misdaad) gekoppeld aan die thema’s.
SRL lijkt op het eerste zicht een interessante piste om volgen, maar voor deze masterproef
steken er wat problemen de kop op. In [23] en [13] wordt er vooral op nieuwsberichten
geconcentreerd, waar de zinsstructuur nog enigszins duidelijk is. Helaas zijn alledaagse
Twitterberichten doorgaans kort en informeel. In [14] wordt een oplossing gezocht voor
dat probleem door gerelateerde berichten te verzamelen (Eng. clustering).
2.2.4
Conclusie
Uit de verschillende papers valt op dat sentimentanalyse de populairste methode is om
voorspellingen te doen. SRL met clustering lijkt een interessante piste, maar is in deze
masterproef helaas minder nuttig toe te passen. De berichten van verschillende gebruikers
zullen elkaar namelijk heel erg tegenspreken, gezien we supporters van 20 verschillende
ploegen onderzoeken.
2.3
Sportvoorspellingen
In deze masterproef willen we voorspellingen van voetbalwedstrijden doen. We geven eerst
een bespreking van voorspellingen op basis van statistieken. Daar is al veel onderzoek
naar verricht, en worden goede resultaten behaald. Daarnaast is er ook ´e´en paper die
onderzoekt of Twitter kan gebruikt worden bij sportvoorspellingen.
8
2.3.1
Sportvoorspellingen op basis van statistieken
In [11] wordt een expertsysteem uit 1997 vergeleken met enkele hedendaagse machinale
leertechnieken (Eng. Machine Learning, afk. ML). Het expertsysteem omvat twee voetbalseizoenen van Tottenham Hotspur op het eind van de jaren ’90. Het expertsysteem
bestaat uit een aantal wedstrijdfactoren met correlaties tussen, die handmatig werden
opgesteld. Die factoren waren het al dan niet aanwezig zijn van drie sleutelspelers, de
positie van een vierde sleutelspeler, de kwaliteit van de tegenstander (gebaseerd op klassement) en het thuisvoordeel. Op basis van die informatie werden de uitslagen van de
ploeg voorspeld.
Die aanpak werd in 2006 herbekeken en vergeleken met enkele technieken die a.d.h.v.
de statistieken rekenen. Het gaat om vier ML-technieken, namelijk Naive/Data driven
Bayesian learners, MC4 en K-nearest neighbours. Bij de eerste drie technieken is het
mogelijk om een model te construeren, en achteraf na te gaan welke factoren en relaties
het meest doorslaggevend waren in de voorspellingen. Hier wordt dat model dus door de
machine opgebouwd, waar het oorspronkelijke model opgebouwd werd door een expert.
De ML-technieken zijn erg handig wanneer we niet veel kennis hebben over wat er allemaal
speelt bij de voorspelling.
Het expertsysteem behaalde met voorsprong de beste resultaten wanneer de oefendata
eerder beperkt is, en dit lijkt dus de effici¨entste manier om te gaan voorspellen (hoewel het
model na zelfs maar een seizoen al snel gedateerd kan geraken, en dus opnieuw opgebouwd
zal moeten worden).
2.3.2
Sportvoorspellingen op basis van Twitter
Dit is het onderzoek dat het dichtst bij deze masterproef aanleunt. De auteurs van [21]
maken gebruik van Twitter om wedstrijden uit de NFL te voorspellen. De voorspellingen
duidden niet enkel de winnaar aan, maar deden ook voorspellingen op basis van puntenspreiding (Eng. point spread) en de doelpuntengrens (Eng. over/under line). De puntenspreiding betekent dat een van de twee teams een score krijgt toebedeeld op basis van
thuisvoordeel/statistieken/... (dit wordt vastgelegd door de bookmakers). Bijvoorbeeld,
de New York Giants spelen thuis tegen de New York Jets en krijgen een puntspreiding
van -4. Dan zullen de NYG pas op puntenspreiding winnen wanneer ze met minstens 4
punten verschil winnen. De puntengrens is een getal, en er moet dan voorspeld worden
of het puntentotaal van de wedstrijd boven of onder die grens zit.
Er worden een paar soorten attributenverzamelingen gehanteerd. Ten eerste zijn er een
tiental verzamelingen die puur op statistieken gebaseerd zijn. Verder worden unigrammen
uit de Twitterberichten gehaald, en tenslotte wordt ook gebruik gemaakt van het totale
9
Attributensets
Statistisch
Twitter unigrammen
Unigrammen + statistieken
Twitter berichtenaantallen
Ber.aantallen + bep. statistieken
Winnaar Puntenspreiding
65.9*
54.8*
52.3
47.6
50.5
51.9
51.0
55.3
65.9*
57.2*
Puntengrens
51.0*
54.3
44.2
52.4
58.2*
Tabel 2.1: De percentages van de besproken voorspellingsmechanismen; * Hier zijn wel telkens
andere statistische attributenverzamelingen gekozen; voor elke categorie werd het beste resultaat
gekozen
aantal berichten voor elke ploeg gedurende de hele week (en o.a. het verschil met de vorige
week/weken). Aan de hand van logistieke lineaire classificatie worden deze sets omgezet
in voorspellingen.
In Tabel 2.1 staan de belangrijkste resultaten van het onderzoek. We kunnen concluderen
dat Twitter potentieel heeft om sportwedstrijden te voorspellen, maar dan vooral de
bijkomstige informatie (puntenspreiding en puntengrens). De uitwerking om de winnaar
van de wedstrijden aan te duiden staat nog niet op punt.
2.4
Conclusie
In de literatuurstudie zijn we eerst dieper ingegaan op sentimentanalyse in Twitterberichten. Aan de hand van emoties in berichten, en de schommelingen in die emoties en
het aantal berichten kan er waardevolle informatie gehaald worden, die via machinale
leertechnieken omgezet kan worden in voorspellingen. Doorgaans worden gesuperviseerde
technieken toegepast.
Vervolgens hebben we enkele papers besproken die aan de hand van Twitter voorspellingen
doen op het vlak van verkiezingen [20, 15], beurscijfers [4] en misdaadcijfers [23]. In die
papers werd bijna uitsluitend beroep gedaan op sentimentanalyse.
Tenslotte wordt in [21] het onderzoek verricht dat het dichtst bij het onderwerp van deze
masterproef staat. Daar wordt ook getracht om sportwedstrijden te voorspellen aan de
hand van Twitter (eventueel versterkt door statistieken). De resultaten stonden echter
nog niet volledig op punt, gezien er basistechnieken gebruikt werden. De resultaten zijn
dus voor verbetering vatbaar.
10
Hoofdstuk 3
Gebruikte technieken en software
In dit hoofdstuk bespreken we de technieken en de software die voor het onderzoek in
deze masterproef gebruikt zijn. We beginnen met machinaal leren kort toe te lichten, om
vervolgens enkele gebruikte softwarepakketten en programma’s te bespreken.
3.1
3.1.1
Gebruikte technieken
Machinaal leren
Met machinaal leren tracht men een computersysteem zelf conclusies te laten trekken uit
voorbeelddata, om vervolgens nieuwe data te kunnen verwerken. Het redeneervermogen
dat zo opgebouwd wordt, wordt opgeslagen in een model.
Indien we deze technieken willen toepassen op het voorspellen van voetbaluitslagen,
gaat het als volgt. Laat ons een gemakkelijk voorbeeld nemen, namelijk het voorspellen van een wedstrijd op basis van de stand in de competitie. In Tabel 3.1 zijn er
enkele voorbeeldjes van invoerdata terug te vinden. Die invoer bestaat steeds uit eenzelfde aantal attributenwaardes, en een klassewaarde die het resultaat van de wedstrijd
weergeeft. In dit voorbeeld geven we telkens de positie in de stand van de thuis- en
de uitploeg, en de winnaar van de wedstrijd. Wanneer we ons model willen opbouwen
aan de hand van deze data, zal er dus een correlatie gezocht worden tussen de attributen en de uitslag. Een heel eenvoudig voorbeeld van zo een correlatie zou kunnen zijn:
if (thuisP ositie > uitP ositie) then T huiswinst else U itwinst. Voor deze gevallen zouden
we dan zes van de negen wedstrijden correct voorspellen.
Er bestaan vele algoritmes om machinaal leren te verwezenlijken. Een eerste selectie ervan gebeurde op basis van de literatuurstudie. We hebben daarbij een aantal algoritmes
opgelijst die het meest frequent voorkwamen in de literatuur [21, 11, 22]. Vervolgens hebben experimenten met voetbalvoorspellingen aangetoond dat er drie technieken bovenuit
11
Thuisploeg
1
14
10
8
17
11
12
17
18
Uitploeg
3
8
19
18
6
2
20
12
11
Uiteindelijk resultaat
Thuiswinst
Uitwinst
Thuiswinst
Thuiswinst
Gelijkspel
Uitwinst
Thuiswinst
Thuiswinst
Gelijkspel
Tabel 3.1: Voorbeelddata voor het voorspellen van voetbalwedstrijden (respectievelijk de positie
in de stand van de thuisploeg, van de uitploeg, en het resultaat van de wedstrijd)
steken, namelijk Naive Bayes [16], Logistic Regression [16] en Support Vector Machines
(SVM) [5]. We kiezen die drie technieken om mee voort te werken.
3.2
Gebruikte software
In deze sectie bespreken we de softwarepakketten en programma’s die gebruikt werden in
deze masterproef.
3.2.1
Weka
Weka (Waikato Environment for Knowledge Analysis) is een populair softwarepakket dat
een brede waaier aan algoritmen voor data-analyse en voorspellingsmodellen voorziet.
Enerzijds is er de GUI-versie, waar vanuit een grafische user interface alle algoritmes en
technieken opgeroepen kunnen worden, en waar een uitgebreide visuele analyse mogelijk is.
Een voorbeeld van deze GUI is terug te vinden in Figuur 3.1. Anderzijds is er ook de Javaversie, waar vanuit Javacode beroep kan gedaan worden op alle algoritmes, en waarmee
dus automatisering mogelijk wordt. Beide versies zijn gebruikt in deze masterproef. Het
spreekt natuurlijk voor zich dat de uiteindelijke onderzoeksresultaten met de Java-versie
behaald werden.
Structuur van de invoer
Als invoer gaan we aan Weka .csv-bestanden (comma-separated values) meegeven. In een
csv-bestand vinden we voor elke wedstrijd een vector terug. Op basis van de informatie
per vector gaan we dan de correlatie met het resultaat van de wedstrijd onderzoeken. Die
informatie per instantie wordt verdeeld over verschillende attributen. In de hoofding (op
de eerste lijn) wordt duidelijk gemaakt wat elk attribuut voorstelt. Een voorbeeld van een
12
Figuur 3.1: De GUI van WEKA
Figuur 3.2: Een voorbeeld van een enkele vectoren in een csv-bestand
aantal vectoren in een csv-bestand wordt gegeven in Figuur 3.2. Voor onze verschillende
modules later gaan we telkens verschillende types van vectoren aanmaken.
De verzameling vectoren wordt opgedeeld in een trainings- en testverzameling. Op basis
van de trainingsverzameling gaat de machine een model opbouwen, waarmee dan uiteindelijk op de testverzameling ge¨evalueerd wordt. Later wordt besproken hoe het opdelen
van die trainings- en testverzameling verloopt.
Enkele veelgebruikte technieken in Weka
Weka ondersteunt het gebruik van vele technieken die we in deze masterproef gebruikt
hebben, waarvan hier enkelen samengevat staan.
• Filteren: Aan de hand van filters is het mogelijke om bepaalde attributen of instanties te gaan schrappen, wanneer ze (al dan niet) aan bepaalde voorwaarden voldoen.
13
Ook is het mogelijk om de attributen aan te passen. Zo kan een String-attribuut
bijvoorbeeld gesplitst worden per woord, zodat er nieuwe attributen gecreerd worden.
• Attribuutselectie: Het is mogelijk om per attribuut scores te gaan bepalen, bijvoorbeeld op het vlak van informatiegewin voor dat attribuut (Eng. Information
Gain). Vervolgens kunnen dan de beste attributen geselecteerd worden om mee
voort te werken.
• Normalisatie: Weka verzorgt normalisatie van attributen automatisch. De normalisatie wil zeggen dat alle mogelijke invoerswaarden herschaald worden naar een
getal tussen 0 en 1.
• GridSearch: GridSearch is een techniek om effici¨ent optimale parameters voor
een bepaalde classificeerder te zoeken. Er wordt voor twee parameters een bereik
opgegeven, waarna GridSearch een zo goed mogelijk parametercombinatie probeert
te bekomen.
• Kruisvalidatie: Kruisvalidatie (Eng. cross-validation) is een techniek om de trainingsen testverzamelingen op een zo uniform mogelijke manier te bepalen. Bij kruisvalidatie zal elk stukje van de totale dataset eens als testverzameling gebruikt worden,
waar de rest dan telkens als trainingsverzameling geldt (het aantal keren wordt bepaald door een parameter, nl. het aantal iteraties). In Figuur 3.3 wordt het principe
ge¨ıllustreerd. Kruisvalidatie wordt vaak gebruikt in statistieken om de analyse te
veralgemenen naar een meer onafhankelijke dataset (omdat er niet chronologisch
gewerkt wordt, maar alles door elkaar).
• Classificatiedistributies: Verder is het ook mogelijk om de distributie van een
classificatie op te vragen. Dit wil zeggen dat Weka aangeeft welke waarschijnlijkheid
de classificeerder toedient aan elke mogelijke klasse. Zo kan een uitslag voor een
wedstrijd bijvoorbeeld een waarschijnlijkheid hebben op winst van 0.45, op een
gelijkspel van 0.25 en op een verlies van 0.20.
3.2.2
SentiStrength
Voor het classificeren van berichten in sentimentcategorie¨en, hebben we de systemen die
in de literatuur[9] vergeleken werden, gevalueerd. Vervolgens hebben we gekozen voor
SentiStrength, omdat het gratis, toegankelijk, makkelijk in gebruik en naar eigen zeggen
erg accuraat is voor korte sociale-mediaberichten. Wanneer we een bericht ingeven in
SentiStrength krijgen we een positieve score van 1 tot en met 5, en een negatieve score
van -1 tot en met -5, wat het positieve en negatieve sentiment in het bericht uitdrukt.
14
Figuur 3.3: Het principe van kruisvalidatie
3.2.3
Twokenize
Om Twitterberichten te ontleden gebruiken we Twokenize, een Part-of-Speech tagger die
ontwikkeld werd in [7]. Deze software gaat een bericht ontleden in een reeks tokens, die
elk een woord voorstellen, en bijkomende informatie geven over de aard van het woord
(bijvoorbeeld afkorting, werkwoord of hashtag). Uiteindelijk hebben we er alleen gebruik
van gemaakt om de berichten op te delen in woorden (zodat we dus geen rekening meer
hoefden te houden met leestekens), en om hashtags en tags makkelijk aan te duiden.
3.2.4
Twitter4J
We hebben gekozen om voetbalwedstrijden uit de Engelse Premier League te gaan voorspellen op basis van Twitter. Die keuze voor de Premier League spreekt voor zich, omdat
de berichten voor het overgrote deel in het Engels geschreven zijn. Een tweede belangrijke
factor is de grote hoeveelheid aan berichten, gezien de Premier League een van de meest
gevolgde voetbalcompetities ter wereld is.
Voor het ophalen van de berichten zelf, hebben we Twitter4J gebruikt. Dat is een softwarepakket voor Java, waarmee we een constante stream van Twitterberichten konden
binnenhalen op basis van de gewenste hashtags. Elke ploeg in de Premier League heeft
een offici¨ele hashtag, en op basis van die hashtag, de ploegnaam of de offici¨ele bijnaam
worden de berichten geselecteerd.
Het ophalen van de Twitterberichten verliep 24 op 7 en is begonnen op 30 oktober 2013 en
ge¨eindigd op 7 april 2014. Wegens problemen met de server zijn er helaas van 2 februari
t.e.m. 27 februari geen berichten opgehaald. De dagen die we wel hebben, komen overeen
met speeldagen 10 t.e.m. 24, en 29 t.e.m. 33 (en ook nog een extra inhaalspeeldag, 34)
van de competitie. In het totaal bestrijken de berichten exact tweehonderd wedstrijden
in de Premier League.
15
3.2.5
Overige
De software voor deze masterproef werd volledig geschreven in Java, enkele kleine hulpprogramma’s in awk of bash uitgezonderd. Verdere softwarepakketten waarvan gebruik
gemaakt is, zijn TexnicCenter en NetBeans.
16
Hoofdstuk 4
Werkwijze voor de verschillende
modules
In dit hoofdstuk lichten we de vier verschillende manieren toe om voetbalwedstrijden te
voorspellen. In de eerste sectie bouwen we een module aan de hand van enkel statistieken,
om een referentie te hebben voor onze Twittermodules. Die drie modules worden in
de daaropvolgende secties toegelicht. Tenslotte leggen we nog de werkwijzes uit om de
verschillende modules te combineren om nog betere voorspellingssystemen te bekomen.
4.1
Module 1 - Statistieken
De eerste module maakt nog geen gebruik van Twitter. Er wordt enkel afgegaan op de
wedstrijden die vooraf al gespeeld zijn, en de stand in de Premier League op dat moment.
Om alle informatie correct te verzamelen en op te lijsten, worden eerst alle uitslagen
van het huidige seizoen van een website gehaald. Vervolgens wordt per wedstrijddag
een nieuwe competitiestand opgemaakt, die de stand na die wedstrijd weerspiegelt. Op
hetzelfde moment wordt per wedstrijd een vector aangemaakt, met daarin voor zowel de
thuis- als de uitploeg de statistische gegevens bij aanvang van de wedstrijd, alsook het
wedstrijdresultaat.
Voor elke ploeg worden telkens de volgende gegevens berekend en weergegeven:
• De positie in de stand van de ploeg
• Het gemiddeld aantal gemaakte doelpunten per wedstrijd
• Het gemiddeld aantal tegendoelpunten per wedstrijd
• Het gemiddeld aantal behaalde punten per wedstrijd
17
Figuur 4.1: Een voorbeeld van hoe de verschillende types vectoren tot stand komen (Module 1)
• Het gemiddeld aantal behaalde punten per wedstrijd, in de voorbije vijf wedstrijden
(dit geeft de huidige vorm van de ploeg aan)
We hebben twee types vectoren opgesteld om met deze statistische gegevens te werken.
In Figuur 4.1 wordt van elk type een voorbeeld getoond.
• Vector type statA: Hier worden simpelweg voor de thuis- en uitploeg apart de
vorige vijf puntjes weergegeven, met toevoeging van nog ´e´en attribuut, namelijk het
verschil tussen beide ploegen in de stand.
• Vector type statB: Hier wordt voor elk van de vorige vijf puntjes het verschil
tussen de beide ploegen berekend.
4.2
Module 2 - Aantal berichten
Een eerste manier om te voorspellen op basis van Twitter, is door eenvoudigweg naar het
aantal Twitterberichten te kijken die in de aanloop van de wedstrijd geplaatst worden.
Dit gebeurt in Module 2.
Het tellen van de berichten gebeurt op basis van hashtags. Elke ploeg in de Premier
League heeft een offici¨ele hashtag, en enkel berichten die die hashtag bevatten worden
meegeteld. Zo zullen bijvoorbeeld alleen berichten die #afc bevatten bijdragen aan het
totale aantal berichten voor Arsenal.
18
Per wedstrijd lijsten we voor elke ploeg het gemiddelde aantal berichten per dag op, voor
dagen vanaf de laatste wedstrijd, inclusief de dag van de vorige wedstrijd zelf (toelichting
volgt). Gezien de sterkere ploegen vanzelfsprekend grotere aantallen zullen hebben, wordt
er als het ware een rangschikking opgemaakt van ploegen. Om nog meer informatie uit
de aantallen proberen te halen, voegen we ook een percentage toe per ploeg, dat uitdrukt
hoeveel berichten gemiddeld geplaatst werden, ten opzichte van het globale gemiddelde
van de ploeg (dus ten opzichte van het gemiddelde aantal per dag, gemeten vanaf het
begin van het seizoen). Zo willen we het voordeel kunnen geven aan een ploeg waarover
de voorbije dagen opvallend meer gepraat is (bijvoorbeeld omdat er veel over de ploeg
gepraat wordt omdat ze in een uitstekende vorm verkeert). In Figuur 4.2 wordt het
opstellen van vectoren ge¨ıllustreerd.
Een opmerking dient gemaakt te worden over Europees voetbal of bekervoetbal. Gezien op
de dagen van wedstrijden zelf een stuk meer berichten geplaatst wordt, zullen de ploegen
die langer in Europese of bekertornooien hogere aantallen hebben dan ze anders zouden
bereiken. Die wedstrijden worden in onze voorspeller namelijk niet in rekening gebracht.
In het volgende hoofdstuk wordt dit verder ge¨ıllustreerd.
Verder lichten we even de keuze toe om de berichtenaantallen op de dag van de vorige
wedstrijd te includeren. We zien in 4.2 bijvoorbeeld dat het aantal berichten voor Sunderland uitzonderlijk hoog ligt op de dag van de wedstrijd tegen Man City, omdat ze de
wedstrijd tegen de verwachtingen in wonnen. Die overwinning schept vertrouwen, wat
hen in de volgende wedstrijd zou kunnen helpen.
4.3
Module 3 - Sentimentanalyse
In deze module kijken we naar de inhoud van Twitterberichten, en meerbepaald naar de
sentiment die in die berichten uitgedrukt wordt. Deze sectie is opgedeeld in drie delen:
het wegfilteren van overbodige berichten worden, het classificeren van de berichten zelf,
en tenslotte het voorspellen van de wedstrijden.
4.3.1
Wegfilteren van irrelevante Twitterberichten
We moeten kiezen welke Twitterberichten we willen beschouwen voor het opbouwen van
een sentimentscore. We willen niet alle berichten van de voorafgaande dagen laten meetellen, want hier zit bijna uitsluitend informatie vervat die niet relevant is voor de huidige
wedstrijd (algemene praat / berichten over wedstrijden die tussen de Premier League
wedstrijden in vallen). Daarom kijken we alleen naar de berichten die in de laatste 24
uren voor de wedstrijd geplaatst worden.
19
Figuur 4.2: Een voorbeeld van hoe de verschillende types vectoren tot stand komen (Module 2)
20
De sentimentanalyse gebeurt per ploeg apart, dus moeten we de berichten per ploeg
indelen. Om die indelingen uit te voeren, wordt in eerste instantie gekeken naar hashtags.
Indien er exact ´e´en ploeg is met een hashtag, wordt het bericht aan die ploeg toegekend.
Indien er meer dan twee ploegen zijn met een hashtag, gaat het bericht niet over ´e´en
specifieke wedstrijd, en vergeten we het dus. Indien twee ploegen een of meerdere hashtags
in het bericht hebben, wordt de ploeg gekozen met de meeste vermeldingen. Bij een gelijke
stand, of wanneer er geen hashtags voorkomen, wordt er verder gekeken naar vermeldingen
van de ploegen in het bericht.
Voor alle twintig ploegen hebben we een aantal bijnamen / afkortingen / Twitternamen
verzameld (zie Tabel 4.1). Indien er ook hier, aan de hand van deze lijst, meer dan
twee verschillende ploegen aangetroffen worden, wordt het bericht verwijderd. Anders zal
de ploeg die nu over het grootste aantal vermeldingen beschikt het bericht toegewezen
krijgen. Bij een gelijke stand wordt het bericht verwijderd (er valt dan niet op te maken
over welke ploeg het bericht werkelijk gaat).
Hieronder staan enkele voorbeelden van toewijzingen van Twitterberichten.
• Chelsea: Come on Chelsea, come on Chelsea, come on Chelsea, come on Chelsea,
come on Chelsea, come on Chelsea #whothefuckisarsenal
• Arsenal: Don’t think Arsenal are going to score tonight, Chelsea looking too solid at
the back in previous games #afc #coyg
• Arsenal: Arsenal are getting crushed tonight! #afc #cfc
• Deleted: Arsenal v Chelsea, Norwich v Liverpool, Hull v City. Exciting games today!
#bpl
Ook zijn niet alle Twitterberichten die in die periode geplaatst worden relevant voor ons
systeem. Met behulp van een aantal regels worden die overbodige berichten uit onze
dataset geweerd. Hieronder worden de verschillende regels uitgediept.
• Retweets worden altijd verwijderd, gezien het een onnodige duplicatie is van dezelfde informatie, waardoor andere informatie makkelijk onderdrukt wordt (het aantal retweets van een tweet kan snel hoog oplopen).
– bv. RT @FutballTweets: Retweet if you believe Arsenal will beat Chelsea - and
celebrate Arsene’s 1000th game in-charge in style. #Wenger1000 ht
• Vlak voor de wedstrijd zijn er heel veel Twittergebruikers die de opstellingen en
bankzitters van beide ploegen opsommen. Dit is een grote brok aan totaal overbodige informatie waar we dus absoluut van af moeten. Hiervoor hebben we dus een
21
Arsenal
Aston Villa
Cardiff City
Chelsea
Crystal Palace
Everton
Fulham
Hull City
Liverpool
Man City
Man Utd
Newcastle
Norwich
Southampton
Stoke
Sunderland
Swansea
Tottenham
West Brom
West Ham
#afc, invincibles, gunners
#avfc, villa, astonvilla, villans, villains, lions, avfcofficial
#ccfc, cardiffcityfc, cardiffcity, cardiff, bluebirds
#cfc, blues, pensioners, chelseafc
#cpfc, official cpfc, officialcpfc, palace, eagles, glaziers
#efc, toffees, blues, merseyside
#ffc, fulhamfc, cottagers, whites, ffc
#hcafc, hullcityteam, hullcity, hull, tigers
#lfc, reds
#mcfc, man c, sky blues, citizens, manchester city,
manc, skyblues
#mufc, man u, manchester united, manchester utd,
manu, manutd, red devils, reddevils, mu
#nufc, nufcofficial, magpies
#ncfc, norwichcityfc, canaries, yellows
#saintsfc, saints, southamptonfc
#scfc, stokecity, potters
#safc, safcofficial, blackcats, black cats
#swans, swansofficial, jacks
#spurs, tottenham hotspur, hotspur, spursofficial, lilywhites
#wbafc, wbafcofficial, west bromwich, westbrom, baggies, wba
#whufc, whufcofficial, whufc official, westham, hammers, irons
Tabel 4.1: de twintig ploegen met hun bijnamen en afkortingen
22
filter ontwikkeld. De filter bevat een lange lijst van alle namen van de spelers die in
de eerste elftallen van de Premier League spelen. Als er zes of meer woorden in een
Twitterbericht gevonden worden, die overeenstemmen met een van de namen in de
lijst, wordt het bericht verwijderd. We hebben voor zes woorden gekozen, omdat
namen anders gespeld kunnen worden, typefouten voor kunnen komen, etc.
– bv. ”Chelsea XI vs. Arsenal: Cech; Ivanovic, Cahill, Terry (c), Azpilicueta;
Matic, David Luiz; Schurrle, Oscar, Hazard; Eto’o - Huge game! #CFC”
• Voor de wedstrijden worden ook vaak berichten geplaatst die starturen van uitzendingen, voorbeschouwingen, etc. oplijsten. Die berichten worden via keywords
(bv. preview ) en reguliere expressies weggewerkt.
– bv. Looking for the big game? We’ve got Arsenal vs Chelsea at 8:45am. March
Madness all day and @MapleLeafs vs @CanadiensM
• In deze module willen we ook nog geen rekening houden met voorspellingen die
geplaatst worden door gebruikers, dus we filteren ook hier op basis van keywords
(bv. prediction, odds, etc.) en reguliere expressies.
– bv. Chelsea to win 2-0
• Berichten waarin videogames vermeld worden, gaan niet over de wedstrijd en worden dus verwijderd. Dit gebeurt op basis van een aantal keywords, zoals ps3, fifa14,
etc.
– bv. Just bought messi on fifa14 with #lfc, everything’s possible in this game!
• Ook worden berichten verwijderd waarin transfers of contractverlengingen, etc.
besproken worden. Keywords hier zijn transfer, signing, etc.
– bv. Diego Costa rules out signing for Chelsea in the January transfer window.
#cfc
• Verder zijn er nog een aantal overige berichtencategorie¨en die op basis van enkele
keywords verwijderd worden, zoals mensen die tickets zoeken of verkopen (keyword
ticket), of berichten die over radio- of televisie-uitzendingen gaan (keyword tv, etc.)
– bv. Anyone got some spare tickets for the game this afternoon? #cfc #cfc
#cfc
• Tenslotte willen we ook enkel berichten die in het Engels geschreven zijn. Daartoe
laden we een woordenlijst in met een benadering van alle Engelse woorden, en we
houden enkel de berichten die voor minstens 40% uit woorden uit die lijst bestaan.
23
Er kunnen namelijk nog veel namen, spelfouten, afkortingen, etc. in de berichten
voorkomen. De grens van 40% bleek uit experimenten een acceptabele grens te zijn.
– bv. Les gens qui sont abonnes au parc si ils vendent une place PSG Chelsea ils
rentabilise leur abonnement
Na al die criteria overlopen te hebben, houden we nog een aantal relevante berichten over
voor een bepaalde ploeg uit de laatste 24 uren voor de wedstrijd. Die berichten dienen
vervolgens ingedeeld te worden in verschillende sentimentcategorie¨en.
4.3.2
Annoteren van Twitterberichten
Om de berichten in verschillende categorie¨en in te delen, hebben we twee methodes gevolgd. In een eerste benadering hebben we met SentiStrength gewerkt, een classificeerder
die in [9] vermeld wordt. SentiStrength gaat een meegegeven bericht zowel een positieve
als negatieve score van ´e´en tot vijf meegeven.
Uit onze experimenten (zie 5.5.1) bleek dat SentiStrength echter te veel fouten maakte.
Daarom hebben we ook een eigen classificeerder samengesteld, die beter zou moeten werken voor voetbaldiscussies. Onze classificeerder gaat de berichten indelen in een aantal
verschillende emoties, waarvan we hieronder telkens enkele voorbeelden geven.
1. Positief
• Actually think Everton have a good chance of top four
• The budget he was given at Everton he bought pretty well. And the United
board haven’t done a lot for him
• Big game tomorrow. Always been impressed by Everton. Proper club proper
fans.
2. Negatief
• I went to the Everton game. Couldn’t believe how negative the fans are. Just
moaning mainly. And half left when efc scored.
• Tomorrow’s game is probably the least excited I’ve been for a #LFC game all
season. #Hull #LFC
• kompany gets injured every weeeeek.. #mcfc
3. Vertrouwen
• Have a feeling about today and would absolutely love it if Sergio scored a hat
trick today#mcfc
24
• Waiting for 3 points , #mcfc
• Got a feeling Newcastle are gonna win today
4. Twijfel
• Hull tomorrow is going to be a tough game seeing as they are playing so good.
They’re going to have high hopes to beat us.
• Not at all confident about Man City away, sadly. Im fearing a heavy defeat :-/
• So Man City have dropped Hart. Maybe they’d also consider playing with a
reduced number so we have half a chance today?!
5. Aanmoedigingen
• @Everton come on lads, you don’t want Liverpool winning the league now do
ye?
• Oh yes derby day tomorrow off to watch me red men. Come on Liverpool lets
bloody do this #excited
• All ready for D day . Derby first then Dr who could be a good Saturday . Lets
have 3 points#lfc#DoctorWho
6. Nervositeit
• Must win today blues and make it big. Still not convinced about Pellegrini
thought we played better under Mancini. #mcfc
• Whoever makes the final team, today is a must win game! #mcfc
• Massive game for Sunderland today! Another 3 points needed!
7. Neutraal / Irrelevant
• Will United be heroes or Villans this weekend? #mufc
• Alan Pardew has today said that he tried to get @RomeluLukaku9 to NUFC
during the summer #nufc
• #safc GP team talk maintain momentum. Fast high tempo start. Then keep
clean sheet.
Merk op dat de emotie uit het bericht niet altijd gericht is op de ploeg die in het bericht
vermeld wordt. Dit kan een probleem vormen voor deze methode. Verdere evaluatie van
deze module vindt plaats in Hoofdstuk 5.
Om te kunnen vergelijken met SentiStrength, kunnen we deze categorie¨en reduceren tot
een positieve (waar vertrouwen en aanmoedigingen dan bijgevoegd worden), een negatieve
25
(waar twijfel en nervositeit bijgevoegd worden) en een neutrale categorie. Later zullen
we ook nagaan of het systeem beter voorspellingen kan doen met alle emoties, of met de
gereduceerde vormen ervan.
4.3.3
Classificeren van Twitterberichten
Om de berichten in te kunnen delen, hebben we een dataset nodig met een aantal voorbeeldberichten, en de klasse per bericht. Daartoe hebben we 3400 berichten handmatig
geannoteerd (= een categorie toegewezen). Om al die berichten te selecteren hebben we
van alle ploegen in de laatste 24 uren voor een wedstrijd (zowel toppers als gewone wedstrijden) berichten verzameld. De helft van de berichten komen van ongeveer 24 uren voor
de wedstrijd, de andere helft komen van vlak voor de wedstrijd. Op die manier zorgen we
voor een eerlijke verdeling van de oorsprong van de berichten. Vervolgens gebruiken we
Weka om de volgende stappen te doorlopen.
We vertrekken per bericht van een lange String met daarin het bericht, en de bijhorende
klasse. Eerst dient die String opgedeeld te worden in attributen. Dit gebeurt aan de hand
van een StringToWordVector. Die gaat een String converteren naar een aantal attributen
(bijvoorbeeld ´e´en attribuut voor elk woord), met nog enkele parameters die we kunnen
aanpassen. Zo kunnen we kiezen of er al dan niet tf-idf toegepast wordt, welke stemmer
en tokenizer we gebruiken, en het aantal attributen om bij te houden in het model. De
verschillende parameters worden hieronder even uitgelegd.
• tf-idf (term-frequency, inverse document frequency): Het al dan niet gebruiken van het tf-idf principe. Term frequency duidt op het feit dat woorden die
meer in een bericht voorkomen dan andere woorden, ook belangrijker en relevanter
zijn voor dat bepaald bericht. Wanneer sommige woorden echter vaak voorkomen in
meerdere berichten (bv. lidwoorden), zal het woord veel van zijn relevantie verliezen.
Dat kunnen we bereiken door inverse document frequency toepassen.
• Stemmer: Bij stemming worden woorden herleid tot hun stam. Zo zullen bijvoorbeeld woorden als walking en walked herleid worden tot ´e´en attribuut walk.
• Tokenizer: Hier wordt gekozen hoe de String omgevormd dient te worden naar
attributen. Dit gebeurt via unigrams, bigrams of n-grams. Bij unigrams wordt elk
woord tot een attribuut omgevormd, bij bigrams worden elke twee opeenvolgende
woorden tot een attribuut omgevormd en bij n-grams worden elke n opeenvolgende
woorden tot een attribuut omgevormd.
• Aantal attributen: Het aantal attributen (de relevantste) dat uiteindelijk bijgehouden zal worden.
26
De parameters die uiteindelijk tot het hoogste correctheidspercentage voor de classificatie
leidden (via kruisvalidatie, zie ook het evaluatiegedeelte in Hoofdstuk 5), worden gekozen.
Er wordt gekozen voor tf-idf, met een stemmer, unigrams en 10 000 attributen. Wanneer
we voor de hele verzameling geannoteerde berichten de attributen hebben afgeleid, kunnen
we via SVM het model beginnen trainen. We kiezen voor SVM omdat het de standaard
is voor textclassificatie, gezien SVM’s heel goed overweg kunnen met een groot aantal
attributen [10].
Het verwijderen van de ploegvermeldingen uit de berichten
Een belangrijk detail dat we niet uit het oog mogen verliezen is het feit dat er nog
ploegnamen in de Twitterberichten staan, die het sentiment zouden kunnen be¨ınvloeden.
Indien we ervan uitgaan dat veel van onze geannoteerde berichten Arsenal bevatten, dan
zou ons model bijvoorbeeld kunnen leren dat de aanwezigheid van het woord Arsenal
een indicatie is voor een positief bericht. Om dit effect tegen te gaan vervangen we de
voorkomens van alle ploegnamen of bijnamen. De ploeg waaraan het bericht toegewezen is
vervangen we overal door <Thisteam>, en de overige vermeldingen van ploegen vervangen
we door <Otherteam>.
4.3.4
Het voorspellen van wedstrijden a.d.h.v. de sentimentscores
Om de vectoren op te bouwen aan de hand van SentiStrength, gaan we per betrokken
ploeg voor alle berichten uit de laatste 24 uren voor een wedstrijd de positieve en negatieve
scores berekenen. Omdat we met minimumwaardes voor de scores van 1 en -1 zitten,
kwadrateren we alle waarden zodat de veel positievere / negatievere scores een grotere
invloed hebben. Vervolgens nemen we van die kwadraten het gemiddelde, en dat wordt
dan de uiteindelijke positieve en negatieve score voor dat team. Dit principe wordt ook
in Figuur 4.3 getoond.
Voor de eigen classificeerder hebben we ons model klaar, en kunnen we er nu nieuwe
berichten mee gaan classificeren. Voor elke wedstrijd zullen we voor beide ploegen apart
het sentiment berekenen, uit de berichten in de laatste 24 uren voor de wedstrijd. We
doen dit eerst bericht per bericht. Voor elk bericht krijgen we een scorevector die per
klasse de waarschijnlijkheid dat het bericht tot deze klasse behoort, aanduidt. Om tot
´e´en vector te komen nemen we over elke klasse het gemiddelde van alle bovenstaande
vectoren. Dit principe wordt ook in Figuur 4.3 getoond.
We bouwen op deze manier ´e´en type vector op a.d.h.v. SentiStrength, en vier verschillende
27
Figuur 4.3: Een voorbeeld van hoe de verschillende types vectoren tot stand komen (Module 3)
28
types a.d.h.v. onze eigen classificeerder. Die vier verschillen in gebruikte sentimentcategorie¨en.
1. Positief - Negatief
2. Positief - Negatief - Vertrouwen - Twijfel - Aanmoedigingen - Nervositeit
3. Neutraal - Positief - Negatief
4. Neutraal - Positief - Negatief - Vertrouwen - Twijfel - Aanmoedigingen - Nervositeit
Zoals voordien al gezegd, kunnen we voor 2 en 4 de berichten die normaal onder Vertrouwen of Aanmoedigingen geplaatst worden, nu onder Positief plaatsen. En natuurlijk
kunnen we dan de berichten die normaal onder Twijfel of Nervositeit vallen, onder Negatief plaatsen.
4.4
Module 4 - Voorspellingsanalyse
In deze laatste afzonderlijke module kijken we naar de voorspellingen die de Twittergebruikers zelf bij de wedstrijden plaatsen. Ook hier zullen we eerst de geschikte berichten
filteren uit de laatste 24 uren voor de wedstrijd. Een aantal voorbeelden van voorspellingen die de gebruikers plaatsen, staan hieronder weergegeven.
• @BroadcastMoose Fulham 1-2 Tottenham, Berbatov 1st #moosecottage
• Fulham to get the win over Tottenham tonight!
• Fulham will beat Tottenham tonight anyway 2-1
• Poisson predicts: Sunderland v Chelsea 0-2; Swansea v Newcastle 1-1; Fulham v
Tottenham 0-0; WBA v Man City 0-2 or 1-2 #epl
• My predictions Arsenal 2-0 Hull Liverpool 1-0 Norwich City Man United 0-1 Everton
Sunderland 1-0 Chelsea Fulham 1-0 Tottenham
Helaas kunnen we niet uit alle voorspellingsberichten een volledige en correcte voorspelling
halen. Bij het filteren kiezen we enkel voor berichten die scores bevatten van de vorm 3-1
(twee getallen gescheiden door een liggend streepje, of eventueel een x). Ook aanvaarden
we enkel scores t.e.m. zes, want hogere scores zijn overdreven voorspellingen die niet
serieus te nemen zijn. Verder weren we ook retweets en berichten die de woorden won,
drew, lost of saw bevatten. Die laatste berichten wijzen meestal op uitslagen uit het
verleden.
29
Na het filteren van de berichten moeten we nog kijken in de berichten zelf of we er voorspellingen voor de gewenste wedstrijd uit kunnen halen. Ten eerste is het belangrijk om
rekening te houden met het feit dat niet iedereen de teams bij dezelfde namen noemt.
Daarom gebruiken opnieuw de lijst uit 4.1 om alle teamvermeldingen tot eenzelfde teamnaam te reduceren. Vervolgens hebben we een aantal verschillende soorten voorspellingen
die we onderscheiden.
Voor een welbepaalde wedstrijd (we kennen dus de thuis- en de uitploeg) halen we de
gefilterde berichten op. Dan wordt voor elk bericht eerst het aantal scores (bv. 0-0)
geteld. Indien het aantal scores gelijk is aan ´e´en, zoeken we vervolgens hoeveel Premier
League ploegen er in het bericht vermeld worden.
• Indien aantal ploegen gelijk is aan ´
e´
en, zoeken we of de ploeg de thuis- of
uitploeg voorstelt, en of het resultaat in het voordeel van de thuis- of uitploeg
uitdraait. Dat doen we door de vermelde ploeg steeds te laten winnen, tenzij het
woord lose in het bericht voorkomt. Dan gaan we ervan uit dat de vermelde ploeg
als verliezer bestempeld wordt.
∗ Bv. Got a feeling it’s gonna end with a 2-1 #cfc
∗ Bv. Fulham gonna lose 0-2 today
• Indien aantal ploegen gelijk is aan twee, dan zoeken we een van de twee patronen die er bijvoorbeeld zoals hieronder uitzien. Indien het patroon niet gevonden
wordt, slaan we dit bericht over.
– T1 1-0 T2 (waarbij thuis- en uitploegen ook omgekeerd mogen staan. Scores
mogen ook gescheiden worden door v, vs, x of een spatie)
∗ Bv. Man Utd 4 - 1 Fulham van persie 1st
– T1 - T2, en elders in het bericht nog een score (waarbij thuis- en uitploegen
ook omgekeerd mogen staan, en ook gescheiden mogen worden door v, x of een
spatie).
∗ Bv. Man Utd vs Fulham prediction? 2-1!
• Indien aantal ploegen gelijk is aan meer dan twee, dan gaan we eerst controleren of we het gewenste aantal ploegen voorhanden hebben in het bericht. We
willen namelijk per score twee teams. Indien de vergelijking opgaat, zoeken we
opnieuw naar twee patterns.
– T1 1-0 T2 (waarbij opnieuw thuis- en uitploegen omgewisseld mogen staan,
en ze ook door v, vs, x of een spatie gescheiden mogen worden)
∗ Bv. Today’s predictions : Man Utd 3 - 0 Fulham Man City 2 - 2 Liverpool
Arsenal 0 - 1 Tottenham
30
– T1 - T2 1-0 (zelfde opmerking)
∗ Bv. Today’s predictions : Man Utd v Fulham 3-0 Man City v Liverpool
2-2 Arsenal v Tottenham 0-1
Op die manier vinden we dus voor elk bericht een gepaste score terug voor een gewenste
wedstrijd, ofwel negeren we het bericht. Om tot een vector te komen gaan we nu voor
elke wedstrijd de berichten van de laatste 24 uren voor de wedstrijd ophalen. Vervolgens
delen we ze op in drie lijsten: thuisberichten, uitberichten en neutrale berichten.
De thuisberichten zijn die waar enkel de thuisploeg in vermeld wordt, dezelfde redenering
geldt voor de uitberichten, en de neutrale berichten bevatten zowel vermelding van de
thuis- als de uitploeg. Voor elke lijst berekenen we het gemiddelde van de voorspelde
uitslagen, en zo komen we tot een vector met zes attributen. In Figuur 4.4 wordt dit
principe ge¨ıllustreerd. We tonen ook de overige types van vectoren die we met deze
techniek bekomen.
Tenslotte nog een opmerking over wat we doen indien we met een gebrek aan data zitten.
Wanneer er geen thuis- of uitberichten door de filter heen geraken voor een wedstrijd,
kiezen we daar als score dezelfde uitslag als voor de neutrale berichten. Die waren in onze
dataset steeds aanwezig.
4.5
Combineren van de verschillende modules
In deze sectie proberen we om een vollediger, correcter voorspellingsmechanisme te construeren door de verschillende modules te combineren. Eerst gaan we de vectoren van de
individuele modules samenbrengen in ´e´en grote vector, om dan met die vector voorspellingen te gaan doen. Vervolgens gaan we in de tweede subsectie een meerderheidsstemming
(Eng. majority voting) en gelijkaardige combinaties uitvoeren (volgens het chronologisch
model, zie 5.1.1). Afsluiten doen we in de derde subsectie, waar we de voorspellingen van
de aparte modules samenbundelen in een nieuwe vector. Op basis van die vector gaan we
dan een uiteindelijke voorspelling doen (opnieuw volgens het chronologisch model).
4.5.1
Type A: Een nieuwe vector opbouwen door vectoren van
individuele systemen samen te voegen
In een eerste benadering gaan we grotere vectoren opbouwen op basis van een aantal
kleinere vectoren. We proberen dit eens door van elke module het succesvolste type te
kiezen, en ook eens door meerdere types vectoren per module te kiezen. Meer informatie
hierover volgt in 5.7.2.
31
Figuur 4.4: Een voorbeeld van hoe de verschillende types vectoren tot stand komen (Module 4)
32
De keuze voor welke attributen gebruikt worden uit de verschillende vectoren, wordt op
de volgende manieren gemaakt:
1. Hier kiezen we alle attributen van de vier gekozen vectoren, en voeren we ook geen
enkele selectie uit op de attributen.
2. Hier selecteren we wel op de attributen via AttributeSelection in Weka. We houden
enkel de attributen over die informatiegewin (Eng. Information Gain) opleveren.
3. Hier selecteren we de attributen die bij de selectieprocedures per vector als beste
keuze golden. Meer uitleg over die selectieprocedures volgt in 5.1.
4.5.2
Type B: Meerderheidsstemming en aanverwanten
Meerderheidsstemming
Deze benadering gaat de voorspellingen (per module) zelf combineren. Opnieuw selecteren
we van elke module de vector die tot de beste correctheidspercentages leidde. Dan gaan
we per wedstrijd een voorspelling doen met elke module. Het resultaat dat daar het vaakst
bekomen wordt, gaan we dan als uiteindelijke voorspelling gebruiken. In geval van een ex
aequo kiezen we voor het resultaat van de statistische voorspeller.
Gemiddelde-distributiestemming
Bij uitbreiding hebben we hier ook een andere soort voorspelling ontworpen. Zoals in 3.2.1
al vermeld, heeft elke voorspelling in Weka een distributie met de waarschijnlijkheid van
elke uitkomst. Wanneer we van de vier distributies die we hier verkrijgen het gemiddelde
nemen per mogelijke uitkomst, krijgen we een nieuwe distributie. Vervolgens kunnen we
de uitkomst met de hoogste waarschijnlijkheid gaan kiezen als uiteindelijk resultaat.
Voorkeursstemming
Bij deze laatste gecombineerde voorspeller van type B kijken we naar de waarschijnlijkheid
die de voorspellers hun voorspellingen toedichten. We gaan ´e´en individuele voorspeller de
voorrang geven. Eerst kijken we enkel naar zijn voorspelling, en naar de waarschijnlijkheid
die hij meegeeft aan zijn voorspelling. Is die waarschijnlijkheid groter dan 0.5, dan kiezen
we voor deze voorspelling. Anders halen we er nog drie andere voorspellers bij, en kijken
we welke van de vier zijn eigen voorspelling het meest waarschijnlijk acht. Die voorspelling
wordt dan definitief gekozen.
33
Figuur 4.5: Gecombineerde systemen van type C: het opbouwen van de vectoren door de voorspellingen van voorgaande modules te combineren
4.5.3
Type C: Een nieuwe vector opbouwen a.d.h.v. de voorspellingen per module
De laatste manier om de modules te combineren, is de voorspellingen van de individuele
systemen zelf op te slaan in een vector. Daartoe hebben we twee aanpakken, waarvan
telkens ook een voorbeeld terug te vinden in Figuur 4.5.
1. Hier laten we elke module een voorspelling doen, en die voorspelling slaan we op,
samen met de waarschijnlijkheidswaarde die de classificeerder aan zijn voorspelling
geeft.
2. Deze methode is gelijkaardig aan de gemiddelde-distributiestemming uit 4.5.2. Ook
hier gaan we weer de gemiddeldes van de distributies nemen, en bouwen we de vector
daarmee op. We krijgen dus ´e´en attribuut per mogelijke uitkomst.
4.6
Besluit
Om dit hoofdstuk te besluiten, geven we in Tabel 4.2 nog eens een overzicht van de
ge¨ımplementeerde voorspellers die in Hoofdstuk 5 ge¨evalueerd zullen worden. We zijn
begonnen met per module de verschillende types van vectoren te bespreken.
• In de eerste module doen we voorspellingen op basis van statistieken.
34
• In de tweede module wordt er voorspeld op basis van het aantal berichten dat over
elke ploeg geplaatst wordt naar aanloop van de wedstrijd.
• In de derde module voeren we een sentimentanalyse uit, om te kijken welke emoties
overheersen voorafgaand aan de wedstrijd.
• In de vierde module analyseren we de voorspellingen die de Twittergebruikers zelf
plaatsen, om vandaaruit zelf een finale voorspelling te doen.
Vervolgens bundelen we de individuele modules tot een gecombineerd systeem. Ook daarin
hebben we enkele verschillende types.
• Bij gecombineerde systemen van type A brengen we de vectoren van de individuele
modules samen tot ´e´en grote vector.
• Bij type B doen we met de aparte vectoren voorspellingen, en nemen we op basis
van die voorspellingen een beslissing (bijvoorbeeld via meerderheidsstemming).
• Bij type C doen we met de aparte vectoren voorspellingen, en bundelen we die
voorspellingen in een nieuwe vector. Op basis van die vector gaan we dan de finale
voorspelling.
De evaluatie van deze verschillende systemen volgt in Hoofdstuk 5.
35
Tabel 4.2: Een overzicht van alle ge¨ımplementeerde voorspellingssystemen
Naam voorspeller
#attr. Beschrijving
statA
12
Statistische gegevens zoals positie in de stand, doelpunten, ... (per ploeg)
statB
6
Statistische gegevens zoals positie in de stand, doelpunten, ... (het verschil tussen beide ploegen)
aantallen
4
Gemiddeld aantal berichten per dag naar aanloop van
de wedstrijd, met daarbij het percentage ten opzichte
van het globale gemiddelde (per ploeg)
sent1
4
Sentimentswaardes voor positief, negatief (per ploeg)
sent2
12
Sentimentswaardes voor positief, negatief, vertrouwen, twijfel, aanmoedigingen, nervositeit (per ploeg)
sent3
6
Sentimentswaardes voor neutraal, positief, negatief
(per ploeg)
sent4
14
Sentimentswaardes voor neutraal, positief, negatief,
vertrouwen, twijfel, aanmoedigingen, nervositeit (per
ploeg)
voorspA
6
De gemiddelde voorspellingen uit de thuis-, uit- en
neutrale berichten apart.
voorspB
3
De verschillen van de gemiddelde voorspellingen uit
de thuis-, uit- en neutrale berichten apart.
voorspThuis/Uit
2
De gemiddelde voorspelling van de score, gekozen
over de thuis- en uitberichten (waarbij beide partijen
even zwaar doorwegen).
voorspNeutraal
2
De gemiddelde voorspelling van de score uit neutrale
berichten.
voorspGemiddelde
2
Het gemiddelde van de voorspellingen van de scores
uit thuis-, uit- en neutrale berichten (waarbij de drie
verschillende soorten berichten even zwaar door wegen).
voorspC
9
De gemiddelde voorspellingen uit de thuis-, uit- en
neutrale berichten apart, met telkens het aantal berichten waaruit de gemiddeldes berekend werden.
combA all
var.
Alle attributen uit vier vectoren.
combA as
var.
Attributen uit diezelfde vier vectoren, maar met attribuutselectie
36
Tabel 4.2: Een overzicht van alle ge¨ımplementeerde voorspellingssystemen
Naam voorspeller
combA best
#attr. Beschrijving
var.
Attributen uit diezelfde vier vectoren, maar met alleen de attributen die vroeger de beste resultaten gaven.
combB meerderheid
n.v.t.
Meerderheidsstemming over de gekozen voorspellers
combB gem.distr.
n.v.t.
Gemiddelde-distributiestemming over de gekozen
voorspellers
combB voorkeur
n.v.t.
Voorkeur aan ´e´en voorspeller, met bijstand van anderen
combC1
8
De voorspellingen van de gekozen voorspellers, met
daarbij de waarschijnlijkheid die elke voorspeller aan
zijn voorspelling toedicht.
combC2
3
Gemiddelde-distributiestemming over de gekozen
voorspellers (´e´en per module), waarbij nu de resultaten in een nieuwe vector opgeslagen worden.
37
Hoofdstuk 5
Evaluatie
In dit uitgebreide evaluatiehoofdstuk zullen we verschillende voorspellingsmechanismen
onderling vergelijken op basis van twee testopstellingen. In sectie 5.1 worden die testopstelling uitgelegd. Vervolgens schetsen we enkele basisvoorspellingssystemen (zoals
bijvoorbeeld telkens de thuisploeg laten winnen) om mee te gaan vergelijken. Daarna
evalueren we alle modules individueel. Tenslotte gaan we vergelijken, en kijken we of de
individuele resultaten gecombineerd kunnen worden tot een nog effici¨enter systeem.
5.1
De twee evaluatiemodellen
Onze voorspellingen gaan we evalueren volgens twee evaluatiemodellen, namelijk een chronologisch model en en niet-chronologisch model. Om een model te construeren, moeten
we een aantal parameters vastleggen:
• De speeldagen die we gebruiken als trainingsverzameling en als testverzameling.
• De attributen die we in onze vector bewaren. We weten namelijk niet welke attributen waardevolle informatie bezitten voor het systeem, en welke overbodig zijn.
• De classificeerder die we gebruiken, en de parameters voor die classificeerder. We
kiezen hier telkens uit Naive Bayes, Logistic Regression of Support Vector Machine,
en om de parameters te berekenen maken we gebruik van GridSearch.
Die keuzes worden hieronder per model toegelicht.
De gebruikte wedstrijden
Zoals in sectie 3.2.4 vermeld, bestrijken onze Twitterberichten tweehonderd wedstrijden
uit de Premier League, van speeldag 10 t.e.m. 24 en speeldag 29 t.e.m. 34 (waarbij ´e´en
38
Figuur 5.1: De tests volgens het chronologisch model.
inhaalspeeldag zit). Voor de vier de modules hebben we ervoor gezorgd dat enkel die
tweehonderd wedstrijden in de vectoren opgeslagen werden.
5.1.1
Het chronologisch model
Een voetbalseizoen verloopt chronologisch. Zo zullen bijvoorbeeld op het einde van het
seizoen sommige ploegen (titelkandidaten en ploegen in degradatiegevaar) met veel meer
inzet spelen dan voordien, en andere ploegen juist niet. Dit kan een invloed hebben op
de uitslag van sommige wedstrijden. We willen dus ook een realistisch model opbouwen,
dat voorspellingen voor een bepaalde speeldag doet op basis van de data waarover we op
dat moment zouden beschikken. Het model wordt in de volgende paragrafen uitgelegd,
en in Figuur 5.1 wordt het schematisch weergegeven.
De gebruikte speeldagen in dit model
We hebben ervoor gekozen om de trainings- en testverzamelingen evenredig te verdelen.
We werken ten allen tijde met een trainingsverzameling van minstens honderd wedstrijden. De testverzameling bestaat uit de overige honderd wedstrijden. Zoals in Figuur 5.1
aangegeven, splitsen we de testverzameling op in twee groepen van vijftig wedstrijden,
namelijk speeldag 20 t.e.m. 24, en speeldag 29 t.e.m. 34.
39
Classificeerder Aantal keer gebruikt
Naive Bayes
31%
Logistische Regressie
38,5%
30,5%
SVM
Tabel 5.1: Het aantal keer dat elke classificeerder gebruikt werd bij de voorspellingen die in dit
hoofdstuk gedaan worden
De gekozen attributen in dit model
Om te bepalen welke attributen waardevol zijn voor de voorspellingssystemen, benaderen
we de twee testgroepen apart. Per groep gaan we ´e´enmaal op voorhand bepalen welke attributen we willen behouden, omdat dit een zeer rekenintensieve opdracht is. Dit gebeurt
dus op basis van respectievelijk 100 en 150 wedstrijden.
De attributen worden gekozen in twee stappen. Eerst evalueren we via attribuutselectie in
Weka welke attributen informatiegewin (Eng. Information Gain) opleveren. Die attributen behouden we al zeker. Voor de overige attributen gaan we elke mogelijke combinatie
testen aan de hand van de voorgaande 100 of 150 wedstrijden. Over die wedstrijden
voeren we een kruisvalidatie (tien iteraties) uit met elk van de drie mogelijke classificeerders. De combinatie die (met gelijk welke classificeerder) het hoogste percentage haalt,
zal uiteindelijk worden gebruikt. Bij een ex aequo kiezen we de combinatie met de meeste
parameters.
Andere keuzes om attributen te gaan selecteren, zoals puur op basis van informatiegewin
of gewoon geen selectie, waren minder succesvol dan bovenstaande benadering.
De gebruikte classificeerder in dit model
Het kiezen van de optimale classificeerder is een minder rekenintensieve opdracht, en dus
kunnen we dit gaan doen voor elke speeldag apart. Bij elke volgende speeldag krijgen
we namelijk enkele extra wedstrijden waaruit we informatie kunnen halen. Over alle
voorgaande speeldagen testen we dus via kruisvalidatie de drie classificeerders, en kiezen
we de classificeerder die het hoogste correctheidspercentage oplevert.
In Tabel 5.1 is een overzicht terug te vinden van welke classificeerders het vaakst gekozen
worden bij al de voorspellingen die nog in dit hoofdstuk gedaan worden. Logistische
Regressie werd het meeste gebruikt (38,5% van de gevallen), maar het verschil met Naive
Bayes (31%) of SVM (30,5%) is niet groot. Geen van de drie classificeerders geniet dus
de voorkeur.
40
Figuur 5.2: De tests volgens het niet-chronologisch model.
Samengevat
Voor beide speeldagengroepen (20-24 en 29-34) gaan we voorspellingen doen. Voor elke
te voorspellen speeldag selecteren we eerst de attributen waarmee we willen werken, op
basis van de eerste 100 of 150 wedstrijden (afhankelijk van tot welke groep de speeldag
behoort). Vervolgens zoeken we de optimale classificeerder voor alle speeldagen vooraf,
die we dan ook trainen op die speeldagen. Tenslotte voorspellen we elke wedstrijd van de
speeldag. In Figuur 5.1 wordt het chronologisch model ge¨ıllustreerd.
5.1.2
Niet-chronologisch model
Het probleem met ons chronologisch model is het feit dat we maar over Twitterdata van
een half seizoen beschikken, waarvan de helft al als oefendata gebruikt wordt. Later zal uit
onze experimenten blijken dat in het begin van het seizoen de resultaten een stuk minder
voorspelbaar zijn dan op het einde. Daarom willen we toch een vollediger beeld van ´e´en
seizoen krijgen door een niet-chronologisch model te introduceren. Het niet-chronologisch
model gaat alle data van de speeldagen dooreen gebruiken, aan de hand van kruisvalidatie
(zie 3.2.1). Dit wordt weergegeven in Figuur 5.2.
De gebruikte speeldagen in dit model
Voor dit model kunnen we gebruik maken van de tweehonderd speeldagen waarover we
beschikken. Aan de hand van kruisvalidatie met tien iteraties zal elke wedstrijd dus
´e´enmaal in een testverzameling opgenomen worden.
De gekozen attributen en classificeerder in dit model
Voor de keuze van de classificeerder en de attributen gaan we de optimale combinatie
zoeken, via kruisvalidatie over alle tweehonderd de speeldagen. We proberen weer bijna
alle mogelijke attributencombinaties uit (analoog aan 5.1.1), voor de drie mogelijke clas-
41
Chronologisch
sd 20-24 sd 29-34
Niet-chron.
sd 10-24, 29-34
Individuele modules
Gecombineerd type A
Gecombineerd type B
Gecombineerd type C
Tabel 5.2: De tests die uitgevoerd worden voor elk systeem. (sd = speeldag)
sificeerders (inclusief de parameters via GridSearch). De combinatie van classificeerder en
attributen met het hoogste correctheidspercentage wordt gekozen.
Opmerkingen
Dit is dus niet meteen een realistisch model, omdat we de beste combinatie achteraf pas
kiezen. Het is echter wel indicatief voor de kracht van een voorspeller over een vollediger
seizoen dan bij het niet-chronologisch model.
Verder zullen we ook de gecombineerde systemen van type B niet aan dit model kunnen
toetsen, omdat die strikt chronologisch opgebouwd worden.
5.1.3
Overzicht
In Tabel 5.2 staat nog eens samengevat welke tests voor elk systeem uitgevoerd gaan
worden.
5.2
Basisvoorspellingssystemen
In deze sectie geven we enkele eenvoudige voorspellingssystemen en hun resultaten, om
later de vergelijking met de resultaten van onze eigen systemen te kunnen maken.
5.2.1
De thuisploeg steeds laten winnen
De eenvoudigste benadering is om de thuisploeg altijd te laten winnen. Dit is namelijk het
resultaat dat het vaakst voorkomt. Dit kan ook een niet onbelangrijke indicator zijn voor
de percentages van onze eigen systemen. Zo zullen we later merken dat gelijke spelen door
onze systemen eigenlijk amper voorspeld worden, omdat die zeldzaam en onvoorspelbaar
42
Wedstrijd
Thuisploeg wint
Man Utd v Man City
3.20
Aston Villa v Stoke City
2.14
2.14
Tottenham v Southampton
Gelijkspel
3.41
3.19
3.32
Uitploeg wint
2.25
3.65
3.51
Tabel 5.3: Voorbeeld van de kansenverhoudingen bij de gokkantoren. Indien 1 euro op de
wedstrijd zou ingezet worden, is het getal in de tabel het bedrag dat je terug zou krijgen bij een
correcte voorspelling.
Voorspellingssysteem sd 20-24
Winst voor thuisploeg
0.48
Gelijkspel
0.20
Winst voor uitploeg
0.32
Lawro’s Predictions
0.62
Gokkantoren
0.66
sd 29-34
0.54
0.10
0.36
0.58
0.68
sd 20-24, 29-34
0.51
0.15
0.34
0.60
0.67
sd 10-24, 29-34
0.49
0.20
0.31
0.55
0.62
Tabel 5.4: De correctheidspercentages van de verschillende basisvoorspellingssystemen over de
verschillende periodes. (sd = speeldag)
zijn. In Tabel 5.4 vinden we de percentages voor de drie mogelijke uitslagen, over de
verschillende voorspellingsperiodes.
5.2.2
Expertvoorspellingen
Een andere benadering is om een zogenaamde expert aan het woord te laten. E´en van de
belangrijkste voetbalkenners (Eng. pundits) in dienst van de BBC is Mark Lawrenson.
In een wekelijkse voorspellingswedstrijd (Lawro’s Predictions) neemt hij het op tegen
Britse of overzeese beroemdheden. Voor elke speeldag geeft hij dus zijn voorspelling per
wedstrijd. Op deze manier kunnen we onze systemen ook toetsen aan een menselijk
voorspellingssysteem.
5.2.3
Voorspellingen op basis van de cijfers van gokkantoren
Tenslotte brengen we ook de cijfers van gokkantoren in rekening. Op [2] vinden we een
historische database met de cijfers gemeten over meer dan vijftig verschillende bookmakers. Bij elke wedstrijd hebben we voor de thuisploeg, de uitploeg of een gelijkspel een
kansenverhouding (Eng. odds ratio) die de waarschijnlijkheid uitdrukt van die uitslag. In
Tabel 5.3 vinden we een voorbeeld van die cijfers. Om te voorspellen kiezen we natuurlijk
de uitslag met de hoogste waarschijnlijkheid (dit is het laagste getal).
43
5.2.4
Discussie
Wanneer we naar het eerste deel van Tabel 5.4 kijken, merken we op dat het aantal
gelijke spelen beduidend hoger ligt in de eerste evaluatieperiode (20%) dan in de tweede
evaluatieperiode (10%). Dit zal in de evaluatie van onze systemen nog een rol spelen.
Bij Lawro’s Predictions speelt dat niet meteen een rol, omdat hij zelf ook gelijke spelen
voorspelt (in tegenstelling tot bijvoorbeeld de gokkantoren). Daarom is het inderdaad
mogelijk dat zijn correctheidspercentage in de tweede voorspellingsperiode zakt (van 62%
naar 58%). Later zullen we zien dat dit amper of niet meer voorkomt.
Tenslotte zien we bij het niet-chronologisch model ook dat bij Lawro’s Predictions en de
gokkantoren de voorspellingen die meer naar het begin van het seizoen toe liggen, een
stuk stroever verlopen (resp. 55% en 62% over alle tweehonderd wedstrijden, in plaats
van resp. 60% en 67% over enkel de laatste honderd wedstrijden). Dit is een trend die
we nog zullen opmerken, namelijk dat de ploegen staan waar ze horen te staan in het
klassement, en dat de kracht en de vormcurve per ploeg duidelijker op te maken valt.
5.3
Module 1 - Statistieken
Deze eerste module gebruikt nog geen Twitter om de wedstrijden te voorspellen, en is
dus ook een mooie basis om mee te gaan vergelijken. Natuurlijk zouden we eindeloos ver
in de statistische analyse kunnen gaan. Zo zijn er systemen die bijvoorbeeld ook naar de
individuele spelers per ploeg gaan kijken (wie speelt er mee en wie niet, wie is er in vorm,
...). We hebben het hier dus op een basisimplementatie gehouden. Natuurlijk gebruiken
we de belangrijkste algemene gegevens (bv. de positie in de stand) waardoor we nog
steeds een effectief mechanisme ontwikkelen.
Om een idee te geven van in welke mate het machinaal leren, alsook de vele attributen
bijdragen aan een succesvoller voorspellingssysteem, hebben we een simpele benadering
op basis van statistieken getest. We kijken in die simpele benadering enkel naar het
verschil van de positie in de stand tussen de twee ploegen. De ploeg die de hoogste positie
bekleedt, wint de wedstrijd. Deze benadering (in de tabel easyStat genoemd) wordt samen
met de twee types vectoren van de eerste module opgenomen in Tabel 5.5. Bij statA wordt
de vector opgebouwd met alle gegevens voor de thuisploeg, alle gegevens voor de uitploeg
en het verschil in positie. Bij statB wordt de vector opgebouwd door voor alle gegevens
telkens het verschil te nemen tussen thuis- en uitploeg.
44
Voorspellingssysteem sd 20-24
easyStat
0.54
statA
0.60
statB
0.58
sd 29-34
0.64
0.64
0.70
sd 20-24, 29-34
0.59
0.62
0.64
sd 10-24, 29-34
0.545
0.570
0.575
Tabel 5.5: Resultaten van onze statistische voorspellingssystemen
Systeem # keer thuiswinst
statA
73
statB
51
# keer gelijk
0
2
# keer uitwinst
27
37
Tabel 5.6: Het aantal voorspellingen van elke soort bij statA en statB.
5.3.1
Discussie
In Tabel 5.5 wordt meteen duidelijk dat de extra gebruikte attributen (bovenop het verschil in de stand) en het machinaal leren een aanzienlijke bijdrage leveren aan de correctheid van de voorspellingen. Met statB gaan we over de laatste honderd wedstrijden het
percentage van 59% naar 64% kunnen verhogen.
In totaliteit worden ook Lawro’s Predictions (60%) overstegen, maar aan de van de gokkantoren (67%) kan nog niet getipt worden. Ook valt op dat het percentage over de eerste
vijftig geteste speeldagen gevoelig lager ligt dan dat bij de laatste vijftig speeldagen. Dat
heeft onder meer te maken met het aantal gelijke spelen die in die periode vielen.
Het is dus interessant om eens te kijken welke resultaten het meest voorspeld worden. In
de honderd wedstrijden in onze testverzameling zien we in Tabel 5.6 welke resultaten het
vaakst voorspeld worden. Gelijke spelen worden amper of niet voorspeld (0% voor statA,
2% voor statB ), wat onze stelling uit 5.2.4 bevestigt: er zullen meer foute voorspellingen
gedaan worden in periodes waar meer wedstrijden in een gelijkspel eindigen.
5.4
Module 2 - Aantal berichten
In deze module kijken we naar de berichtenaantallen per dag. We maken eerst een analyse
van hoe die aantallen vari¨eren van dag tot dag, en over welke ploegen gemiddeld het
grootste aantal berichten geplaatst wordt.
5.4.1
Fluctuaties in aantallen over een langere periode
In Figuur 5.3 hebben we voor Arsenal het gemiddelde aantal berichten per dag weergegeven, voor een periode van 30 oktober 2013 tot 14 januari 2014. In deze periode speelde
Arsenal twaalf Premier League wedstrijden, drie Champions League wedstrijden en ´e´en
45
FA Cup wedstrijd. In de grafiek vallen meteen een aantal pieken op. Deze pieken komen
overeen met de dagen waarop de wedstrijden gespeeld werden.
De topwedstrijden (Liverpool, Man Utd, Man City, Chelsea) lokken een aanzienlijk hoger aantal berichten uit dan de wedstrijden tegen kleinere tegenstanders. Die berichten
worden echter pas in rekening gebracht naar de volgende wedstrijd toe, en niet voor deze
wedstrijd zelf. Dit zorgt ervoor dat de informatie die dat aantal waarborgt, eigenlijk een
pak minder relevant wordt, maar toch nog steeds erg doorweegt op de voorspelling voor de
volgende wedstrijd. We zien ook dat het aantal berichten net voor de topwedstrijden een
stukje hoger ligt dan bij de overige wedstrijden. Dit is natuurlijk wel relevante informatie.
Een belangrijke opmerking is dat er tussen de Premier League wedstrijden door ook nog
wedstrijden gespeeld worden, met name in de Champions League (afk. CL), FA Cup of
League Cup. Natuurlijk spelen enkel de absolute topploegen in de CL, en dat zijn ook
de ploegen die het meest kans maken om door te stoten in de FA en League Cup. Gezien
die wedstrijden nog maar eens extra gemiddelde berichtenaantallen opleveren geeft dit de
grote ploegen nog wat extra voordeel, bovenop de fanbasis die doorgaans al hoger ligt.
Dit leidt dus niet noodzakelijk tot een minder goede voorspeller.
Tenslotte zien we ook dat het interlandvoetbal een invloed heeft op de aantallen. Wanneer
het competitievoetbal ´e´en of twee weken onderbroken wordt, liggen de berichtenaantallen
ook meteen een stuk lager.
5.4.2
Verdeling van de berichtenaantallen over de verschillende
ploegen
Het is interessant om de gemiddeldes van de verschillende ploegen eens naast elkaar te
leggen, en aan de hand daarvan een klassement op te bouwen. In Figuur 5.4 staat het klassement op 13 april (het einde van onze berichtenverzameling) weergegeven, met daarnaast
het klassement op basis van berichtenaantallen.
Over het algemeen is er een duidelijke scheiding tussen de topteams en de mindere teams
zichtbaar. Zo hebben we, op ´e´en uitzondering na, in beide klassementen dezelfde acht
ploegen bovenaan. Tussen de ploegen is er wel nog wat geschuif, zowel boven- als onderaan,
maar over het algemeen geeft het klassement toch een redelijk realistische weergave van
de krachtsverhoudingen.
De ploegen die niet geheel overeenkomen in beide klassementen zijn in het rood aangeduid.
Zo hebben we Manchester City, toch ongeveer de ploeg met de meeste kwaliteit in de
Premier League, die amper op de achtste plaats staan op basis van berichtenaantallen.
Dat kan ermee te maken hebben dat ze nog steeds niet zoveel fans hebben als de gevestigde
topteams, gezien Man City pas de voorbije jaren aan een steile opmars bezig is.
46
Figuur 5.3: Het gemiddeld aantal berichten per dag voor Arsenal.
47
Voorspellingssysteem sd 20-24
easyAantallen
0.56
aantallen
0.48
sd 29-34
0.68
0.52
sd 20-24, 29-34
0.63
0.50
sd 10-24, 29-34
0.575
0.485
Tabel 5.7: Resultaten van het voorspellingssysteem op basis van berichtenaantallen.
Verder is er dan Sunderland, een redelijk stabiele eersteklasser, die nu in acuut degradatiegevaar verkeert. De berichtenaantallen blijven hier erg hoog omdat de aanhang nog
steeds groot is.
5.4.3
De evolutie naar het eind van het seizoen toe
Wanneer we eens kijken naar de gemiddelde berichtenaantallen tussen de 10e en 24e
speeldag, en vergelijken met de gemiddeldes tussen de 29e en 34e, gebeurt de toename
of afname van de gemiddeldes steeds op een logische manier. Zo daalt het aantal van
Arsenal aanzienlijk, wat te verklaren valt door de uitschakeling in de CL, en de daling in
de stand (na een hele tijd aan de leiding gestaan te hebben). Verder stijgen de berichten
over Liverpool bijvoorbeeld in aantal. Dit verklaren we door het feit dat Liverpool een
knappe resultatenreeks neerzette en zich plots weer in het titeldebat kwam mengen. In
dat opzicht leert het systeem steeds beter de verhoudingen tussen de ploegen naar het
einde van het seizoen toe.
5.4.4
Het voorspellen van de wedstrijden
In Tabel 5.7 staan de resultaten voor deze voorspeller. We hebben ook een eenvoudige
voorspeller toegevoegd aan de tabel, die gewoon de overwinning gaat geven aan de ploeg
met het hoogste aantal berichten naar aanleiding van de wedstrijd (easyAantallen).
Discussie
We zien dat deze module een correctheidspercentage van amper 50% haalt voor het chronologisch model, terwijl het systeem dat de thuisploeg telkens liet winnen zelfs al 51%
haalde. In [21] lagen de voorspellingen voor de winnaar van wedstrijden op basis van
berichtenaantallen ook lager dan bijvoorbeeld de statistische aanpak. De berichtenaantallen gaven in de paper echter wel betere resultaten wanneer de puntenspreiding of de
puntengrens voorspeld moest worden (zie 2.3.2).
Uit de eenvoudige voorspeller zouden we denken dat de laatste vijftig (of zelfs honderd)
wedstrijden met een relatief hoog correctheidspercentage te voorspellen moeten zijn. Wanneer we namelijk manueel puur de aantallen vergelijken, krijgen we daar zelfs een percentage van 63%. Indien we machinaal leren echter betrekken, merken we een sterke daling
48
Figuur 5.4: Het klassement op 13 april, en het klassement op basis van berichtenaantallen op
Twitter
49
tot 50%. We verklaren dit door te kijken naar de trainingsverzameling. Die is namelijk
veel onregelmatiger. Wanneer we daar ons eenvoudig systeem op loslaten, vinden we dat
in de eerste honderd wedstrijden amper 53% correct voorspeld wordt. Hierdoor gaat ons
systeem niet het model kunnen opbouwen zoals we gehoopt hadden. We onthouden wel
dat er potentieel zit in deze methode (zoals uit het eenvoudige model blijkt).
5.5
Module 3 - Sentimentanalyse
In deze module is het interessant om eerst te kijken hoe het classificatieproces van de berichten scoort. Vervolgens schakelen we over op het classificeren van de wedstrijduitslagen
zelf.
5.5.1
Het classificeren van de berichten
Zoals in het vorige hoofdstuk uitgelegd, hebben we zowel geclassificeerd op basis van een
bestaand softwarepakket (SentiStrength) als op basis van een zelfgemaakte classificeerder.
Voor het evalueren van die twee methodieken gebruiken we de 3400 berichten die we
geannoteerd hebben om onze eigen classificeerder op te bouwen. Voor SentiStrength
worden alle berichten overlopen en geclassificeerd, voor onze eigen classificeerder gebruiken
we kruisvalidatie met tien iteraties.
SentiStrength
SentiStrength quoteert een Twitterbericht door een positieve (1 tot 5) en negatieve (-1
tot -5) te geven. Om te controleren hoe goed SentiStrength presteert, gaan we berichten
indelen in drie categorie¨en:
• positief (positieve score > |negatieve score|)
• negatief (positieve score < |negatieve score|)
• neutraal (positieve score = |negatieve score|)
Vervolgens kunnen we in onze geannoteerde berichtenverzameling de zeven categorie¨en
reduceren tot een positieve (waar vertrouwen en aanmoedigingen dan bijgevoegd worden),
een negatieve (waar twijfel en nervositeit bijgevoegd worden) en een neutrale. Op deze
manier kunnen we SentiStrength quoteren. Het percentage van correct geclassificeerde
berichten is terug te vinden in Tabel 5.8, en wordt hieronder vergeleken met onze eigen
classificeerder.
50
Classificeerder Aantal categorie¨en Correctheidspercentage
SentiStrength
3
55.0%
Eigen 1
2
76.9%
6
66.3%
Eigen 2
Eigen 3
3
66.2%
7
64.9%
Eigen 4
Tabel 5.8: De correctheidspercentages voor het classificeren van Twitterberichten in sentimentcategorie¨en
Eigen classificeerder
We hebben onze eigen classificeerder op vier verschillende manieren gebruikt om tot vectoren te komen:
1. Twee categorie¨
en: positief en negatief (neutrale berichten worden genegeerd)
2. Zes categorie¨
en: positief, negatief, vertrouwen, twijfel, aanmoedigingen en nervositeit (neutrale berichten worden genegeerd)
3. Drie categorie¨
en: positief, negatief en neutraal
4. Zeven categorie¨
en: positief, negatief, vertrouwen, twijfel, aanmoedigingen, nervositeit en neutraal
In Tabel 5.8 worden de correctheidspercentages van de classificaties weergegeven.
Conclusie
Tabel 5.8 toont ons dat onze eigen systemen veel beter scoren dan SentiStrength. Het
hoogste percentage wordt behaald door Eigen 1 (76,9%). Daar hebben we natuurlijk
maar twee mogelijke categorie¨en. Rekening houdend met het aantal categorie¨en voor
elke aanpak, halen we voor de overige systemen ook acceptabele resultaten. Het feit dat
SentiStrength het hier niet zo goed doet als onze systemen valt te verklaren door de zeer
specifieke woordenschat die in heel veel berichten terugkomt.
We besluiten om verder te gaan met de types vectoren op basis van de eigen classificeerders, en SentiStrength achterwege te laten.
5.5.2
Het aanduiden van de ploeg waarover elk bericht gaat
Naast de keuze van de juiste emotie, dient ook een juiste keuze gemaakt te worden bij
welke ploeg die emotie hoort. Daartoe hebben we voor tweehonderd van de geannoteerde
berichten gecontroleerd of de emotie ook bij de aangeduide ploeg hoort. Dat bleek het
51
Voorspellingssysteem sd 20-24
sent1
0.48
sent2
0.50
sent3
0.48
sent4
0.48
sd 29-34
0.54
0.56
0.54
0.54
sd 20-24, 29-34
0.52
0.53
0.52
0.52
sd 10-24, 29-34
0.485
0.460
0.485
0.460
Tabel 5.9: Resultaten van onze statistische voorspellingssystemen
geval te zijn bij maar 60.5% van de berichten. Naast de mogelijkheid dat een fout sentiment aan een bericht toegewezen wordt, is de kans dus ook nog groot dat de emotie niet
over deze ploeg gaat, maar over een andere ploeg, of dat het bericht niet echt met voetbal
te maken heeft.
5.5.3
Het voorspellen van de wedstrijden
In Tabel 5.9 staan de correctheidspercentages voor onze vier sentimentgebaseerde voorspellers.
Discussie
In Tabel 5.9 staan de resultaten voor deze module. Enkel de tweede classificeerder (53%)
presteert beter dan het eenvoudige systeem dat telkens de thuisploeg laat winnen (51%),
en met amper twee procent.
Enkele tekortkomingen van de module staan hieronder opgelijst. Zij dragen bij tot de
mindere resultaten van deze module.
• Zoals in sectie 5.5.2 aangetoond, wordt niet altijd het juiste sentiment aan de juiste
ploeg toegekend. Dit zorgt voor afwijkingen in de gemiddelde sentimentscores die
per wedstrijd berekend worden, en kan het voorspellen op een negatieve manier
be¨ınvloeden.
• Daarbij aansluitend hebben we vaak vermeldingen van steden (Newcastle, Liverpool,
...) waarbij niet naar de voetbalploeg maar naar de stad verwezen wordt. Deze
berichten zouden eigenlijk niet in rekening gebracht mogen kunnen worden.
• Bepaalde gebeurtenissen, die eigenlijk niet relevant zijn voor de wedstrijd, kunnen
de sentimentscores gaan be¨ınvloeden. Zo waren er bijvoorbeeld op de verjaardag van
een speler (John Terry, al jarenlang de kapitein van Chelsea) heel erg veel positieve
berichten waarin een gelukkige verjaardag gewenst werd. Gezien die verjaardag
toevallig op de dag van de wedstrijd viel, werd de positieve score erg opgetrokken.
Zo’n gebeurtenissen zijn irrelevant voor de wedstrijd maar hebben dus toch een
aanzienlijke invloed op de voorspelling.
52
5.6
Module 4 - Voorspellingsanalyse
In deze module ontleden we de Twitterberichten om te kijken welke voorspellingen de
gebruikers zelf doen. We controleren eerst of dat ontleden correct gebeurt, en vervolgens
geven we enkele voorbeelden van gemiddelde voorspellingen bij een aantal wedstrijden.
Tenslotte worden de resultaten van deze module weergegeven.
5.6.1
Het correct ontleden van de Twitterberichten
Eerst hebben we gecontroleerd of de scores op een correcte manier uit de berichten gehaald
worden. Dat hebben we gedaan door driehonderd berichten handmatig te ontleden, en
te controleren of de score die ons systeem toekent aan de wedstrijd, dezelfde is. Hiertoe
hebben we zowel thuis-, uit- als neutrale voorspellingen bekeken, van zowel topmatchen
als matchen tussen kleinere ploegen. Over de driehonderd gecontroleerde berichten was
4% irrelevant, omdat die gingen over scores uit het verleden of over andere sporten. Van
de resterende 96% waren er 90% correct ontleed. Dat percentage ligt hoog genoeg om
telkens een realistisch gemiddelde te bekomen per wedstrijd over wat de supporters zelf
voorspellen.
5.6.2
De voorspellingen die de Twittergebruikers zelf doen
Om een idee te krijgen van wat er zoal voorspeld wordt door de Twittergebruikers zelf, is
het interessant om wat voorbeelden te geven voor een aantal wedstrijden. Die voorbeelden
zijn terug te vinden in Tabel 5.10. Zogenaamde thuisvoorspellingen zijn voorspellingen
waar enkel de thuisploeg vermeld werd in het bericht (analoog voor uitploegen), en de
neutrale voorspellingen hadden beide ploegen vermeld (wat natuurlijk niet noodzakelijk
betekent dat het een neutraal bericht is).
We zien dat in veel gevallen de berichten met maar ´e´en ploegvermelding ook erg partijdige
scores geven. In de gevallen waar de eigen ploeg ook duidelijk de sterkere is (bijvoorbeeld
Liverpool in de tweede wedstrijd, of Everton in de vierde wedstrijd), gaat die ploeg vanzelfsprekend een veel ruimere overwinning voorspeld krijgen. In de gevallen waar de eigen
ploeg duidelijk de zwakkere ploeg is, gaat de voorspelde overwinning veel minder ruim zijn,
of kan er zelfs een verlies voorspeld worden (zoals bij Sunderland in de tweede wedstrijd).
Wanneer we het gemiddelde nemen van de partijdige scores, of wanneer we naar de neutrale scorevoorspellingen kijken, zien we een behoorlijk realistische voorspelling van hoe
de wedstrijd zou moeten uitdraaien.
53
Wedstrijd
Chelsea v Arsenal
Liverpool v Sunderland
Everton v Arsenal
Fulham v Everton
Fulham v Newcastle
Sunderland v Southampton
1.
2.
3.
4.
5.
6.
2.25
3.86
2.19
2.34
1.94
1.76
Thuis
v 0.84
v 0.56
v 0.90
v 1.07
v 0.69
v 0.92
Neutraal
1.86 v 1.08
3.30 v 0.97
1.24 v 2.07
1.24 v 2.06
1.38 v 1.31
1.32 v 1.50
1.01
2.48
0.93
0.56
0.70
0.81
Uit
v
v
v
v
v
v
2.06
1.17
2.36
2.73
2.20
2.41
Tabel 5.10: Een aantal voorbeelden van thuis-, uit- en neutrale voorspellingen.
Voorspellingssysteem sd 20-24
easyVoorsp
0.60
voorspA
0.44
voorspB
0.52
voorspThuis/Uit
0.58
voorspNeutraal
0.52
voorspGemiddelde
0.62
voorspC
0.44
sd 29-34
0.64
0.54
0.62
0.68
0.62
0.60
0.54
sd 20-24, 29-34
0.62
0.49
0.57
0.63
0.57
0.61
0.49
sd 10-24, 29-34
0.555
0.565
0.570
0.545
0.590
0.580
0.550
Tabel 5.11: Resultaten van onze voorspellingssystemen op basis van voorspellingen door Twittergebruikers.
5.6.3
Het voorspellen van de wedstrijden
In Tabel 5.11 staan de resultaten van deze module weergegeven. We geven in de eerste
rij (easyVoorsp) ook een eenvoudige benadering, waarbij de ploeg die de hoogste score
toegekend krijgt door het gemiddelde te nemen over de drie soorten berichten (thuis, uit,
neutraal), de overwinning toegewezen krijgt. Op die manier kunnen we zien in welke mate
het machinaal leren een gunstige invloed heeft op het voorspellen van de resultaten.
Bij voorspA bouwden we de vectoren op met de drie categorie¨en berichten apart, en
bij voorspC voegden we nog eens het aantal berichten per categorie toe. Bij voorspB
namen we het verschil in score per categorie. VoorspThuis/Uit nam het gemiddelde van
de thuis- en uitcategori¨en, en voorspNeutraal keek alleen naar de neutrale categorie. Bij
voorspGemiddelde werd over alledrie de categorie¨en het gemiddelde genomen.
5.6.4
Discussie
VoorspA en voorspC voorspellen net niet de helft van alle uitslagen juist (beiden 49%).
Ook het voorspellen puur op basis van de neutrale berichten (57%), en op basis van de
verschillen tussen de scores (voorspB, 57%), presteert minder dan de overige systemen.
We kijken dus vanaf nu enkel nog naar voorspThuis/Uit en voorspGemiddelde, die respectievelijk 63% en 61% haalden. Het is duidelijk dat in dit geval de voorspellingen waarin
maar ´e´en hashtag voorkomt, een gunstigere invloed hebben om een voorspelling te doen,
dan de neutrale voorspellingen. Dat zal echter niet altijd het geval zijn, zoals uit het
54
niet-chronologisch model blijkt; via kruisvalidatie over de tweehonderd wedstrijden zullen
de neutrale berichten zelfs beter presteren (59% tegenover 54,5% en 58%).
Het eenvoudig voorspellingssysteem (easyVoorsp) gebruikt dezelfde gegevens als voorspGemiddelde, maar ondanks zijn eenvoud presteert het over de honderd wedstrijden in
ons chronologisch model net beter dan wanneer we machinaal leren toepassen. Dit heeft
opnieuw te maken met het feit dat de data uit de eerste honderd wedstrijden veel onregelmatiger is dan die in de laatste honderd wedstrijden. Wanneer we het eenvoudig
systeem namelijk toepassen op de eerste honderd wedstrijden krijgen we amper een correctheidspercentage van 50% (tegenover 62% in de laatste honderd). Dit verschil uit zich
ook bij het niet-chronologisch model, waar we zien dat het resultaat van de kruisvalidatie
inderdaad boven het eenvoudige systeem uitstijgt (58% tegenover 55,5%).
Een andere vaststelling is dat het systeem de correctheidspercentages van de statistische
module (64%) benadert. Twitter kan dus wel degelijk aangewend worden om op een
effectieve manier voetbalwedstrijden te gaan voorspellen. Een volgende stap is om te
kijken of we de statistiek en Twitter kunnen gaan combineren om een nog beter systeem
te bekomen.
5.7
Gecombineerde modules
In deze sectie evalueren we de prestaties van onze gecombineerde modules. Eerst geven we
een overzicht van de prestaties van de individuele modules, waarna we een keuze kunnen
maken welke types vectoren we gaan combineren. Tenslotte analyseren we de prestaties
van de gecombineerde modules.
5.7.1
Een overzicht van de individuele modules
We geven eerst nog eens een overzicht van hoe de individuele systemen apart presteerden,
en welke systemen we kiezen om te combineren.
Module 1 - Statistiek
Onze statistische voorspellers statA en statB behaalden voor het chronologisch model
respectievelijk 62% en 64%. Voor de combinaties gaan we beide systemen gebruiken.
Module 2 - Aantal berichten
De voorspeller op basis van het aantal berichten behaalde een correctheidspercentage van
50%.
55
Module 3 - Sentimentanalyse
Van de sentimentanalyse gaan we alleen voortwerken met sent2, waar het correctheidspercentage op 53% lag.
Module 4 - Voorspellingen door gebruikers
Uit de systemen die kijken naar de voorspellingen die de Twittergebruikers zelf doen,
kiezen we de twee beste systemen. Dit zijn voorspThuis/Uit (63%) en voorspGemiddelde
(61%).
De percentages worden ook allemaal nog eens weergegeven in Tabel 5.12 en Tabel 5.13.
5.7.2
Twee verschillende combinaties van vectoren
We gaan op twee verschillende manieren de samenstellingen bepalen van welke vectoren
we uiteindelijk gaan combineren.
1. We gaan van elke module de vector kiezen die de beste resultaten behaalde. Op die
manier gebruiken we de vier verschillende bronnen van informatie. Dit zijn statB,
aantallen, sent2 en voorspThuis/Uit.
2. Gezien modules 1 en 4 veel beter scoorden, kiezen we van elke module de twee types
vectoren die de beste resultaten behaalden. Dit zijn statA, statB, voorspThuis/Uit
en voorspGemiddelde.
We herhalen kort nog even de types van gecombineerde systemen die in sectie 4.5 uitgelegd
werden. Bij gecombineerde systemen van type A zullen we nieuwe vectoren opbouwen
door alle (of sommige) attributen uit de individuele vectoren samen te voegen. Bij type
B doen we met elk systeem voorspellingen, waarna we vervolgens een keuze maken door
bijvoorbeeld meerderheidsstemming toe te passen. Bij type C bouwen we opnieuw nieuwe
vectoren op, maar deze keer op basis van de voorspellingen die elk individueel systeem
doet.
5.7.3
Resultaten
Alle resultaten van de individuele systemen en hun combinaties zijn terug te vinden in in
Tabel 5.12 en Tabel 5.13.
Wanneer we de voorspellingen van de verschillende speeldagen eens gedetailleerder bekijken, merken we op dat combA all en combA as op de 21e speeldag maar liefst drie
56
Voorspellingssysteem sd 20-24 sd 29-34 sd 20-24, 29-34
Individuele systemen
statA
0.60
0.64
0.62
aantallen
0.48
0.52
0.50
sent2
0.50
0.56
0.53
voorspThuis/Uit
0.58
0.68
0.63
Gecombineerde systemen
combA all
0.48
0.62
0.55
combA as
0.48
0.62
0.55
combA best
0.5
0.62
0.56
combB meerderheid
0.58
0.64
0.61
combB gem.distr.
0.56
0.60
0.58
combB voorkeur
0.54
0.64
0.59
combC1
0.58
0.62
0.60
combC2
0.62
0.64
0.63
sd 10-24, 29-34
0.570
0.485
0.460
0.545
0.545
0.530
0.515
n.v.t.
n.v.t.
n.v.t.
0.600
0.595
Tabel 5.12: Resultaten van de eerste combinatie, met ´e´en systeem per module
Voorspellingssysteem sd 20-24 sd 29-34 sd 20-24, 29-34
Individuele systemen
statA
0.60
0.64
0.62
statB
0.58
0.70
0.64
voorspThuis/Uit
0.58
0.68
0.63
voorspGemiddelde
0.62
0.60
0.61
Gecombineerde systemen
combA all
0.66
0.70
0.68
combA as
0.66
0.70
0.68
combA best
0.6
0.64
0.62
combB meerderheid
0.64
0.64
0.64
combB gem.distr.
0.64
0.66
0.65
combB voorkeur
0.62
0.68
0.65
combC1
0.58
0.62
0.60
combC2
0.62
0.70
0.66
sd 10-24, 29-34
0.570
0.575
0.545
0.580
0.580
0.605
0.535
n.v.t.
n.v.t.
n.v.t.
0.595
0.610
Tabel 5.13: Resultaten van de tweede combinatie, met twee systemen uit zowel de eerste als de
vierde module.
57
gelijke spelen voorspellen. Gelijke spelen voorspellen is zeer af te raden indien hoge correctheidspercentages beoogd worden. Daarom zullen we in plaats van de gelijke spelen
de voorspelling doen die de tweede hoogste waarschijnlijkheid toebedeeld krijgt. Op die
manier lukt het om nog ´e´en wedstrijd extra correct te voorspellen. Daardoor wordt het
percentage over speeldag 20-24 van 64% naar 66% verhoogd.
5.7.4
Discussie
Eerste benadering: alle modules gebruikt
Uit onze eerste benadering kunnen we niet veel conclusies trekken. De vier modules
worden hier allen gebruikt, maar module 2 en 3 hebben erg lage correctheidspercentages
(50% en 53%). Daardoor wordt bij het combineren van de vier systemen de score omlaag
getrokken tot (in het beste geval, combC2 ) 63%, waar er met enkel statB 64% behaald
werd. We zien dat de gecombineerde systemen van type C het beste resultaat behalen
(63%), gevolgd door type B (61%).
Tweede benadering: enkel eerste en vierde module gebruikt
De tweede benadering is een stuk interessanter om te evalueren. We zien dat bij combA all
en combA as de maximale scores van de individuele systemen opgetrokken worden van
64% naar 68%. Daarmee doen we zelfs beter dan de 67% die via de cijfers van de gokkantoren behaald werd. We zijn er dus in geslaagd om de statistische voorspellingstechnieken
te optimaliseren door Twitter te gaan betrekken. Op die manier presteren we met 68%
dus beter dan de 64% van de individuele statistische voorspeller en de 67% van de gokkantoren.
5.8
Verdere analyse van de belangrijkste systemen
In deze sectie leggen we de systemen die het best presteren eens naast elkaar, en vergelijken
we met de gokkantoren.
5.8.1
Een vergelijking per speeldag
In deze subsectie analyseren we de voorspellingen die gedaan worden door het meest succesvolle systeem (combA as). In Figuur 5.5 wordt per speeldag gekeken hoeveel correcte
resultaten de individuele systemen voorspellen, en hoeveel het gecombineerde systeem er
correct voorspelt.
58
Het is duidelijk dat bepaalde speeldagen (bv. 31, negen correcte voorspellingen) beter te
voorspellen zijn dan anderen (bv. 24, vijf correcte voorspellingen). Speeldag 31 wordt
door alle systemen bijna volledig correct voorspeld, omdat er geen verrassingen of gelijke
spelen in de uitslagen zaten. Bij speeldag 24 vinden we echter dat er enkele verrassende
resultaten vielen (Stoke City won tegen Man Utd won, Chelsea won bij Man City), en
dat er ook al twee gelijke spelen vielen. Dat zorgt ervoor dat de voorspellers (maar ook
de gokkantoren) bij deze speeldag minder goed presteren.
Verder scoort het gecombineerde systeem maar heel zelden slechter dan ´e´en van de individuele systemen op een speeldag. Meestal ligt de waarde ongeveer gelijk met de hoogste
waarde van ´e´en van de individuele systemen. Dit zorgt er dan ook voor dat het gecombineerde systeem over de hele lijn beter scoort.
Vervolgens maken we de vergelijking van het gecombineerde systeem met de voorspellingen
volgens de gokkantoren in Figuur 5.6. Deze resultaten lopen over het algemeen zeer gelijk,
maar toch zitten hier en daar verschillen in de voorspellingen. Het is dus niet zo dat de
systemen dezelfde fouten maken bij dezelfde wedstrijden.
5.8.2
De voorspellingen waar nog fouten gemaakt worden
We bouwen voort op de analyse van het beste gecombineerde systeem. Er zijn vier categorie¨en waar de voorspellingen nog foutlopen:
• Gelijke spelen zijn te zeldzaam om te gaan voorspellen, dus hoe meer gelijke spelen
in een bepaalde periode vallen, hoe meer fouten er gemaakt zullen worden. In onze
testverzameling hebben we voor de eerste vijftig wedstrijden 20% gelijke spelen,
waardoor er nog 14% foute voorspellingen gedaan worden (het correctheidspercentage ligt daar namelijk op 66%). Bij de volgende vijftig wedstrijden hebben we 10%
gelijke spelen, waardoor er nog 20% foute voorspellingen gedaan worden (want het
correctheidspercentage ligt daar op 70%).
• Onvoorspelbare resultaten, waarbij een topploeg van een kleine ploeg verliest. Alle
voorspellingssystemen gaan normaal de topploeg aanduiden als winnende partij,
waardoor alle voorspellingssystemen dezelfde fout maken.
• Wedstrijden tussen twee ploegen die erg aan elkaar gewaagd zijn, en waarbij voor
de verkeerde partij gekozen wordt. Deze wedstrijden maken normaal het verschil
tussen de voorspellingssystemen, en geven aan of een beter voorspellingssysteem
nog mogelijk zou kunnen zijn.
• Wedstrijden die volgens de logica een duidelijke winnaar zouden moeten hebben,
maar die door ons systeem toch een andere winnaar toegewezen krijgen.
59
Figuur 5.5: Het aantal correcte voorspellingen per speeldag voor enkele individuele systemen, en
de combinatie ervan. (Opmerking: speeldagen 29 en 32 bestaan elk uit maar vijf wedstrijden)
60
Figuur 5.6: Het aantal correcte voorspellingen per speeldag voor het beste (gecombineerde)
voorspellingssysteem, vergeleken met de gokkantoren. (Opmerking: speeldagen 29 en 32 bestaan
elk uit maar vijf wedstrijden)
61
Wedstrijd
Uitslag
Onvoorspelbare uitslagen
Stoke v Man Utd
2-1
Newcastle v Sunderland
0-3
Aston Villa v Chelsea
1-0
Crystal Palace v Chelsea
1-0
Partijen aan elkaar gewaagd
Man Utd v Tottenham
1-2
Fulham v Sunderland
1-4
Cardiff v West Ham
0-2
Man City v Chelsea
0-1
Aston Villa v Stoke
4-3
Newcastle v Everton
0-3
Swansea v Norwich
3-0
Sunderland v West Ham
1-2
Norwich v West Brom
0-1
Cardiff v Crystal Palace
0-3
Aston Villa v Fulham
1-2
Onlogische voorspellingen
Southampton v Chelsea
0-3
Southampton v West Brom
1-0
Voorspelling
Uitwinst
Thuiswinst
Uitwinst
Uitwinst
Thuiswinst
Thuiswinst
Thuiswinst
Thuiswinst
Thuiswinst
Thuiswinst
Uitwinst
Thuiswinst
Thuiswinst
Thuiswinst
Thuiswinst
Thuiswinst
Uitwinst
Tabel 5.14: De voorspellingen van combA as die fout zijn, verdeeld over de drie categorie¨en
(gelijke spelen niet meegerekend)
In Tabel 5.14 worden de wedstrijden uit de laatste drie categorie¨en die door combA as
nog fout voorspeld worden, weergegeven.
Bij wedstrijden waarbij de partijen aan elkaar gewaagd zijn, valt het op dat bijna altijd
voor een thuiswinst gekozen wordt. Dat is zo wegens het thuisvoordeel, en het feit dat de
meeste wedstrijden in een thuiswinst eindigen.
5.8.3
Een vergelijking met de gokkantoren
Een finale vergelijking kunnen we maken door te kijken wat de opbrengst zou zijn mochten
we op elke wedstrijd ´e´en euro inzetten. We vergelijken met de benadering wanneer we
gewoon de grootste kans volgens de gokkantoren volgen.
Op elke wedstrijd een euro inzetten, wil zeggen dat we honderd euro inzetten in totaal.
Wanneer we volgens de gokkantoren inzetten, maken we daarop een winst van 18,55 euro.
Het is echter niet zo dat de gokkantoren volgen altijd lucratief is. Dit hangt vooral van
de resultaten af. Over de eerste honderd wedstrijden van onze dataverzameling werd er
door de gokkantoren te volgen een verlies van 2,34 euro opgetekend.
Wanneer we terug over de laatste honderd wedstrijden kijken, en inzetten volgens de
voorspellingen van een statistische voorspeller (statB ), levert dat 25,82 euro op. Wanneer
62
Voorspellingssysteem sd 20-24
gokkantoren
0.66
statA
0.60
statB
0.58
aantallen
0.48
sent2
0.50
voorspThuis/Uit
0.58
voorspGemiddelde
0.62
combA as
0.66
combC2
0.62
sd 29-34
0.68
0.64
0.70
0.52
0.56
0.68
0.60
0.70
0.70
sd 20-24, 29-34
0.67
0.62
0.64
0.50
0.53
0.63
0.61
0.68
0.66
sd 10-24, 29-34
0.620
0.570
0.575
0.485
0.460
0.545
0.605
0.610
Tabel 5.15: Overzicht van de belangrijkste resultaten
we echter inzetten volgens combA as, maken we een winst van maar liefst 29,70 euro.
Ons systeem presteert dus ook hier beter dan de gokkantoren of de statistische benadering.
5.9
Overzicht van de belangrijkste resultaten
Om dit hoofdstuk te besluiten, geven we in Tabel 5.15 nog eens een overzicht van de
belangrijkste resultaten die in dit hoofdstuk behaald werden.
In dit hoofdstuk hebben we zowel onze individuele als gecombineerde systemen ge¨evalueerd.
Onze eerste module haalde over de honderd testwedstrijden een correctheidspercentage
van 64%. De beste systemen voor de tweede en derde modules haalden respectievelijk
50% en 53%. Met de vierde module haalden we maximaal 63%. Wanneer we onze beste
systemen echter gingen combineren, konden we het correctheidspercentage optrekken naar
maar liefst 68%. Daarmee doen we zelfs beter dan de gokkantoren, waar maar 67% van
de wedstrijden correct voorspeld werden.
We kunnen dus besluiten dat de collectieve kennis op Twitter een relevante bron aan
informatie is wanneer we voetbalwedstrijden willen gaan voorspellen. Door de combinatie
met bestaande systemen maken kunnen we een nog beter systeem samenstellen.
63
Hoofdstuk 6
Besluit en toekomstig werk
6.1
Besluit
In deze masterproef hebben we aan de hand van Twitter wedstrijden proberen voorspellen
uit de Engelse Premier League. We hebben dat gedaan op vier manieren:
1. Statistiek (nog geen Twitter): wedstrijden voorspellen op basis van de positie in
de competitie, het aantal gemaakte doelpunten, de vorm in de laatste wedstrijden,
...
2. Aantal berichten: wedstrijden voorspellen op basis van het aantal berichten dat
in de aanloop naar de wedstrijd over beide ploegen geplaatst werd.
3. Sentimentanalyse: wedstrijden voorspellen op basis van de emoties die de berichten per ploeg bevatten in de aanloop naar de wedstrijd.
4. Voorspellingen door gebruikers: wedstrijden voorspellen op basis van wat de
gebruikers op Twitter zelf voorspellen.
De tweede en derde manier konden eenvoudige algoritmen niet overtreffen. De statistische manier haalde wel erg goede resultaten. Ook de vierde manier, die enkel Twitter
gebruikt, behaalde resultaten die gelijkaardig zijn aan die van de statistische benadering.
Vervolgens hebben we geprobeerd om de vier benaderingen te combineren, om zo een grotere hoeveelheid informatie aan te kunnen spreken waardoor de correctheidspercentages
nog zouden kunnen stijgen. Wanneer we de vier individuele modules bundelden, lukte
het niet om de percentages te verbeteren. Wanneer we echter de minder goede tweede en
derde modules weglieten, lukte het wel om het correctheidspercentage van 64% naar 68%
te verhogen. Daarmee doen we beter dan de resultaten die op basis van de gokkantoren
64
voorgelegd kunnen worden. Twitter bevat dus zeker waardevolle informatie om voetbalwedstrijden te voorspellen, waarmee in combinatie met andere informatie een effici¨ent
voorspellingssysteem te vormen valt.
6.2
Toepasbaarheid op het WK
Twee weken na het indienen van deze masterproef begint in Brazili¨e het wereldkampioenschap voetbal. Het is dan ook interessant om eens na te denken in welke mate deze
masterproef kan ingezet worden in andere competities, en dus meer specifiek op het WK.
We bekijken per module de mogelijke problemen die zouden kunnen optreden.
Module 1 - Statistiek
Voor normale competities werkt de statistische benadering op dezelfde manier als in de
Premier League, en zal die ook dezelfde resultaten behalen. Bij het WK dienen we echter
op te letten. Het WK wordt maar ´e´en keer om de vier jaar gespeeld, en dus kan er in
die periode veel veranderen. Ploegen veranderen erg ten op zichte van het vorige WK
(of zelfs EK). Wanneer we bijvoorbeeld naar de Rode Duivels kijken, staat er nu een
veel sterkere ploeg dan enkele jaren geleden, en het laatste WK waaraan ze deelnamen,
dateert zelfs al van 2002. Belgi¨e wordt echter door velen bij de outsiders geplaatst voor het
WK. Er kan natuurlijk afgegaan worden op kwalificatiecampagnes of de wereldranglijst,
maar daarvoor werden veel wedstrijden vaak tegen een groot aantal matige tot slechte
ploegen gespeeld en die zijn dus niet noodzakelijk representatief voor de kracht van de
ploeg. Ook is een groot tornooi een hele andere belevenis waarbij ervaring een grotere rol
speelt. Voor de statistische benadering zal dus best een specifiekere aanpak gelden, waarbij
naar een combinatie gekeken wordt van voorbije grote tornooien, kwalificatiecampagnes,
individuele prestaties van de spelers bij hun clubs, ...
Module 2 - Aantal berichten
Om het aantal berichten te meten, gaat de grootte en bevolking van het land een belangrijke rol spelen. Dit was natuurlijk al het geval in de Engelse competitie, maar op
wereldschaal heeft dit een nog grotere invloed. Grote landen met een minder sterk elftal
(bijvoorbeeld de Verenigde Staten) zouden zo een veel groter aantal berichten kunnen
toegewezen krijgen dan landen met een klein bevolkingsaantal maar een erg sterke voetbalploeg (bijvoorbeeld Nederland dat op het vorig WK de tweede plaats behaalde).
65
Module 3 - Sentiment
De sentimentanalyse zou nog het grootste probleem geven. De sentimentanalyse is namelijk heel erg taalgebonden. In de Engelse competitie wordt het overgrote deel van de
berichten in het Engels geplaatst. Op het WK is dat echter niet het geval. Zo zou er voor
elke mogelijke taal een apart model gemaakt moeten worden, ´en de berichten moeten dan
nog eens de juiste taal toegewezen krijgen. Hier kan dus nog meer foutlopen, dus lijkt
deze manier van werken niet toepasbaar op het WK. Ook in onze Belgische competitie
zou wegens de tweetaligheid het systeem al problemen krijgen.
Module 4 - Voorspellingen
Het extraheren van voorspellingen uit Twitterberichten zou geen probleem mogen geven,
indien we rekening houden met de verschillende schrijfwijzen voor elke ploeg. Wel dient
er opgemerkt te worden dat partijdigheid een grotere invloed kan gaan hebben dan in de
Premier League. Net zoals bij het aantal berichten, zullen grotere landen hier een voordeel
krijgen, omdat er meer eigen supporters zijn die een positieve voorspelling voor hun ploeg
plaatsen. We verwachten echter dat die partijdigheid tenietgedaan wordt door het feit
dat heel de wereld naar het WK kijkt, en dat het aantal niet-partijdige berichten nog veel
groter is. Deze module zou dus even goed moeten werken als in de Premier League.
6.3
Toekomstig werk
Meer Twitterdata verzamelen
De grootste tekortkoming in deze masterproef is het gebrek aan Twitterdata. We hebben
maar van 200 wedstrijden data, wat ongeveer de helft van ´e´en voetbalseizoen in de Premier
League is. Om algemenere conclusies te trekken, die minder situatiegebonden zijn, zou
er Twitterdata van enkele seizoenen verzameld moeten worden. Zo kan er op enkele
seizoenen geoefend worden, om dan vervolgens voor ´e´en of meer seizoenen alles te gaan
voorspellen. Op die manier worden enkele specifieke eigenschappen van het voetbalseizoen
opgelost:
• Het feit dat in het begin van de seizoen de machtsverhoudingen nog niet gekend
zijn. Er gaan bijvoorbeeld nog minder goede teams bovenaan het klassement staan.
Naar het einde van het seizoen toe staat iedereen waar hij moet staan en heeft het
publiek ook een beter idee waartoe elke ploeg in staat is.
• Het feit dat op het einde van het seizoen de resultaten voorspelbaarder worden,
omdat de titelkandidaten nu absoluut moeten winnen wanneer de titel dichtbij is.
66
Die verbetenheid is in het begin van het seizoen niet altijd even drastisch aanwezig.
Ook zullen in een normaal seizoen steeds meer (top)ploegen uitgeschakeld worden
in de Europese competities, waardoor ze zich naar het einde van het seizoen toe met
de volledige ploeg op de competitie kunnen concenteren.
Diepgaande sentimentanalyse
Wegens de tijdsbeperkingen van deze masterproef, is het niet mogelijk geweest om een
heel diepgaande sentimentanalyse te doen. In de literatuur [13, 23] werden nog allerlei
manieren beschreven om een uitvoerige analyse te maken van wat gebruikers net in hun
berichten willen vertellen. Door berichten effici¨enter te gaan categoriseren, kan van de
sentimentanalyse misschien nog wel een waardevolle bron van informatie gemaakt worden,
die dan ook nog eens aan het gecombineerd systeem toegevoegd kan worden.
67
Bibliografie
[1] http://www.thesportsgeek.com/sports-betting/math/, November 2013.
[2] http://www.betexplorer.com/soccer/england/premier-league/results/, May 2014.
[3] S. Bergsma, D. Jung, R. Lau, and Y Wang. Machine learning approaches to sentiment
classification. In Proceedings of EMNLP, pages 79–86, Department of Computing
Science, University of Alberta, 2002.
[4] J. Bollen, H. Mao, and X. Zeng. Twitter mood predicts the stock market. Journal
of Computational Science, 2(1):1–8, March 2011.
[5] Chih-Chung Chang and Chih-Jen Lin. Libsvm: A library for support vector machines. ACM Trans. Intell. Syst. Technol., 2(3):27:1–27:27, May 2011.
[6] Gambling Commission. Industry statistics, april 2009 to march 2012. Technical
report, 2012.
[7] Kevin Gimpel, Nathan Schneider, Brendan O’Connor, Dipanjan Das, Daniel Mills,
Jacob Eisenstein, Michael Heilman, Dani Yogatama, Jeffrey Flanigan, and Noah A.
Smith. Part-of-speech tagging for twitter: Annotation, features, and experiments.
In Proceedings of the 49th Annual Meeting of the Association for Computational
Linguistics: Human Language Technologies: Short Papers - Volume 2, HLT ’11,
pages 42–47, 2011.
[8] Jennifer Golbeck and Derek Hansen. Computing political preference among twitter
followers. In Proceedings of the SIGCHI Conference on Human Factors in Computing
Systems, CHI ’11, pages 1105–1108, 2011.
[9] Pollyanna Gon¸calves, Matheus Ara´
ujo, Fabr´ıcio Benevenuto, and Meeyoung Cha.
Comparing and combining sentiment analysis methods. In Proceedings of the first
ACM conference on Online social networks, COSN ’13, pages 27–38, 2013.
[10] Thorsten Joachims. Text categorization with suport vector machines: Learning with
many relevant features. In Proceedings of the 10th European Conference on Machine
Learning, ECML ’98, pages 137–142, 1998.
68
[11] A. Joseph, N. E. Fenton, and M. Neil. Predicting football results using bayesian nets
and other machine learning techniques. Know.-Based Syst., 19(7):544–553, November
2006.
[12] Matthias Kunz. 265 million playing football. In FIFA Magazine, pages 10–15, July
2007.
[13] Xiaohua Liu, Kuan Li, Bo Han, Ming Zhou, Long Jiang, Zhongyang Xiong, and
Changning Huang. Semantic role labeling for news tweets. In Proceedings of the
23rd International Conference on Computational Linguistics, COLING ’10, pages
698–706, 2010.
[14] Xiaohua Liu, Kuan Li, Ming Zhou, and Zhongyang Xiong. Collective semantic role
labeling for tweets with clustering. In Proceedings of the Twenty-Second International
Joint Conference on Artificial Intelligence, volume 3 of IJCAI’11, pages 1832–1837,
2011.
[15] Panagiotis Takis Metaxas, Eni Mustafaraj, and Daniel Gayo-Avello. How (not) to
predict elections. In SocialCom/PASSAT, pages 165–171. IEEE, 2011.
[16] Thomas
M.
Mitchell.
Machine
learning
(extra
http://www.cs.cmu.edu/ tom/mlbook/NBayesLogReg.pdf, 2005.
chapters).
[17] Subhabrata Mukherjee, Akshat Malu, Balamurali A.R., and Pushpak Bhattacharyya.
Twisent: a multistage system for analyzing sentiment in twitter. In Proceedings of
the 21st ACM international conference on Information and knowledge management,
CIKM ’12, pages 2531–2534, 2012.
[18] Bo Pang, Lillian Lee, and Shivakumar Vaithyanathan. Thumbs up?: Sentiment
classification using machine learning techniques. In Proceedings of the ACL-02 Conference on Empirical Methods in Natural Language Processing - Volume 10, EMNLP
’02, pages 79–86, 2002.
[19] Hassan Saif, Yulan He, and Harith Alani. Semantic sentiment analysis of twitter.
In Proceedings of the 11th international conference on The Semantic Web - Volume
Part I, ISWC’12, pages 508–524, 2012.
[20] L. Shi, N. Agarwal, A. Agrawal, R. Garg, and J. Spoelstra. Predicting us primary
elections with twitter. In Proceedings of Social Network and Social Media Analysis:
Methods, Models and Applications (NIPS Workshop), Lake Tahoe, NV, December 7,
2012.
69
[21] S. Sinha, C. Dyer, K. Gimpel, and N. A. Smith. Predicting the nfl using twitter. In
Proceedings of ECML/PKDD Workshop on Machine Learning and Data Mining for
Sports Analytics, 2013.
[22] A. Tsakonas, G. Dounias, S. Shtovba, and V. Vivdyuk. Soft computing-based result prediction of football games. In The Ist International Conference on Inductive
Modelling, ICIM’2002, pages 15–23, 20-25 May 2002.
[23] Xiaofeng Wang, Matthew S. Gerber, and Donald E. Brown. Automatic crime prediction using events extracted from twitter posts. In Proceedings of the 5th International Conference on Social Computing, Behavioral-Cultural Modeling and Prediction,
SBP’12, pages 231–238, 2012.
70
Lijst van figuren
3.1
De GUI van WEKA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2
Een voorbeeld van een enkele vectoren in een csv-bestand . . . . . . . . . . 13
3.3
Het principe van kruisvalidatie . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.1
Een voorbeeld van hoe de verschillende types vectoren tot stand komen
(Module 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2
Een voorbeeld van hoe de verschillende types vectoren tot stand komen
(Module 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3
Een voorbeeld van hoe de verschillende types vectoren tot stand komen
(Module 3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4
Een voorbeeld van hoe de verschillende types vectoren tot stand komen
(Module 4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5
Gecombineerde systemen van type C: het opbouwen van de vectoren door
de voorspellingen van voorgaande modules te combineren . . . . . . . . . . 34
5.1
De tests volgens het chronologisch model. . . . . . . . . . . . . . . . . . . . 38
5.2
De tests volgens het niet-chronologisch model. . . . . . . . . . . . . . . . . 40
5.3
Het gemiddeld aantal berichten per dag voor Arsenal. . . . . . . . . . . . . 46
5.4
Het klassement op 13 april, en het klassement op basis van berichtenaantallen op Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5
Het aantal correcte voorspellingen per speeldag voor enkele individuele systemen, en de combinatie ervan. (Opmerking: speeldagen 29 en 32 bestaan
elk uit maar vijf wedstrijden) . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.6
Het aantal correcte voorspellingen per speeldag voor het beste (gecombineerde) voorspellingssysteem, vergeleken met de gokkantoren. (Opmerking:
speeldagen 29 en 32 bestaan elk uit maar vijf wedstrijden) . . . . . . . . . 60
71