SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
Sistemi znanja: Predvidevanje cene nepremičnine




Predvidevanje cene
nepremičnine
Podatkovno rudarjenje / Sistemi znanja / Google Prediction API




                                                   Oto Brglez, oktober 2011
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
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”.
Sistemi znanja: Predvidevanje cene nepremičnine

Izvorna koda skipte za pridobivanje podatkov.




.
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.
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.
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

Contenu connexe

Plus de Oto Brglez

Akka with Scala
Akka with ScalaAkka with Scala
Akka with ScalaOto Brglez
 
How to over-engineer things and have fun? Building a modern, distributed real...
How to over-engineer things and have fun? Building a modern, distributed real...How to over-engineer things and have fun? Building a modern, distributed real...
How to over-engineer things and have fun? Building a modern, distributed real...Oto Brglez
 
Kdaj lahko uporabimo piškotke?
Kdaj lahko uporabimo piškotke?Kdaj lahko uporabimo piškotke?
Kdaj lahko uporabimo piškotke?Oto Brglez
 
Continuous integration (CI) v praksi
Continuous integration (CI) v praksiContinuous integration (CI) v praksi
Continuous integration (CI) v praksiOto Brglez
 
Ruby in prijatelji
Ruby in prijateljiRuby in prijatelji
Ruby in prijateljiOto Brglez
 
Ruby in ogrodje Rails
Ruby in ogrodje RailsRuby in ogrodje Rails
Ruby in ogrodje RailsOto Brglez
 
Subversion in Redmine implementacija
Subversion in Redmine implementacijaSubversion in Redmine implementacija
Subversion in Redmine implementacijaOto Brglez
 
Šolski Spletni Informacijski Sistem
Šolski Spletni Informacijski SistemŠolski Spletni Informacijski Sistem
Šolski Spletni Informacijski SistemOto Brglez
 
PHP: Hypertext Preprocessor Introduction
PHP: Hypertext Preprocessor IntroductionPHP: Hypertext Preprocessor Introduction
PHP: Hypertext Preprocessor IntroductionOto Brglez
 
Java Servlet in JSP
Java Servlet in JSPJava Servlet in JSP
Java Servlet in JSPOto Brglez
 

Plus de Oto Brglez (12)

Akka with Scala
Akka with ScalaAkka with Scala
Akka with Scala
 
How to over-engineer things and have fun? Building a modern, distributed real...
How to over-engineer things and have fun? Building a modern, distributed real...How to over-engineer things and have fun? Building a modern, distributed real...
How to over-engineer things and have fun? Building a modern, distributed real...
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Kdaj lahko uporabimo piškotke?
Kdaj lahko uporabimo piškotke?Kdaj lahko uporabimo piškotke?
Kdaj lahko uporabimo piškotke?
 
Continuous integration (CI) v praksi
Continuous integration (CI) v praksiContinuous integration (CI) v praksi
Continuous integration (CI) v praksi
 
nanob
nanobnanob
nanob
 
Ruby in prijatelji
Ruby in prijateljiRuby in prijatelji
Ruby in prijatelji
 
Ruby in ogrodje Rails
Ruby in ogrodje RailsRuby in ogrodje Rails
Ruby in ogrodje Rails
 
Subversion in Redmine implementacija
Subversion in Redmine implementacijaSubversion in Redmine implementacija
Subversion in Redmine implementacija
 
Šolski Spletni Informacijski Sistem
Šolski Spletni Informacijski SistemŠolski Spletni Informacijski Sistem
Šolski Spletni Informacijski Sistem
 
PHP: Hypertext Preprocessor Introduction
PHP: Hypertext Preprocessor IntroductionPHP: Hypertext Preprocessor Introduction
PHP: Hypertext Preprocessor Introduction
 
Java Servlet in JSP
Java Servlet in JSPJava Servlet in JSP
Java Servlet in JSP
 

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”.
  • 4. Sistemi znanja: Predvidevanje cene nepremičnine Izvorna koda skipte za pridobivanje podatkov. .
  • 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