Улаанбаатар хотын орон сууцны үнийг таамаглах нь

Энэхүү төслөөр бид, Улаанбаатар хотын байрны метер квадратын үнийг таамаглах модел боловсруулан веб апп хийх болно. Web Application

7 min readApr 21, 2019

--

Юуны өмнө зарим нэгэн мэргэжлийн хэллэгүүдийг Монгол хэлнээ буулгаж, ойлголтыг гаргахад үнэхээр бэрх байх тул Англи хувилбарыг уншвал арай илүү ойлгомжтой байх боломжтой шүү ;)

Сүүлийн үеийн орон сууцнуудын мэдээллийг харцгаая. Монгол улсын нийт орон сууцны барилгуудын ихэнхи нь Улаанбаатар хотод төвлөрсөн байх ба 2015 онд хамгийн ихдээ хүрч 1.6 триллион төгрөгний үнэтэй байрнууд баригджээ. Дараагийн жилүүдэд эрчимтэй уналтад орж Улаанбаатар хотын байрнууд 2015 оныхоосоо 44 хувиар буурчээ. Бид үүнийг хараад бага эрэлтээс болж нийлүүлэлт багассан ба хэдий эрэлт их байв ч нийлүүлэлт багассаны учир байрны үнэ ихэссэн байна хэмээн дүгнэж болно. Энэхүү шалтгааны улмаас байр худалдаалагчид үнээ ихэсгэх болсон уу? эсвэл өөр тодорхойгүй эдийн засгийн хүчин зүйл нөлөөлсөн үү? эсвэл худалдаалагчид байрны чанарт анхаарах болсон уу?

Энэхүү таамаглах веб апп хийх болсон зорилго минь худалдагч болон худалдан авагч 2 талуудыг үнийн тал дээрээ ухаалаг хандаасай гэсэндээ юм. Ихэнхи тохиолдолд худалдагч нь үнээ байрны байрлал “А эсвэл Б зэрэглэл” дээр тулгуурлан үнийн саналаа тавьдаг ба энэхүү “А зэрэглэлийн бүсийг” чухам яаж хэмжсэн болон хэн хэмжсэн талаар баримт хараахан байхгүй байх ажээ. Би худалдагчдыг ядахдаа ойр орчмынхоо гэмт хэргийн байдал, сургууль болон цэцэрлэгийн тоо зэрэг дээр тулгуурлан үнээ санал болгодог болгохыг хүссэн. Нөгөө талдаа, худалдан авагчид олон байрлалд өөрийн хүссэн өрөөний тоо болон метер квадратаа оруулаад боломжит байрлалууд дээрх үнийн саналыг авч болохуйц ямар нэгэн газар эсвэл вебсайт байхгүй байгаа нь үнэхээр харамсалтай. Хэдийгээр онлайн худалдааны вебсайт “Үнэгүй.мн” байгаа боловч, энэ нь зөвхөн тодорхой хэрэглэгчдийн оруулсан мэдээллүүд байх бөгөөд худалдан авагчдад үнэхээр том хязгаар болж байгаа юм. Энэхүү асуудлыг бага ч болов шийдэж хоёр талуудад тус хүргэх нь миний зорилго ба энэхүү нийтлэлээрээ би энэ веб апп-г хэрхэн хийсэн талаар чухал хэсгүүдийг дурдах болно.

Эхлээд бид таамаглах моделоо хэрхэн ашиглагдах, хэр хэрэгцээтэй талаар асуух хэрэгтэй.

Энэ төслийг худалдагч болон худалдан авагчдыг байрны метер квадратын үнэ нь хороолол, орчин тойрны газрууд (сургууль, цэцэрлэг), хотын төвөөс хэр хол болох, амьдрах орчин нь хэр аюул байгатай болох зэрэг нь нөлөөлж байгааг ойлгуулахын тулд юм. Эдгээр хүчин зүйлс нь байрны үнэд маш ихээр нөлөөлөх боловч, зарим хүчин зүйлс болох баригдсан он, цонхны тоо, наран талруугаа харсан эсэх зэрэг оролцоогүй болно. Тэгэхээр бидний модел нь байрны үнэ болон орчин тойрныг нь сонирхсон хэн бүхэнд тус болохуйц модел юм.

Чухал зүйлсийг дурдахад: Бид 3863 мөр 2018 оны 12 сарын 25-с 2019 оны 2 сарын 25н хүртэлх датаг (он сар өдөр, гарчиг, өрөөний тоо, үнэ, байрлал, дүүрэг) зэргийг Үнэгүй.мн-с scrape хийж авсан.

Энэ төслөөр бидний хийх зүйлс:

  • Try different predictive models with pre-processing
  • Хамгийн сайн моделын параметэрүүдыг өөрчилөн сайжруулах
  • Plotly dash application хийх

Дата цэвэрлэгээ

  • Бүх тоо биш болон хязгааргүй өгөгдлүүдийг устгах
  • Хэд давсан болон хэт байж болохгүй өгөгдлүүдийг устгах
  • Метер квадратын хэт давсан утгууд нь 99дэх хувийг авж харахад хамгийн ихдээ метер квадрат нь 500 байж болохыг ойлгосон. Тиймээс 500-с том метер квадраттай бүх байрнуудыг хассан. Мөн хамгийн ихэд анхаарлаа хандуулсан шиг хамгийн багад анхаарлаа хандуулах хэрэгтэй жишээ нь 16 метэр квадраттай 1 өрөө байр байж болохуйц ба түүнээс доошхуудыг хассан.

Цэвэрлэхийн өмнө ба дараа

Бид үүнээс зарим хэрэглэгчид байж боломгүй өндөр үнийн саналуудыг оруулсан ба энэ нь бүхэл дата сэт-г нормал тархалттай биш болгож байгаа юм.

Цэвэрлэснийхээ дараа бид шинэ хүчин зүйл эсвэл бидний зорилго болох квадрат метрийн үнийг гаргаж авна

Зарим хэрэглэгчид үнээ оруулахдаа метер квадратын үнийг оруулсан эсвэл бүхэл үнийг оруулсан нь холилдсон ба маш том зангилаа болгосон байв. Гэхдээ бид үүнийг цэвэрлэх хэрэгтэй

Харин одоо бид үндсэн дата сэтээ нэмэлт хүчин зүйлс болох: хотын төвөөс байр хүртэлх зай, сургууль цэцэрлэгийн тоо зэргийг нэгтгэх хэрэгтэй

  • dis_horoo гэх нэмэлт хүчин зүйлийг бусад дата сэтүүдтэй нэгтгэхэд амар болгохын тулд хийсэн жишээ нь: Чингэлтэй, 1 гэх мэт

Дата сэтүүдийг нэгтгэсний дараах корреляци heat map

Үүнээс харахад зарим хүчин зүйлсүүд үнэхээр сул хамааралтай байх ба бид олон тооны хүчин зүйлс нь үнийг тодорхойлдгийг санах хэрэгтэй!

Бид өөр өөр таамаглах моделуудын параметеруудыг өөрчлөхгүйгээр туршиж үзнэ

Mean Absolute Error нь таамагласан утгууд үнэн дата утгуудаас хэр хол байгааг харуулна

Root Mean Squared Error нь хамгийн сайн нийцэлтэй зурвасаас хэр хол тарсан байгааг харуулна

R squared нь бидний зорилгын хэдэн хувийг таамаглалын хүчин зүйлсүүд хэр оновчтой хариулт өгч байгааг харуулна

Accuracy нь таамаглалын утга үнэн утгатай хэр ойр байгааг харуулна

Эхний модел нь Linear Regression

  • Linear Regression нь олон тооны хүчин зүйлсүүдийн харилцан холбоог судлан, дүгнэхэд хэрэглэгддэг ба сайн үзүүлэлттэй таамаглалын модел юм
  • 3–4 сая төгрөгний хооронд орших хэд хэдэн таамаглалууд үнэн утгаас хэт давсан байх ба бид сайн ажигласаар байх хэрэгтэй
  • Таамаглалууд хамгийн нийцэлттэй зурвасаас 350мянгаар хол байх ба R squared нь 40 хувь ба бид үүнийг зайлшгүй сайжруулах хэрэгтэй
  • Accuracy нь сайн байсан ч илүү сайжирч болно

Second model we will try is Random Forest Regressor

  • Random Forest Regressor нь олон тооны моднуудыг зэрэг сургах ба класс (зүйл ангиар ялгах) эсвэл дундаж таамаглал (тоогоор хариулах) 2 үндсэн хэрэгцээтэй
  • Таамаглалууд сайжирсаар байх ба энэ удаад өмнө нь 3–4 саяын хооронд хэт давсан байсан утгууд хамгийн сайн нийцэлтэй зурвастай ойртсон байгааг харж болно
  • Mean Absolute Error and RMSE хоёр ойролцоогоор 50 мянгаар багассан ба accuracy оновчтой байдал нь 0.5 хувиар ихэссэн нь сайн хэрэг юм

Гурав дах модел нь Xgboost

  • Xgboost нь eXtreme gradient boosting гэсний товчлол ба decision trees-н сайжруулсан хувилбар гэж хэлж болох ба тооцооллын хурд болон үзүүлэлтүүд дээр анхаардаг
  • Mean Absolute Error and RMSE хоёул буурсан нь модел илүү бага алдаа гаргаж байгааг илтгэж байна
  • R squared нь бараг л 10 хувиар өссөн ба decision trees манай төслийн өгөгдлүүдэд илүү сайн ажиллаж байгааг харуулж байна
  • Accuracy оновчтой байдал нь 1 хувиар өсчээ

Моделуудын дүгнэлт

  • Эхний хоёр моделуудын үр дүн сүүлийнхийгээ бодвол арай муу байсан. Mean absolute error and root mean squared errors нь 300 мянгын зөрүүтэй байх боловч r-squared болон accuracy нь маш ойролцоо байгаа нь эдгээр моделууд бүгд сайн үзүүлэлт гаргасныг харуулж байна.
  • Хамгийн сайн үзүүлэлт үзүүлсэн моделоор Xgboost Regressor шалгарсан боловч энэ модел бидний хүссэн зүйлсийг шууд өгч чадахгүй.

Өмнөх моделууд бидэнд 4–5 саяын хоорондох байрнуудад оновчтой хариулт өгөх нь багас ч байсныг эргүүлэн санах хэрэгтэй ба их тоон дээр илүү том алдаатай хариултыг хэрэглэгчид өгөх нь асуудалтай. Тиймээс бид арай өөр модел хэрэглэх хэрэгтэй ба энэ модел нь бидэнд үнийн хязгааруудыг өгч чадагуйц байх хэрэгтэй ба хамгийн тоймлосон хариултуудыг өгөх зорилготой байх болно.

Тэгэхээр одоо яах вэ ? Үнийн хязгаарууд ?

Бид таамаглалуудын хэсгүүдийг (quantiles) өгч чадах моделыг хэрэглэнэ. Ингэхдээ бид 2.5–97.5дах хэсгүүд (quantiles) хэтэрхий том учир зарим хүмүүс моделд эргэлзэж эхлэх нь зайлшгүй хэрэг. Тиймээс бид доод хязгаар 25дах, дундаж 50дах болон дээд хязгаар 75дах хэсгүүдийг ашиглах болно.

Бид Random Forest Quantile Regressor-г ашиглах ба үүний параметеруудыг хамгийн сайн болгохын тулд RandomizedSearchCV-г ашиглана яагаад гэвэл GridSearchCV нь хэтэрхий удаан болон нөөц ашиглах хэмжээ их юм.

Сүүлийн моделын дүгнэлт

  • Улаан гурвалжин дээд хязгаар, цэнхэр дугуй нь дундаж, ногоон гурвалжин нь доод хязгаар
  • R squared болон accuracy нь өмнөх моделуудаасаа илүү дээшилсэн ба таамаглал гаргах нь яг л бидний хүссэнээр (25th percentile, 50th percentile, and 75th percentile) гарна
  • Модел нь үнэтэй газруудад илүү их алдаа гаргасаар байх боловч хямд газруудад илүү оновчтой байгааг ажиглаж болно. Гэвч энэ удаад бид үнийн хязгааруудыг өгч байгаа учраас хэрэглэсэн хүмүүст илүү хүртээмжтэй мэдээлэл болон санагдах нь тодорхой.

Бид бараг л энэ төслийг дуусгачихлаа гэвч нэг асуулт үлдсэн нь “Хэрхэн веб апп хийх вэ?”

Бид бараг л энэ төслийг дуусгачихлаа гэвч нэг асуулт үлдсэн нь “Хэрхэн веб апп хийх вэ?”
Би plotly-н dash (маш гайхалтай дүрсжүүлэлтийн package) ба python болон бусад хэл дээр ажиллаж болохуйц юм. Тэгэхээр ажиллах хэлбэр нь нэгэн төрлийн dashboard ба flask дээр ажилладаг package ба server эсвэл static html file-р хадгалах боломжтой. Үүнийг хийхэд бүр тулсан мэдлэгтэй вэб хөгжүүлэгч байх шаардлагагүй зөвхөн html болон css-н жаахан мэдлэгтэй байхад л амархан хийж чадна.

Миний хийсэн арга бол эхлээд өөрийн local machine дээрээ туршиж үзсний дараагаар heroku (үнэгүй веб хостин)-г хэрэглэн тэндээ байршуулсан мөн интернетэд маш олон заавар зөвлөмжүүд байгаа ба та ч гэсэн өөрөө нэгийг хийхэд тун амархан байх болно.

Хэрэв та энэ хүртэл уншиж дуусгасан бол танд маш их баярлалаа. Монгол хэлрүү зарим хэллэгүүд болон ойлголтуудыг хөрвүүлэхэд тун хэцүү байсан учир үг утга зүйн алдаа маш их байгааг та анзаарсан байх. Тиймээс Англи хэл дээрх хувилбарыг унших нь илүү зохимжтой тул энийг уншина уу.

Web Application

You can find the work here
Find me here: Facebook, Instagram & LinkedIn

--

--