Summary: Šiame darbe yra nagrinėjami dirbtinio intelekto metodai, siekiant atlikti tiksles- nę Vilniaus mieste ir rajone parduodamų butų vertę. Darbe yra naudojama viešai prieinama informacija apie parduodamus butus iš Aruodas.lt kuri yra surenkama automatizuotu būdu. Informacija kuri yra renkama susideda iš tekstinės – parduodamo buto skelbimo aprašy- mas, nuotraukų – skelbime patalpintos nuotraukos, bei bendrinė informacija pateikiama skelbime – kaina, vietovė, buto plotas, buto ypatumai ir kita. NT vertės nustatymo užda- viniuose nuolat pasitaikanti problema yra mažai vertės turinčių objektų pervertinimas ir/ar didelę vertę turinčių objektų nepakankamas vertinimas. Sprendžiant regresijos uždavinius, mes dažnai turime duomenų apie daugumą objektų, tačiau visuomet per mažai itin pigių, bei itin prabangių. Dėl šios priežasties vertinti daugumos objektų vertę yra lengviau, nei pigių ar brangių. Vis dėl to, dėl tobulėjančių dirbtinio intelekto metodų bei informacijai tampant vis lengviau pasiekiamai, mūsų galimybės geriau įvertinti šio tipo būstus tampa vis didesnė. Darbe tikimasi, jog informacija esanti nuotraukose ir tekste leis atlikti geresnę būsto vertės prognozė geriau vertinant tiek pigius, tiek brangius butus. Pirmojoje darbo dalyje atliekama literatūros apžvalga, kitų autorių darbų nagrinėjusių dirbtinio intelekto pa- naudojimo galimybes būsto vertės prognozavimui. Antroje dalyje aprašomi tyrimo metodai, kurie bus taikomi darbe ir pristatoma informacijos rinkimo strategija. Trečiojoje dalyje yra atliekamas tyrimas, kurio metu iš pradžių yra atliekama požymių inžinerija, o vėliau modelių apmokymas bei optimizavimas. Galiausiai yra pristatomi geriausio modelio su 13.74 MAPE, ir 33,307 RMSE rezultatai, bei pateikiamos išvados.
Keywords: mašininis mokymasis, regresija, būsto vertės nustatymas, teksto analizė, vaizdų, klasterizavimas, aruodaslt.
Abstract: In this work, the methods of artificial intelligence are analyzed in order to perform a more accurate value prediction of the apartments sold in Vilnius city and district. The work uses publicly available information about apartments put for sale on Aruodas.lt, which is collected in an automated way. The information that is collected consists of a text – description of the apartment for sale, photos – photos placed in the ad, and general information provided in the ad – price, location, apartment size, various features of the apartment and more. A constant problem in real estate valuation is the overvaluation of low-value objects and/or underestimation of high-value objects. When dealing with regression problems, we often have data on most average objects, but never enough of cheap and luxurious ones. For this reason, estimating the value of most properties is easier than cheap or expensive. However, as the methods of artificial intelligence evolve and information becomes more and more available, our ability to better value this type of housing increases. It is hoped that the information contained in the photos and text will allow for a better forecast of the value of housing by better valuing both cheap and expensive apartments. In the first part of the work, a review of the literature is performed where other authors have examined the possibilities of using artificial intelligence to predict the value of housing. The second part describes the research methods that will be applied in the work and presents the information gathering strategy. In the third part, a study is conducted, during which feature engineering is performed first, followed by model training and optimization. Finally, the results of the best model with 13.74 MAPE and 33,307 RMSE are presented along with the conclusions of the work.
Keywords: machine learning, regression, housing price prediction, text analysis, vision analysis, clustering, aruodas.lt.
Articles
Nekilnojamojo turto vertės nustatymas pasitelkiant mašininio mokymosi technikas
Real estate valuation using machine learning techniques

Received: 28 June 2022
Published: 10 December 2022
Vertės nustatymas bei kainos prognozavimas yra nuo seno sprendžiami uždaviniai. Vieni uždaviniai keliami siekiant numatyti, kaip keisis valiutų, akcijų ar prekių kainos per tam tikrą laiką, kiti – keliami tam, kad pasitelkus atitinkamus požymius apie objektą būtų apskaičiuota galima jo vertė. Nors pirmieji yra laiko eilutės uždaviniai, o antrieji – regresiniai, kurie anksčiau buvo sprendžiami atskirai, dabar, kai darosi vis lengviau surinkti daugiau informacijos bei besivystant naujiems ir pažangesniems metodams – gali būti atlikti kartu siekiant pasiekti geresnius rezultatus. Negana to, atsiranda vis daugiau galimybių įtraukti vis daugiau informacijos į modelių sudarymą bei atsirinkti požymius, geriausiai išsprendžiančius šiuos uždavinius.
Gerai sudaryti modeliai gali būti naudojami prognozuoti įvairią vertę ar kainą, pavyzdžiui, automobilių, nekilnojamojo turto, žaliavų, valiutų ir kt. Tačiau ypač aktualūs yra modeliai skirti NT vertei. Šie modeliai ypač naudingi bankams, kadangi už kiekvienos paskolos egzistuoja įkeistas turtas, o finansinės įstaigos privalo prisiimti riziką klientui bankrutavus ir tapus nemokiam. Bankai, kurie patys vykdo savo kredito rizikos valdymą A-IRB (angl. Advanced Internal Rating-Based), privalo stebėti pagal Bazelio (angl. Basel) reikalavimus įkeisto turto vertę, jog atitiktų visus rizikos standartus. Taip pat dideli bankai turi klientų ne tik vienoje šalyje, o keliose. Todėl gerai įvairius NT objektus galintis vertinti modelis tampa ypač paklausus. Vienintelė problema, jog modelio paaiškinamumo stoka (dažnai neatsiejama nuo sudėtingesnių modelių) taip pat yra rizika bankui, todėl modelio paaiškinamumas ir galimybė lengvai jį interpretuoti taip pat yra itin svarbūs modelio elementai.
Tikslus NT kainų prognozavimas atneštų naudos ne tik bankams, bet ir kitoms finansinėms įstaigoms, pavyzdžiui, draudimo. Žinant turto vertę galima tikslingai atsidėti kapitalą priimamai rizikai atsverti. Nekilnojamojo turto sektorius taip pat turi daug potencialo, nes tikslus modelis galėtų pakeisti būsto vertintojus ir tapti skaidri ir nešališka alternatyva vertinti NT vertę.
Taigi, modelis gebantis tiksliai prognozuoti NT vertę turi gana platų pritaikomumą, tačiau uždavinio sprendimas nėra paprastas, dėl didelio neužtikrintumo NT vertėje. Būsto vertę įtakoja ne tik ekoniminiai veiksniai tokiai kaip infliacija, kylan- tys atlyginimai, nedarbo lygis ir k.t, tačiau ir abstraktūs ar ne tokie „pamatuojami“ kriterijai būdingi konkretiems objektams. Pavyzdžiui, identiškas butas tame pačiame name gali kainuoti skirtingai nuo daug faktorių: įrengimo (ar bendros objekto kuriamos atmosferos/auros), parkingo vietos, panoramos vaizdo, ar šiame bute gyveno istorinė asmenybė ar kt. Būtent ši informacija ir yra prieinama teksto ir vaizdo pavidalu. Ne be reikalo, NT brokeriai skiria daug pastangų į kokybiškas nuotraukas, paryškinančias objekto privalumus bei į pirkėjo patiriamą vertę orientuotus aprašymus.
Todėl darbe bus siekiama atsižvelgti į šiuos aspektus regresijos lygtį praturtinant nuotraukomis, bei tekstu. Tai bus atliekama iš Aruodas.lt surinktais duomenimis. Darbe toliau išbandomi įvairūs modeliai ir technologijos, siekiantys kuo tiksliau įvertinti būsto kainą.
Darbe buvo stengtasi į būsto kainos prognozavimo uždavinį pažiūrėti iš įvairių pusių: kaip regresinį uždavinį, BKI ir kaimynų uždavinius, giliojo mokinimosi uždavinį, daugiaužduotinį uždavinį ar kaip laiko eilutes. Apžvelgtų darbų rezultatai yra pateikiami 1 lentelėje. Svarbu paminėti, jog darbuose skyrėsi modelio vertinimo kriterijai, todėl buvo pateiktos įvairios metrikos.

Galime matyti, jog darbuose buvo naudojami įvairūs modeliai, kurie praktikoje yra gana populiarūs. Taip pat apibendrinus rezultatus, galima pastebėti jog geriausi rezultatai buvo pasiekti naudojant apie būsto skelbimo susijusią lokaciją. Tam dabar yra daug galimybių pasitelkiant Google žemėlapių API: galime ne tik naudodami būsto koordinates gauti satelito nuotraukas, tačiau ir pasiskaičiuoti atstumus iki viešojo transporto stotelių, traukinio stočių. Taip pat aukštus rezultatus pasiekė ir modeliai, kurie įtraukė kiek įmanoma daugiau požymių per teksto ir nuotraukų atpažinimo modelius.
Vienas įdomesnių sprendimų buvo naudoti daugiaužduotinį mokymąsi (MTL), kuris plačiai yra naudojamas Tesla automobiliuose. Pagal šį modelį buvo sukurti įvairūs uždaviniai, kurie sprendė būsto kainas skirtinguose rajonuose, reitingavo vietines mokyklas ir t.t. Apjungiant įvairius modelius būtų galima pagalvoti apie MTL architektūra kuri ne tik bando nustatyti kainą skirtinguose rajonuose, tačiau ir įvertinti būsto būklę iš nuotraukų ar pridėtinę vertę iš skelbimo aprašymo. Taip pat galime įkomponuoti ir „Atviras Vilnius“2 atvirus duomenis apie darželius, mokyklas ir kt.
Taip pat keliuose darbų buvo pastebėta, jog pašalinus išskirtis – itin aukštos kai- nos, ar itin žemos kainos būstus – modelio rezultatai pagerėjo. Kitas svarbus dalykas, jog pastebima tendencija, jog vieno modelio, kaip sprendimo – nebepakanka ir yra pradedama stengtis apjungti įvairius modelius į vieną. Šiam tikslui pasiekti yra įvairių architektūrų tačiau tos, kurios buvo pastebėtos apžvalgoje buvo ansambliai, sluoksniavimas (angl. Stack), MTL ar kaip daugybinės įvesties neuroninius tinklus (angl. MultiInput Neural Network).
Taip pat pastebėta, jog nėra itin daug darbų, kurie nagrinėti kitokias architektūras nei regresija per mašininį ar gilųjį mokymąsi. Dauguma sprendimų apsiriboja kurdami sudėtingesnius sprendimus bandydami įtraukti vaizdą, tekstą, bei papildomą informaciją į galutinę regresijos prognozę. Vis dėl to, ir savo darbuose sugebėjo įkomponuoti ir laiko eilutes, įtraukdami makroekonominius veiksnius į modelių prognozavimą. Tačiau kaip matyti per rezultatus, vieno galutinio sprendimo nėra, tačiau kaip jau buvo galima matyti – įvairių sprendimų kombinacija dažnai lemia geresnius sprendimus, nei individualūs sprendimai modelio kompleksiškumo kaina.
Galiausiai, dažniausias NT prognozės sprendimas yra per regresijos uždavinį, todėl darbe taip pat bus naudojamas šis metodas. Taip pat tai yra gana optimalus pasirinkimas atsižvelgiant į itin mažą duomenų imtį.
Duomenų rinkimui iš Aruodas.lt buvo naudoti 2 pagrindiniai Python paketai: BeautifulSoup ir Selenium. Pirmoji biblioteka yra skirta HTML ir XML apdorojimui, kurios dėka visas HTML turinys esantys puslapyje gali būti skaitomas ir randamas naudojant atitinkamus paieškos metodus. Vis dėl to, tam tikri puslapiai gali būti sukurti taip jog naudotų dinaminį tekstą naudojant JavaScript. Tokio teksto su anksčiau minėta biblioteka rasti nepavyktų, kadangi pastaroji nuskaito tik HTML ir XML informacija. Dėl šios priežasties buvo pasitelkta kita biblioteka – Selenium.
Dėl duomenų rinkimo iš interneto, svarbu prisiminti GDPR ir Intelektualinės nuosavybės įstatymus. Pagrindiniai principai kurių derėtų laikytis:
Siekiant įtraukti skelbimų aprašymus į regresijos lygtį, tekstą transformuosime į vektorinę formą. Paties metodo esmė labai paprasta ir artima NLP uždaviniams, kuomet yra sudaromas TF-IDF ar BoW žodžių rinkinys, kur vėliau žodžiai/frazės yra susiejami pagal savo panašumą. Tačiau vietoj teksto prognozavimo, žodžiai paversti skaitine išraiška ir susietini panašumu yra naudojamas kaip vektorius modeliams naudojantiems skaitinio tipo kintamuosius.
Žodžių ir frazių pasiskirstymo ir sudėties nustatymui galimi 2 metodai: tęstinis žodžių maišas (angl. Continuous Bag of Words) ir n-gramų įterpinių (angl. The skip gram model). Pirmasis apima konteksto žodžių nuspėjimą naudojant centrinį žodį, o kitas apima žodžio nuspėjimą naudojant kontekstinius žodžius. Tą pačią idėją galima išplėsti sakiniams ir dokumentams. Word/Sent/Doc2Vec remiasi n – gramų įterpiniais. Ši savybė ir yra šių modelio tipo išskirtinumas lyginant su kitais modeliais.
Kadangi mūsų darbe teksto nebus daug – NT būstų skelbimų aprašymai – savo darbe naudosime sakiniams skirtą modelį – Sent2Vec.
Literatūros apžvalgoje autoriai naudojo konvoliucinius neuroninius tinklus, tam kad galėtų išmokinti modelį atpažinti atitinkamas savybes esančias nuotraukose siejamomis su vienokia ar kitokia kaina. Kadangi darbe NT vertės prognozavimas yra atliekamas regresiniu būdu, kaip ir tekstą – vaizdą taip pat vektorizuosime. Vektorizavimui bus naudojamas iš anksto apmokintas EfficientNetB0 modelis. EfficientNet yra ypač įspūdingas, nes jame yra automatiškai sugeneruotų modelių klasė su kompromisu tarp parametrų skaičiaus ir tikslumo. Modelių klasės skirstomos nuo B0 iki B7, kur parametrų skaičius atitinkamai 5.3 mln parametrų, o didžiausiame B7 – 66 milijonai.
Yprastai, šis modelis yra naudojamas klasifikacijos uždaviniams atlikti, tačiau nuėmus paskutinį sluoksnį iš architektūros, galime gauti 1280 dydžio vektorių (naudojant EfficientNetB0), kuris atspindi modelio paskaičiuotas ypatybių reikšmes, leidžiančias atlikti galutinę prognozę. Naudojant šį metodą, galėsime vektorizuoti visus paveiks- lėlius ir įtraukti juos skaitine išraiška į skaičiavimus.
Kadangi darbe bus naudojama regresija, bus taikomi pagrindiniai metodai naudoti literatūros apžvalgoje. Daugiausia šių modelių yra medžių šeimai priklausantys modeliai, tačiau papildomai panaudoti ir tiesiniai modeliai, kurie nors ir nėra tokie galingi kaip pastarieji – vis dėl to yra vertinami versle iki dabar dėl paprasto interpretuojamumo ir paaiškinamumo. Šalia šių dviejų modelių šeimų taip pat bus panaudota artimiausių kaimynų regresija, vienas NN modelis ir įvairių modelių ansambliai. Visi naudoti modeliai pateikiami 2 lentelėje.
Atliekant požymių inžineriją, bus siekiama ne tik atlikti prasmingų naujų požymių kūrimą (pvz.: atstumas iki centro, Vingio parko), tačiau ir dirbtinai išplėsti požymių skaičių atliekant polinomų transformaciją tolydiems kintamiesiems ir dažnių charakteristiką kategoriniams kintamiesiems. Tai atliekama siekiant padėti modeliams greičiau atrasti ryšius tarp požymių.
Kadangi požymiai buvo išplėsti, taip pat yra naudojama Boruta biblioteka, reikšmingų požymių atrankai. Naudojant šį metodą vėliau yra siekiama patikrinti, ar verta turint daug požymių leisti modeliui turinčiam reguliarizacijos mechanizmus savyje pačiam atsirinkti požymius, ar geriau jei tai padarytų kitas metodas.
Hiperparametrų paieškai buvo pasitelkta Optuna [1] biblioteka. Ši biblioteka pri- taiko Bajeso teoremą paieškoje, todėl optimalūs hiperparametrai yra randami greičiau. Optuna taip pat atlieka skaičiavimus paraleliai pagal turimus kompiuterio branduolius bei turi gražias ir paprastas rezultatų vizualizacijas.
Modelio mokinimas ir jo kokybės vertinimas bus skaičiuojamas naudojant kryžminę patikrą. Ši kryžminė patikra bus ypatinga tuo, jog kiekvieno mėnesio turimi duomenys, bus naudojami prognozuoti sekančio mėnesio būstų kainas. Kitas svarbus dalykas, jog prie kiekvieno mėnesio bus pridedami visi prieš tai buvę mėnesiai nuo pat duomenų rinkimo pradžios – 2022 Sausio mėnesio. Ši besiplečiančio lango strategija (angl. expanding window) (1 paveikslėlis) buvo priimta dėl mažos duomenų imties – 4354 įrašų, o sekančio mėnesio prognozavimas naudingas tuo jog leidžia netiesiogiai atsižvelgti į makroekonominius kainos augimo veiksnius.

Teksto vektorizavimas darbe buvo atliktas itin paprastai, kadangi visą darbą atliko Sent2Vec3 modelis. Modelio implementacija Python kode buvo atlikta patogiai, todėl užteko parinkti tik tinkamus parametrus, bei tekstą. Viskas kas buvo atlikta tai teksto valymas ir tvarkymas. Šis žingsnis leido sukurti 16 požymių per skelbimą. Žemiau pateikiami naudoti modelio parametrai:
Vaizdo vektorizacijai buvo pasirinkta strategija pavaizduota 2 paveikslėlyje. Iš pat pradžių nuotraukų dydis buvo pakeistas į dydį priimtiną EfficienetNetB0 – 224 . 224.

Praleidus visas nuotraukas pro modelį, kiekvienai nuotraukai buvo priskirtas 1280 dydžio vektorius. Iš viso turime (69000, 1280) dydžio matricą.
Toliau atliekame klasterizavimą naudojant centroidų giminės modelį KMeans. Su šia operacija siekiame suskirstyti panašius paveikslėlius į klasterius. Naudojant alkūnės metodą yra nustatomas optimalus klasterių skaičius – 15. Tuomet kiekvienai nuotraukai apskaičiuojame ir priskiriame jai atitinkamą klasterį. Atliekant klasterizavimą, laikinai atliekamas dimensijų mažinimas išlaikant 95% sklaidos, siekiant pagreitinti skaičiavimus, tačiau tolimesniuose žingsniuose yra naudojamas pradinis 1280 dydžio vektorius per nuotrauką.
Galiausiai skelbimo lygmenyje, paskaičiuojame koks yra kiekvieno iš 15 klasterių nuotraukų vektoriaus vidurkis (jei skelbime kažkuris klasteris yra tuščias, jį žymime 0). Šiame etape turime 15 1280 požymių per skelbimą, todėl atliekamas PCA(5) siekiant suspausti požymių dimensijas per klasterį. Galiausiai su šiuo veiksmu liekame su 15 5 požymiais per skelbimą.
Be šių veiksmų, taip pat buvo atlikti standartiniai mašininio mokymosi veiksmai, tokie kaip: išskirčių valymas, tuščių reiškmių tvarkymas, naujų požymių kūrimas atsižvelgiant į žvalgomosios analizės rezultatus, bei literatūros apžvalgoje akcentuotus požymius ir t.t.
Visų pirma, prieš pradedant hiperparametrų paiešką, yra sudaroma optimali grandinė (angl. Pipeline) transformacijų, būdingo tiesiniams ir medžių modeliams. Bendrai, šios transformacijos apima: kategorinių konvertavimą į fiktyvius kintamuosius, standartizavimą, bei požymių išplėtimą naudojant polinomų transformacijas tolydiems kintamiesiems, bei dažnių charakteristiką kategoriniams kintamiesiems prieš transformaciją į fiktyviuosius. Papildomai, tiesinių modelių grandinė turi papildomą transformaciją, kuri pasirūpina, jog visi tolydieji kintamieji turėtų normalųjį skirstinį. Sprendimas sukurti tokias grandines atėjo tikrinant įvairias transformacijų kombinacijas naudojant tinklelio paiešką.
Toliau atliekama hiperparametrų paieška, kurios metu papildomai ieškoma ar visiems tiesiniams modeliams, verta atlikti regresanto transformaciją paverčiant jo skirstinį į Gauso ir ar reikšmingų požymių atranka padeda pagerinti modelio rezultatus. Požymių atranka buvo atlikta naudojant 2 metodais, vienas iš jų pristatytas ankstesnėje dalyje – Boruta, kuris atrado 61 požymį. Antras metodas buvo naudojant Lasso regresiją ir atrinkus didžiausius koeficientus (po duomenų normalizavimo), siekiant gauti 100–200 požymių. Pirmuoju metodu paieška užtruko 102 minutes, o antruoj– 2.
Galiausiai yra atliekama visų parametrų paieška naudojant Optuna ir pateikiami paieškos rezultatai, iteracijų skaičius ir trukmė 2 lentelėje.

Atradus geriausias modelio parametrų kombinacijas, buvo paskaičiuoti kiekvieno modelio rezultatai. Tuomet buvo atrinkti TOP 5 geriausi modeliai pateikiami 3 lentelėje ir panaudoti ansamblio architektūroje.
Toliau yra išbandomos šios ansamblių technikos iš aukščiau pateiktų modelių:


Šių ansamblių rezultatai yra pateikiami 4 lentelėje.
Taigi, geriausias modelis ir šio projekto finalinis modelis yra liekanų modelis sudarytas iš TOP 5 geriausių individualių modelių prognozės vidurkio, bei ant viršaus sukurto papildomo liekanų modelio naudojantis geriausio individualaus modelio architektūrą – gradientinio pastiprinimo modelis su optimaliais parametrais. Šis modelis pasiekė 13.74 MAPE ir 33,307 RMSE įverčius.
Liekanų grafike (3 pav.), galime pastebėti, jog modelis puikiai įsimena mokymo imtį, tačiau nepersimoko ir gali tinkamai prognozuoti objektus kurių nėra matęs. Taip pat galime matyti, jog modelis panašu jog daugiau objektų yra pakankamai nesuvertinęs (didelės paklaidos iki 200 tūkst. Eur.), tačiau ne tiek daug pervertina (paklaidos iki 130 tūkst. Eur.). Vis dėl to, vertinant testavimo imties paklaidų skirstinį, galime įžvelgti jog skirstinys yra pasislinkęs į kairę nuo nulio, kas reiškia, jog testavimo imtyje modelis linkęs bendrai pervertinti būstus, nei nesuvertinti pakankamai. Taip pat galime matyti, jog mokymosi imtyje buvo suvertinti ir vidutinės vertės būstai ir brangesni, tačiau testavimo duomenyse sunkiau sekėsi įvairios vertės būstams, ne tik itin prabangiems.
Sprendžiant ar modelis galėtų būti naudojamas versle, svarbu atsižvelgti į jo kokybę portfelio lygiu – dažnais atvejais mes norėtume jog >80% viso portfelio paklaidos nuo realios vertės būtų ( 15; 15) procentų intervale. Vis dėl to, darbo modelio rezultatai yra kiek prastesni.
Pagal turimą liekanų skirstinį skirstinį (5 lentelė), modelio prognozuojamoji „galia” yra per menka, jog būtų sėkmingai naudojama versle, juolab kad modelio architektūra ir pateikiamų rezultatų paaiškinamumas yra sudėtingas.









