TEXT ANALYTICS Gast College TouW Longhow Lam -- Data Scientist @longhowlam https://longhowlam.wordpress.com/ https://www.linkedin.com/today/author/7434679
AGENDA Inleiding Text mining & Machine learning Ludieke voorbeelden Goede tijden Slechte tijden IENS Reviews Ajax samenvattingen Twee klant cases.
INLEIDING TEXT MINING EN MACHINE LEARNING
TEXT MINING BASIS Document 1: Ik loop over straat in Amsterdam, 1057DK, met mijn fiets Document 2: Zij liep niet maar fietste met haar blauwe fieets, //bitly.com/sdrtw Document 3: Mijn tweewieler is kapot, wat een slecht stuk ijzer, @#$%$@! Terms Doc 1 Doc 2 Doc 3 +Fiets (znmw) 1 1 1 Fietsen (ww) 0 1 0 Blauwe (bvg) 0 1 0 Amsterdam (locatie) 1 0 0 +Lopen (ww) 1 1 0 Straat (znmw) 1 0 0 Kapot (bijw) 0 0 1 Slecht 0 0 1 Stuk Ijzer 0 0 1 1057DK (postcode) 1 0 0 //bitly.com/sdrtw (Internet) 0 1 0 TERM DOCUMENT MATRIX: A Elk document is een (zeer) lange vector van tellingen (vaak veel nullen!) Pas data mining toe op de matrix A.
TEXT MINING BASIS Geavanceerd woordjes tellen Parse & Filter Part of speech Entity detection Mixed / numeric / abbrev. Stemming Spell checks, Stop lijst, Synoniem lijst Multi-term woorden Pas Traditionele data mining toe Clustering Prediction / machine learning
TEXT MINING TERM DOCUMENT MATRIX A Het is niet handig om data mining technieken direct op de term document matrix toe te passen Often more terms than documents Rows could be strongly correlated Matrix is often very sparse Doe eerst een Singular Value decomposition.
TEXT MINING SVD OP DE TERM DOCUMENT MATRIX A Dit staat ook bekend als Latent Semantic Analysis (LSA) Matrix SVD decompositie: V T k A A k U k U Σ Σ k V T Diagonaal met r singular values [ kunnen er duizenden zijn ] Neem alleen de eerste k << r singular values Een document d is nu niet een vector van m woord counts maar een kortere vector d, Een punt in de 300 dimensionale ruimte!
SVD EXAMPLE USING MY SON AS AN EXPERIMENT Original 2448 X 3264 ~ 8 mln numbers SVD: 15 largest SV s 1% of the data SVD: 75 largest V s 5% of the data SVD: 100 largest SV s 7% of the data
TEXT MINING VOORSPELLEN OF CLUSTEREN Combineer teksten en gewone data om gedrag te voorspellen (churn / fraud) Pas machine learning toe om gedrag (ook wel de target) Y te voorspellen met een model f Maak automatisch topics / clusters in hoge stapels documenten Pas cluster technieken toe om documenten in clusters (topics) in te delen Topic 1 Topic 2 Topic 3
MACHINE LEARNING OM TE VOORSPELLEN SUPERVISED LEARNING LINEAR REGRESSIE, NEURAL NETS, TREES & FORESTS, KNN
MACHINE LEARNING VOORSPEL IEMANDS INKOMEN Voorspel iemand inkomen op basis van leeftijd Verzamel wat data Plot de data Analytical Base Table Income Income = 15.2 + 1.102 Age Is dit machine learning? Ja! Y = w 0 + w 1 X 1 + w 2 X 2 + w 3 X 3 Age
NEURAAL NETWERK LINEAIRE REGRESSIE 1 w 0 f Y = f (X,w) = w 0 + w 1 X 1 + w 2 X 2 + w 3 X 3 X 1 w 1 X 2 w 2 X 3 w 3 Neuraal netwerk compute node f is de zgn. activatie functie. Dit is nu lineair Er zijn vier gewichten die bepaald / getraind moeten worden
NEURAAL NETWERK WISKUNDIGE FORMULERING In formules wordt de NN voorspeller gegeven door: P Y X) = g T Y Leeftijd X1 α 1 T Y = β 0Y + β Y T Z Inkomen X2 Z1 β 1 Z m = σ α 0m + α m T X Z2 Y De functies g en σ zijn als volgt gedefinieerd Regio X3 N Z3 g T Y = et Y e T N+e T Y, σ(x) = 1 1+e x In geval van een binaire classifier P N X = 1 P(Y X) Geslacht X4 X inputs Hidden layer z outputs De model gewichten α and β moeten getraind worden m.b.v. de data
NEURAAL NETWERK DE GEWICHTEN TRAINEN Back propagation algorithm Randomly choose small values for all w i s For each data point (observation) 1. Calculate the neural net prediction 2. Calculate the error E (for example: E = (actual prediction) 2 ) 3. Adjust weights w according to: w i new = w i + w i w i = α E w i 4. Stop if error E is small enough.
DEEP LEARNING NEURAAL NETWERK MET MEER DAN 2 HIDDEN LAYERS
DECISION TREES Hoe werkt het? Een simpel voorbeeld Stel we hebben de volgende groep mensen 50% Response 50% No Response We weten van deze mensen Age and Marital Status 30% 70% 50% 50% Age 45 Age> 45 60% 40% 20% 80% Married Divorced UnMarried 60% 40%
DECISION TREES REGRESSION & CLASSIFICATION Target X 1 X 2 X 3 X 4 X 5 Y 12 A 456 1.2 X N 21 B 456 1.5 X Y 32 A 545 1.3 U Y 34 C 443 1.1 U N 23 A 345 1.7 U N 13 B 567 1.2 X N 45 A 654 1.9 X Y 46 A 657 2.1 X Een recursief splits algoritme: 1. Loop door alle input variabelen 2. Bepaal per input hoe te splitsen 3. Neem de beste input om te splitsen 4. Op de twee nieuwe datasets pas stap 1, 2, 3 toe. 5. Stop een keer.
COMBINE MODELS BAGGING If one model is not good enough: let multiple models vote for a prediction Bootstrap Aggregation (Bagging) data Random sample Final model This makes only sense if underlying models are different enough and have some predictive power
Random Forests Bagging with trees Pas volgende stappen herhaaldelijk toe 1. Genereer een bootstrap sample 2. Kies random m inputs m << P 3. Fit een decision tree op de bootstrap sample met de m inputs In geval van een classification tree: The random forest voorspelling is de majority vote van alle trees In geval van een regression tree: The random forest voorspelling is het gemiddelde van alle trees
K-NEAREST NEIGHBOR METHODE Het is geen Model. Gegeven query punt x 0, vind de k punten x 1, x 2,..., x k die het dichtstbij x 0 liggen. Classificeer x 0 met majority vote van de k neighbours x 0 5 nearest neighbours van x 0 3 zijn rood 2 zijn groen Dus we voorspellen x 0 als rood
K-NN METHOD Gebruik verschillende waarden voor k in test errors Ondanks de simpelheid is k-nearest-neighbors succesvol ingezet voor problemen als: Recognizing handwritten digits, Analyzing satellite image scenes Discovering EKG patterns
K-NN EXAMPLE HUIZENPRIJZEN OP FUNDA Scrape de huisprijzen van funda.nl We hebben 108K funda huisprijzen. Hoe kunnen de huisprijs schatten van huizen (die niet op funda staan)? Neem de gemiddelde prijs van de k huisprijzen die het dichtstbij liggen
K-NN EXAMPLE HUIZENPRIJZEN OP FUNDA 30% van de data was gebruikt als validatie set Verschillende waarden voor k geprobeerd k = 5 had de laagste Average squared error
CLUSTER TECHNIEKEN VOOR TOPICS CREATION UNSUPERVISED LEARNING K-MEANS HIËRARCHISCH CLUSTEREN
K-means Hiërarchisch clusteren Kies aantal clusters: k Start met k random cluster centroids Wijs de punten toe aan een dichtstbijzijnde cluster centroid Centroids her-berekenen en itereren Elk punt is een aparte cluster Voeg punten samen die dichtbij elkaar liggen Ga zo door tot alle punten 1 cluster vormen
TEXT ANALYTICS VOORBEELDEN ECHTE DATA MAAR LUDIEKE VOORBEELDEN Ludieke voorbeelden met directe toepassingen Goede tijden slechte tijden Soap analytics Iens Restaurant analytics Ajax samenvattingen
GTST ANALYSIS TEXT ANALYTICS Business pain Kijkend naar een paar GTST afleveringen: waar gaat dit over, zijn er trends in de serie, is het niet allemaal het zelfde? Aanpak Neem alle duizenden samenvattingen en pas SAS text mining toe
GTST ANALYSIS RESULTATEN Hoofd topics in 5000 afleveringen
GTST ANALYSIS RELATIE TUSSEN TOPICS
GTST ANALYSIS INZOOMEND OP EEN TOPIC
GTST ANALYSIS INZOOMEND OP EEN TOPIC Sub-topics van een hoofd topic: topic 16 (Ludo, Isabelle, Martine, Janine) Het eenzaam voelen van Harmsen. Plan van Jack, gevaarlijk Afscheidsbrief schrijven Paniek, angst, Vragen opdracht kind geven Geld terug krijgen betalen Business validatie: De trouwe GTST kijker bij SAS kan zich hierin vinden..
GTST ANALYSIS RESULTATEN Trends over tijd m.b.v. een Bayesian belief netwerk
GTST ANALYSIS TRENDS OVER TIJD
GTST ANALYSE GELIJKENIS AFLEVERINGEN OVER DE JAREN
IENS RESTAURANT PATH ANALYTICS Business pain Ik heb Chinees gegeten. Waar moet ik de volgende keer eten? Kan ik het sentiment voorspellen? Aanpak Kijk naar wat andere doen, IENS restaurant reviewers!
EEN PAAR FEITJES IENS DATA (TRADITIONELE BI) Meest voorkomende naam (39 keer) Zo n 700 reviews op een normale zaterdag Valentijn 2015 1200 reviews (1.7 keer) Duurzame keukens Biologisch (67%) Frans (58%) Vis (44%) Vegetarisch (39%) Regionaal (36%) Chinees (3%) 12 keer 23 keer Onder Hollandse restaurant (6 keer)
IENS RESTAURANT PATH ANALYSIS: GEGENEREERDE REGELS
PERSOONLIJKE RECOMMENDATIONS Amazon, BOL, Netflix, Recommendation Engines Collaborative filtering, SVD Factorizations
RECOMMENDATION ENGINE Users rated items (products) explicitly Matrix is often very sparse!! IENS 100,889 users 8,900 Restaurants 897,912,100 ratings possible But only 211,143 ratings given (0.02%) USER ITEM MATRIX User - Item Matrix Data User 4's Item Ratings User 4 - - 1 2 5 After some math. recommendations are: User 4 3.21 4.82 1 2 5 EXPLICIT RECOMMENDATIONS Item 1 Item 2 Item 3 Item 4 Item 5 User 1 3 2 5 4 5 User 2 - - - 1 1 User 3 1-2 5 - User 4 - - 1 2 5 User 5 2 1 4 2 3 User 6 2 3-5 1 User 7 5 1-3 4 User 8-1 - 4 1 User 9 2 3 2 4 2 User 10-1 3-1 Recommend item 2!
RE METHODS K NEAREST NEIGHBORS METHOD
PERSOONLIJKE RESTAURANT AANBEVELING
Social Netwerk analysis Chinese restaurants Community Kleur Page rank Grootte
IENS REVIEWS ANALYTICS OP DE 210.000 REVIEWS ZELF Parse and filter reviews met SAS text miner Transformeer reviews naar data punten in SVD space.
IENS REVIEWS TOPICS Genereer enkele topics met SAS Text miner Sfeer, heerlijke avond gezellig, mooie locatie Wijn, glas, water Lang wachten Pittig, kip, Thais Bediening, personeel
IENS REVIEWS HET EET CIJFER VOORSPELLEN Neural (2 X 20) R 2 van 0.65 Linear reg model R 2 van 0.56
IENS REVIEWS HET EET CIJFER VOORSPELLEN Predicted review score vs. Given review score
IENS REVIEWS SENTIMENT ANALYSE / PREDICTIVE MODELING
AJAX VOETBAL VERSLAGEN Business pain Ik kan niet mee praten op mijn werk over voetbal Kan ik wat tips meegeven aan ons SAS NL voetbal team? Aanpak Text mine alle Ajax voetbal verslagen en leer wat interessante resultaten uit je hoofd. Er zijn 476 voetbal verslagen. Ik heb gescraped van seizoen 2000/01 tot 2014/15.
AJAX CONCEPT LINKING VOETBAL TIPS EN STOF OM OVER MEE TE PRATEN Het verdedigingstrio van der Wiel, Vertongen, Anita Wie herinnert zich niet de mooie passes van Aldewereld naar Boerrigter Zorg niet voor veel balverlies, is een domper zorgt voor onrust en leidt niet tot een overwinning Chivu, Machlas en Heitinga worden vaak geassocieerd met overtredingen De Jong en Chivu worden vaak met verlies geassocieerd. Knullig spelen levert ook grote kans op verlies.. Score binnen 23 minuten! Leidt vaak tot winst
WERKT HET? SAS NEDERLAND VOETBAL TEAM In september 6e geworden i.p.v. altijd laatste!!!!
TWEE USE CASES BIJ BEDRIJVEN
TEXT ANALYTICS OPERATIONAL RISK ANALYSIS DUTCH BANK 100 s of complaints per month (web, email,..) Identify issues related to financial risks, and causing reputation damage, like: Fraudulous collections Problems with refinancing mortgages Insight in claim risks based on customer complaints Results: More efficient and faster complaint handling
TEXT ANALYTICS IDENTIFY EMERGING RISKS ON FOOD AND PRODUCT SAFETY DUTCH FOOD AND CONSUMER PRODUCT SAFETY AUTHORITY Use cases: Identify potential high-risk companies based on customer reviews (e.g. restaurant reviews on web) Identify product failures based on customer complaints Optimize resources for inspection of companies
SAMENVATTEND teksten analyseren met text mining en machine learning is makkelijk te doen. Snel inzichten uit teksten te halen Business validatie nodig en belangrijk! Dit is ludiek! Maar talrijke serieuze toepassingen