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
, en de overige vermeldingen van ploegen vervangen we door .
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