Previdevanje cene nepremičnine z uporabo predikcij
1. Sistemi znanja: Predvidevanje cene nepremičnine
Predvidevanje cene
nepremičnine
Podatkovno rudarjenje / Sistemi znanja / Google Prediction API
Oto Brglez, oktober 2011
2. Sistemi znanja: Predvidevanje cene nepremičnine
Kazalo
Problem
Zajemanje podatkov
Ustvarjanje modela in učenje
Spletna aplikacija
Težave in možne izboljšave
Viri
3. Sistemi znanja: Predvidevanje cene nepremičnine
Problem
Določanje cene nepremičnine je zapleten postopek. Cena posamezne nepremičnine je
odvisna od njene lokacije, starosti, velikosti, opremljenosti in dostopa. Zato je določanje
cene neke nepremičnine zelo zahtevno in velikokrat prodajalci/kupci izbirajo cene glede na
cene, ki veljajo za podobne nepremičnine. Oziroma določijo ceno glede na svojo osebno
oceno, pogled ali mnenje.
Odločil sem se, da z uporabo tehnik podatkovnega rudarjenja in predikcij pripravim
preprosto rešitev, ki omogoča enostavno, hitro in pregledno ugotavljanje vrednosti
nepremičnine.
Postopek gradnje je bil sestavljen iz pridobivanja podatkov, ustvarjanja modela, učenja le
tega ter izdelavo razvoja aplikacije.
Zajemanje podatkov
Zaradi kompleksnosti problema sem se odločil, da si za začetek sposodim podatke iz
spletnega nepremičninskega iskalnika GoHome. Slednjega sem izbral zato, ker je imel
relativno veliko število dobro organiziranih in raznovrsnih nepremičnin v relativno enostavni
strukturi.
Podatke sem pridobil tako, da sem spisal skript, ki je z uporabo storitve YQL izluščil večjo
količino podatkov in jih je potem shranil v CSV datoteko.
V CSV datoteki so bili tako zbrani podatki zapisani, po sledečem primeru:
462324,121.74,"Stanovanje","LJUBLJANA"
135000,80.00,"Stanovanje","KAMNIK"
110000,40.00,"Stanovanje","KOPER"
100000,24.00,"Stanovanje","LJUBLJANA"
115000,109.00,"Stanovanje","CELJE"
… itd ...
Pred prvo vejico - vrednost nepremičnine v evrih, pred drugo vejico velikost v m2, pred
tretjo vejico vrsta nepremičnine in na koncu še lokacija. Vrste nepremičnin sem klasificiral kot
Stanovanje, Hiša ali Zemljišče. Osredotočil sem se na mesta: Ljubljana, Maribor, Celje, Kranj,
Velenje, Koper, Ptuj, Trbovlje, Kamnik, Lucijo in Logatec.
Dobljeno CSV datoteko sem z uporabo orodja gsutil prenesel v Google Storage. Googlov oblak
namenjen izmenjavi datotek. V spodnjem primeru prikazujem vsebino “vedra” estates v katerem
se nahaja datoteka “gohome”.
5. Sistemi znanja: Predvidevanje cene nepremičnine
Ustvarjanje modela in učenje
Po uspešnem prenosu CSV datoteke v oblak sem izvedel OAuth2 avtentifikacijo moje
skripte z uporabo “oacurl” knjižnice preoblečene v skripto. Po uspešnem avtentificiranju in
pridobitvi “žetona” sem lahko začel z uporabo REST storitev.
Proces učenja v storitvi Google Prediction poteka, tako, da pokličemo REST storitev in ji
ukažemo naj nad podatki v Google Storage začne izdelavo analize in modela. Učenje nad
začetnimi podatki poteka v ozadju.
Učenje in analiza podatkov traja nekaj časa. Zelo odvisno od količine podatkov in
kompleksnosti le teh. Stanje učenja lahko preverimo z uporabo druge REST metode.
Iz podatkov pridobljenih iz modela lahko vidimo na kolikih podatkih je bilo izvedeno učenje,
tip modela in napako v numerični obliki. “trainingStatus” - pojasni stanje.
Vsa komunikacija z API-jem poteka v formatu JSON po HTTPS avtentificirano z OAuth2.
Kat zagotavlja zelo varno povezavo in nadzor nad dostopom do podatkov. Poleg metod za
učenje lahko z uporabo testne konzole izvajamo tudi testne poizvedbe in dodajamo nove
učne primere, ter tako “dograjujemo” naš model. Sledi primer poizvedbe za stanovanje v
velikosti 130 m2 v Ljubljani z uporabo testne aplikacije.
6. Sistemi znanja: Predvidevanje cene nepremičnine
Spletna aplikacija
V sklopu projekta sem pripravil tudi preprosto spletno aplikacijo, ki z uporabo Google
JavaScript Prediction API omogoča, da lahko “predvidevamo” nove cene. Aplikacija je
sestavljena tako, da vsebuje polje za vpis velikosti, dva padajoča menija za izbor tipa
nepremičnine in lokacijo. Ob potrditvi obrazca se izvede REST klic spletne storitve in kot
odgovor dobimo vrednost, ki jo potem ustrezno prikažem znotraj aplikacije.
Težave in možne izboljšave
● Google Prediction API v trenutni aktualni različici ne omogoča vpogleda v algoritme,
ki so uporabljani za pridobitev rezultatov. Tudi ni mogoče te algoritme kakorkoli
izboljšati, dograditi, dodelati in tako dobiti še boljše predikcije.
● Za bolj natančne analize bi bilo potrebno zajeti še večje količine podatkov in več
atributov. Velik problem aplikacije je pomanjkanje atributa “leto izgradnje”, saj le
ta zelo vpliva na ceno. Verjetno pa bi bilo pametno dodati in razdelati tudi atribut
lokacija, saj se lahko recimo cena napremičnine v centru Ljubljane bistveno razlikuje
od cene nepremičnine na obrobju
● Storitev Google Prediction API je plačljiva storitev. Do določene kvote je njena
uporaba brezplačna, preseg kvote pa se zaračunava.
7. Sistemi znanja: Predvidevanje cene nepremičnine
Viri
● Google Prediction API
http://code.google.com/intl/sl-SI/apis/predict/
● GoHome.si
http://www.gohome.si/
● Oto Brglez - weka_home - Skripta za pridobivanje podatkov
https://github.com/otobrglez/weka_home
● Oto Brglez - dom-opalab - Izvorna koda spletne aplikacije
https://github.com/otobrglez/dom-opalab
● Poizkusna različica
http://dom.opalab.com/
● Oto Brglez
http://opalab.com