Text mining; hoe brainbay de aanbiedingstekst van een woning gebruikt voor een betere modelwaardering.
In het afgelopen jaar heeft brainbay een machine learning applicatie ontwikkeld die op basis van de aanbiedingstekst, van een woning, een uitspraak doet over de algehele kwaliteit van een woning.
Verder lezenVoor het maken van een zo accuraat mogelijke modelwaardering van een woning zijn woningkenmerken omtrent locatie en oppervlaktes uiteraard van zeer groot belang en vrij eenvoudig te verzamelen. Echter zal op basis van deze “harde” woningkenmerken de afwijking van een modelwaardering ten opzichte van de marktwaarde in veel gevallen nog steeds behoorlijk te wensen over laten. Een van de voornaamste redenen hiervan is dat er geen enkele rekening gehouden wordt met de algehele kwaliteit van een woning. Zaken als de staat van onderhoud van de woning en de tuin, het kaliber van de gebruikte materialen, een specifieke ligging naast of in de buurt van andere objecten en de ligging en zoninval van de tuin. Twee woningen die qua locatie en oppervlaktes nagenoeg identiek zijn kunnen zomaar 30% of zelfs meer in prijs verschillen als de ene compleet in verval en de andere tot in de details gerenoveerd is en een gunstigere tuinligging heeft.
Uit de aanbiedingstekst van een woning is nog veel meer specifieke en voor een woningwaardering relevante informatie te destilleren, door middel van text mining. Om hiervan gebruik te maken in onze Brainbay modelwaarde en referentie API’s alsmede in onze andere NVM-applicaties hebben we het afgelopen jaar een machine learning applicatie ontwikkeld die op basis van de aanbiedingstekst een uitspraak doet over de algehele kwaliteit van een woning. In dit artikel bespreek ik hoe dit text mining model in hoofdlijnen werkt.
Informatie in de aanbiedingstekst
In een aanbiedingstekst staan doorgaans veel woorden die iets zeggen over het algehele kwaliteitsniveau van een woning in vergelijking tot omliggende woningen in dezelfde wijk. Als je bijvoorbeeld woorden tegenkomt als luxe, fraai, hoogwaardig en warmtepomp dan zal in veel gevallen de betreffende woning wat hoger in de markt staan dan de gemiddelde woning in de wijk. Aan de andere kant van het spectrum zal je woorden als kluswoning, gedateerd, verontreinigd en gaskachel treffen wat duidt op een woning die relatief gezien goedkoper zal zijn. Bovengenoemde voorbeelden zijn vrij helder, maar tussen de uitersten zit natuurlijk een groot grijs gebied. Tevens zijn er een heleboel woorden die uitsluitend in het zinsverband of als woordcombinatie duidelijk maken in welke richting er gezocht moet worden. Neem als voorbeeld het woord “gemoderniseerd”. Zo kan een woning “recent geheel gemoderniseerd zijn”, maar je kunt deze ook als “woning dient gemoderniseerd te worden” tegenkomen. Het is dus de kunst om in het text mining model niet alleen te focussen op de woorden in de tekst maar ook te scannen op woordcombinaties.
Ontleden van de aanbiedingstekst voor Text mining
Het is ondoenlijk voor een mens om alle woorden en woordcombinaties die mogelijk een hint geven omtrent de algehele woningkwaliteit zelf te bedenken en vervolgens ook nog een uitspraak te doen over de sterkte van die relatie. Tevens kan het voorkomen dat er een relatie bestaat tussen een combinatie van woorden en de woningkwaliteit die niet direct evident is maar er wel blijkt te zijn. Gelukkig hoeven we dit ook niet allemaal zelf te doen en kunnen we geholpen worden door een machine learning model.
Voordat we een dergelijk model loslaten op onze aanbiedingsteksten zullen we deze eerst alleen moeten ontleden en omvormen tot iets waar het model wat mee kan. Dit betekent dat we alle aanbiedingsteksten waar we het model van willen laten leren gaan omzetten in matrixvorm. De eerste stap in dit proces is om de aanbiedingsteksten te ontdoen van nietszeggende woorden. Enkele voorbeelden hiervan zijn de, het, op, is, ik, wat, die enzovoorts. Vervolgens laten we een algoritme alle verschillende woorden en alle unieke combinaties van 2, 3 of 4 opvolgende woorden die in de aanbiedingsteksten voorkomen verzamelen. Zoals je je wellicht kunt voorstellen zijn dit er voor een groot aantal aanbiedingsteksten vele honderdduizenden. Hiermee wordt onze verzameling echter veel te groot en daarom gaan we daarin filteren. We verwijderen uit onze verzameling alle woorden en woordcombinaties die in het overgrote merendeel van de aanbiedingsteksten voorkomen. Deze hebben namelijk weinig voorspellende waarde, een woord als woning zal bijvoorbeeld vrijwel in iedere tekst voorkomen maar ook geen relevantie informatie bevatten. Tevens verwijderen we alle woorden en woordcombinaties die in een te klein percentage van de teksten voorkomen omdat het model hier niet goed van kan leren en er tevens “overtraining” van het model op willekeurigheden dreigt.
Aanbiedingstekst in matrixvorm
We zijn nu klaar om de aanbiedingsteksten in matrixvorm om te zetten. Iedere regel representeert hierin een aanbiedingstekst en iedere kolom representeert een woord of woordcombinatie die na de opschoning is overgebleven. Vervolgens tellen we hoe vaak een woord of woordcombinatie voorkomt in de aanbiedingstekst en vullen we dat in onze matrix in, hiermee krijgen we een zogeheten document-term frequency matrix, hieronder als voorbeeld in mini-vorm weergegeven.
In de praktijk hebben we uiteraard te maken met een veel grotere matrix met vele duizenden aanbiedingsteksten (documents) en woorden/woordcombinaties (terms). Een dergelijk matrix kan reeds als input voor een machine learning model gebruikt worden maar beter is het om eerst nog een aantal correcties toe te passen.
Optimaliseren van de matrix
Niet alle aanbiedingsteksten zijn even lang en dit creëert een disbalans in onze matrix waarbij langere teksten automatisch grotere term-frequencies krijgen. We delen daarom de term-frequencies eerst door het totaal aantal woorden in de aanbiedingstekst om hiervoor te corrigeren. Tevens zijn sommige woorden en woordcombinaties van nature veel gebruikelijker dan anderen en zullen na onze eerdere filters nog steeds één of meerdere keren in erg veel aanbiedingsteksten voorkomen. Omdat deze zo vaak voorkomen hebben ze weinig onderscheidend vermogen en daardoor ook weinig voorspellende waarde voor de algehele woningkwaliteit. Daarom delen we de term-frequencies in onze matrix eveneens door de “document frequency” (of de logaritme daarvan voor grote datasets). De “document frequency” geeft aan in hoeveel procent van de aanbiedingsteksten een woord of woordcombinatie voorkomt. Hierdoor verkleinen we de relevantie van erg gangbare woorden en vergroten we die van meer onderscheidende woorden. Dit leidt tot de zogeheten TF-IDF (term frequency – inverse document frequency) matrix, welke er in onze mini-vorm als volgt uitziet (hierbij gaan we er voor het gemak even vanuit dat de aanbiedingsteksten even lang zijn).
Hier is duidelijk te zien dat een term die weinig voorkomt zoals “eigen smaak” aan kracht heeft gewonnen ten opzichte van de meer gangbare “woonkamer”.
Classificeren van de woningen met machine learning
Nu we de TF-IDF matrix hebben vormgegeven is het tijd geworden om hiervan te gaan leren. Wat we daarvoor nodig hebben is een flinke set van gelabelde woningen waarvan de algehele kwaliteit reeds bepaald is. We hanteren voor dit doeleinde binnen Brainbay momenteel 4 kwaliteitsklassen (matig, ondergemiddeld, bovengemiddeld en luxe). Hier kunnen we vervolgens een zogeheten “supervised classification” model op loslaten. We hebben namelijk gelabelde data (supervised) en we proberen de kwaliteitsklasse te voorspellen (classification). Voordat we de machine learning procedure kunnen starten zorgen we eerst nog dat het aantal waarnemingen per klasse enigszins bij elkaar in de buurt ligt, omdat het model anders een te grote natuurlijke voorkeur zal krijgen voor het voorspellen van de klasse met het hoogste aantal waarnemingen.
Modelkeuzes Text mining
We hebben momenteel gekozen voor 2 modeltypen, de relatief eenvoudige logistische regressie en de wat complexere support vector machine. De logistische regressie doet niet heel veel onder voor de support vector machine en heeft als bijkomend voordeel dat deze eveneens de “class probabilities” teruggeeft. Met andere woorden, voor iedere woning wordt voor elk van onze 4 klassen de kans teruggegeven dat de woning in die kwaliteitsklasse valt. Voor de support vector machine is dit lastiger, maar deze levert wel de beste individuele klasse-voorspelling. Het toelichten van de werking van deze modellen valt buiten de scope van dit artikel, maar voor de liefhebber is dit eenvoudig op te zoeken.
Resultaten
Om de prestatie van het model te beoordelen hebben we onze support vector machine getest op een grote set van gelabelde maar door het model ongeziene woningen (deze zijn dus niet in het trainingsproces gebruikt). Hieruit blijkt dat het model in ca. 72,7% van de gevallen de juiste kwaliteitsklasse kiest. De resultaten van de test zijn hieronder weergegeven in een zogeheten genormaliseerde “confusion matrix”. Deze kan je als volgt interpreteren: van de woningen die het werkelijke label “luxe” hebben wordt ca. 80% door het model ook daadwerkelijk als “luxe” geclassificeerd. Het model voorspelt voor deze woningen de klasse “bovengemiddeld” in ca. 17% van de gevallen, “ondergemiddeld” in ca. 1,5% van de gevallen en “matig” in ca. 1,7% van de gevallen. Positief is dat als het model er naast zit dit in het overgrote merendeel om een verschil van slechts 1 klasse gaat. Een voorspelling die er 2 of 3 klassen naast zit is in relatieve zin vrij zeldzaam.
Zoals aangegeven bevat de modelvoorspelling van de logistische regressie voor iedere aanbiedingstekst de kans per kwaliteitsklasse. Dit geeft ons de mogelijkheid om een continue variabele te creëren welke woningen nog nauwkeuriger van elkaar onderscheidt. Stel dat we de score “matig” het cijfer 1 toekennen, “ondergemiddeld” een 2, “bovengemiddeld” een 3 en “luxe” een 4. Door de klasse-kansen hiermee te vermenigvuldigen krijgt ieder woning een score op een continue schaal van 1 tot 4. Wanneer we dit toepassen op een grote set van voor het model ongeziene woningen krijgen we een beeld van de distributie die ons model aan de gehele populatie van te koop staande woningen geeft.
Deze is hieronder weergegeven en een aantal zaken vallen hierin op. Omdat we het model bewust forceren om een keuze te maken tussen onder- of bovengemiddeld vertoont de distributie een klein dalletje in het midden tussen de 2 pieken welke bij deze scores horen. Tevens komen scores tussen bovengemiddeld en luxe vrij beperkt voor (er is daar sprake van een diep dal). Dit heeft er vermoedelijk mee te maken dat gedateerde woningen vaak volledig gerenoveerd worden en er dan weer piekfijn uitzien. De bijbehorende aanbiedingstekst bevat dan dikwijls een heleboel woorden en woordcombinaties die deze totale renovatie bevestigen. In die gevallen is het model erg zeker en geeft dus een score die erg dicht bij de 4 ligt, met de steile piek in die hoek als gevolg. Aan de andere zijde van het spectrum bestaat er niet een dergelijk effect, langzaamaan raken woningen steeds meer gedateerd en de ene woning is in een nadrukkelijk slechtere staat dan de andere. Zodoende ontbreekt er aan die kant een piek maar loopt de distributie langzaam af naar beneden.
Uitbreiden van het text mining algoritme
Het toepassen van text mining op aanbiedingsteksten levert ons een goed beeld omtrent de algehele kwaliteit van een woning en resulteert zodoende in nog nauwkeurigere geautomatiseerde waardebepalingen. Echter blijft voor de meest nauwkeurige waardebepaling de taxateur met zijn lokale kennis onvervangbaar. Onze modelwaarderingen leveren wel meer inzicht vooraf, en besparen daarmee veel tijd. In de toekomst willen we ons text mining algoritme verder gaan uitbouwen. Zo zouden we bijvoorbeeld de algehele woningkwaliteit kunnen splitsen in een label voor het onderhoud van de woning, de kwaliteit van de gebruikte materialen en de staat van de tuin, waar dan vervolgens een exotischer multilabel classification model op losgelaten kan worden. Hiermee kunnen we nog specifieker van de aanbiedingsteksten gaan leren, wat onze applicaties verder kan verbeteren.
Indien dit artikel je interesse in Brainbay, onze modelwaarde API, referentie API of onze andere applicaties gewekt heeft bezoek ons dan eens op: www.brainbay.nl
Wil je op de hoogte blijven van de ontwikkelingen op de vastgoedmarkt en onze producten? Volg ons dan op LinkedIn.