Rで最適なアパヌトを賌入する

倚くの人々は䞍動産の売買の問題に盎面しおおり、ここでの重芁な基準は、他の同等のオプションず比范しお、より高䟡なものを賌入したり、安く販売したりしないこずです。 最も単玔な方法は、特定の堎所でのメヌタヌの平均䟡栌に焊点を合わせ、特定のアパヌトの長所ず短所の費甚の割合を巧劙に増枛する比范方法です。 画像 しかし、このアプロヌチは時間がかかり、䞍正確であり、アパヌトのさたざたな違いをすべお考慮するこずはできたせん。 したがっお、「公正な」䟡栌を予枬しおデヌタ分析を䜿甚し、䞍動産を遞択するプロセスを自動化するこずにしたした。 この出版物では、このような分析の䞻芁な段階に぀いお説明し、3぀の品質基準に基づいお18のテスト枈みモデルから最適な予枬モデルを遞択したす。その結果、Rを䜿甚しお䜜成された1぀のWebアプリケヌションを䜿甚しお、最高の過小評䟡されたアパヌトがすぐにマップにマヌクされたす







デヌタ収集



問題の声明から明らかなように、デヌタの入手先の問題が生じたす。ロシアには䞍動産を芋぀けるための䞻芁なサむトがいく぀かあり、WinNERデヌタベヌスがありたす。かなり䟿利なむンタヌフェむスには最倧数の広告が含たれ、csv圢匏でアップロヌドできたす。 ただし、このベヌスで以前に時間ベヌスのアクセス分、時間、日が蚱可されおいた堎合、最小3か月のアクセスになり、通垞の買い手たたは売り手にずっおは倚少冗長になりたす真剣に受け止めたずしおも、これらの費甚は発生したす。 このオプションを䜿甚するず、非垞に簡単になりたす。そのため、他の方法で、䞍動産サむトから解析しおみたしょう。 いく぀かのオプションから、最も䟿利な悪名高いcian.ruを遞択したした。 圓時、デヌタ衚瀺は単玔な衚圢匏で衚瀺されおいたしたが、すべおのデヌタをRに解析しようずするず倱敗したした。 䞀郚のセルでは、デヌタが䞍完党な堎合があり、R関数の暙準的な手段では、アンカヌワヌドたたはシンボルをキャッチできず、ルヌプこのようなタスクのRでは正しくありたせんを䜿甚するか、たったく知らない正芏衚珟を䜿甚する必芁がありたした、したがっお、私は代替手段を䜿甚する必芁がありたした。 この代替手段は、ペヌゞたたはサむトから情報を取埗できる独自のREST APIを持ち、JSONの結果を返す優れたサヌビスimport.ioであるこずが刀明したした。 たた、RはAPIぞのリク゚ストを実装し、JSONを解析できたす。

このサヌビスをすぐにマスタヌしたので、1぀のペヌゞからすべおの必芁な情報各アパヌトメントのすべおのパラメヌタヌを抜出する抜出プログラムを䜜成したした。 そしお、Rはすでにすべおのペヌゞを反埩凊理し、それぞれに察しおこのAPIを呌び出し、受信したJSONデヌタを単䞀のテヌブルに接着したす。 import.ioを䜿甚するず、すべおのペヌゞを凊理する完党に自埋的なAPIを䜜成できたすが、サヌドパヌティのAPIを正しく配眮1ペヌゞを解析し、残りをRで匕き続き実行できないず刀断したした。将来のモデルの制限に぀いお、デヌタ゜ヌスが遞択されたす。

  1. モスクワ垂
  2. モデル内のアパヌトの1぀のタむプ぀たり、odnushkiたたはdvushkaたたはtreshka
  3. 同じ地䞋鉄駅内ゞオコヌディングが䜿甚されおいるため、最寄りの地䞋鉄駅たでの距離
  4. 再販新しい建物はすべお根本的に異なり、互いに質的に異なるため、これは広告では蚀われおいないか、コメントに䜕かが曞かれおいたすが、どちらも適切なモデルを䜜成するこずはできたせん




デヌタの抂芁



よくあるこずですが、デヌタには、排出量、ギャップ、および新しい建物が二次財産ずしお売华されたり、土地を売华したりするずきのデマが含たれおいるだけです。

したがっお、最初はすべおのデヌタを「きちんずした」倖芳にする必芁がありたす。



チヌトチェック


ここでは䞻に発衚の説明に重点を眮いおおり、明らかに必芁なサンプルに関連しない単語がある堎合、これらの芳察は陀倖され、R grep関数によっおチェックされたす。 たた、蚈算はRのベクトルであるため、この関数は正しい芳枬倀のベクトルをすぐに返し、それを適甚しお、サンプルをフィルタヌ凊理したす。



欠損倀を確認する


欠萜した倀は非垞にたれですそしお䞻に「珟時点」で既に陀倖されおいる新しい建物ず土地を含む「巊」広告では、残っおいる倀では、䜕かをする必芁がありたす。 䞀般に、このような芳枬を陀倖するか、これらの欠損倀を眮き換えるには、2぀のオプションがありたす。 芳枬を犠牲にしたくはありたせんでしたが、デヌタは「䜕を入力するのか」ずいう原則に基づいお入力されおいないず仮定しお、定性倉数をその倀のモヌドに眮き換え、定量的フッテヌゞを䞭倮倀。 もちろん、これは完党に正しいわけではなく、芳枬間の盞関を実行し、埗られた結果に応じおギャップを埋めるこずは完党に正しいでしょうが、このタスクでは、この冗長性を考慮し、さらに、そのような芳枬はほずんどありたせん。



排出チェック


攟出はさらに䞀般的ではなく、量的、すなわち䟡栌ず映像の芳点からのみ可胜です。 ここでは、買い手Iが自分のアパヌトの䟡栌ずおおよその映像を具䜓的に知っおいるずいう前提から進んだため、䞊限ず䞋限の䟡栌の初期倀を蚭定し、映像を制限しお、自動的に排出を取り陀きたす。 ただし、そうでない堎合でも制限を行わないでください、結果を取埗するか、散垃図を芋お異垞倀があるこずを確認するず、曎新されたデヌタを䜿甚しおク゚リを実行し、これらの芳枬を削陀するこずでモデルを改善できたす。



ガりス・マルコフの定理の䞻芁な前提


詳现
したがっお、誀った芳枬倀を削陀し、分析を実行する前に、ガりスマルコフの定理の䞻芁な前提でそれらを評䟡したす。

今埌は、モデルからの係数の解釈や信頌区間の正確な掚定が必芁ではなく、「理論䞊の」䟡栌を予枬する必芁があるため、䞀郚の前提は重芁ではありたせん。

  1. デヌタモデルが正しく指定されおいる。 䞀般に、はい、倖れ倀、誀った告知、欠損倀の眮換を排陀するこずにより、モデルは非垞に適切です。 いく぀かの非厳密な倚重共線性が存圚する可胜性がありたすたずえば、5階建おの建物で、゚レベヌタヌや゚リアがありたせん-共通/䜏宅、䞊で曞いたように、これは予枬にずっお重芁ではなく、さらに、基本的な前提にも違反したせん。 テストモデルを構築するために、すべおの倀が正しくダミヌ倉数に倉換され、厳密な倚重共線性は陀倖されたした。
  2. すべおの回垰倉数は決定論的であり、等しくありたせん。 はい、そうです。
  3. ゚ラヌは䜓系的ではありたせん。 最小二乗法では誀差を均等化する自由項が䜿甚されるため、それは事実です。
  4. ゚ラヌの分散は同じです同盞分散性。 回垰倉数ず埓属倉数のサむズの制限が䜿甚されるためスケヌルは同等、䞍均䞀分散性は最小限であり、予枬にずっおも重芁ではありたせん暙準誀差は受け入れられたせんが、それらは私たちにずっお興味深いものではありたせん
  5. ゚ラヌは無盞関です内因性。 いいえ、内生性が存圚する可胜性が最も高いたずえば、アパヌトは1぀のサむトたたは入り口からの「隣人」、倖郚の䞍明な芁因がありたすが、予枬のために、内生性の蚘録は重芁ではありたせん、さらに、私たちは知りたせんこの原因䞍明の芁因。


デヌタは䞀般に仮定ず䞀臎しおいるため、モデルを構築できたす。





リグレッサヌセット



倉数サむトから盎接取埗に加えお、远加のリグレッサヌ、぀たり5階建おのビルかどうかこれは通垞非垞に質的な違いであるため、および最寄りのメトロたでの距離同様にを远加するこずにしたした。 距離を決定するために、GoogleゞオコヌディングサヌビスAPIが䜿甚されたす最も正確で制限に忠実で、Rに既補の関数がありたす、アパヌトずメトロの䜏所が最初にゞオコヌディングされ、 ggmapパッケヌゞのゞオコヌド関数が䜿甚されたす。 そしお、距離は、haversineの匏によっお決定され、 geosphereパッケヌゞのdistHaversine関数によっお準備されたす。

リグレッサヌの総数は14個でした。

  1. メトロたでの距離
  2. 総面積
  3. リビング゚リア
  4. キッチン゚リア
  5. ハりスタむプ
  6. ゚レベヌタヌの可甚性ず皮類
  7. 可甚性ずバルコニヌの皮類
  8. バスルヌムの数ず皮類
  9. 窓はどこに行きたすか
  10. 電話の可甚性
  11. 販売の皮類
  12. 1階
  13. 最䞊階
  14. 5階建おの建物




テスト枈みの予枬分析モデル



詳现
実甚的な個人的䟡倀に加えお、さたざたなモデルをテストするこずも興味深かったので、最適なモデルを遞択し、私が知っおいるすべおの単玔な回垰モデルのさたざたなサンプルをチェックするこずにしたした。぀たり、次のモデルをテストしたした。



1.すべおのリグレッサのMNC

2. OLS察数異なるオプション䟡栌の察数および/たたは面積および/たたは地䞋鉄たでの距離

3.リグレッサヌの包含および陀倖を䌎うMNC

a回垰倉数の段階的な陀倖

b盎接怜玢アルゎリズム

4.眰金のあるモデル䞍均䞀分散の圱響を軜枛するため

aなげなわ回垰分別パラメヌタヌを決定するための2぀の方法-Cp-criterion Mallowず亀差怜蚌の最小化

bリッゞ回垰ペナルティパラメヌタヌを芋぀ける3぀の方法-HKB、LW、および亀差怜蚌

5.䞻成分の方法

aすべおのリグレッサず

b回垰倉数を段階的に陀倖する

6.分䜍点䞭倮倀回垰䞍均䞀分散の圱響を枛らすため

7.ランダムフォレストアルゎリズム

テストしたモデルの総数は18個でした。



モデルを準備する過皋で、次の材料が郚分的に䜿甚されたした。

Mastitsky S.E.、Shitikov V.K. 2014Rを䜿甚した統蚈分析ずデヌタ芖芚化

-電子曞籍のアクセスアドレス r-analytics.blogspot.com





モデル性胜基準



詳现
すべおのモデルは本質的に根本的に異なっおおり、倚くのモデルでは尀床関数はありたせん。したがっお、内郚品質基準を決定するこずは䞍可胜であり、モデルの劥圓性を䞻に評䟡するのに圹立぀ため、それらに䟝存しお効果的なモデルを遞択するこずは完党に正しいわけではありたせん。 したがっお、経隓倀ず予枬倀の平均差に基づいおモデルの品質を評䟡するこずに焊点を圓おたす。 そしお、それをより興味深いものにし、利益費甚察効果を決定するために、二乗平均平方根誀差いく぀かの芳枬はそれを歪める可胜性があるは必ずしも指暙ではありたせん、私は通垞のRMSE-暙準誀差だけでなく、MAE-平均二乗誀差も基準を評䟡するために䜿甚したしたおよびMPE、平均パヌセント誀差。





モデルテスト結果



詳现
モデルはさたざたな関数によっお評䟡され、予枬倀の構文も異なるため、䞀郚のリグレッサが階乗であるずいう単玔な指瀺はすべおのモデルに適しおいないため、すべおの質的倉数がダミヌ倉数に倉換され、この圢匏の远加のデヌタフレヌムが䜜成されたしたモデルが構築されたした。 これにより、すべおのモデルを均䞀に評䟡し、新しい䟡栌を予枬し、゚ラヌを特定できたす。

さたざたなランダムテストサンプル異なる地䞋鉄駅、異なるタむプのアパヌト、その他のパラメヌタヌで、䞊蚘のすべおのモデルを3぀のパフォヌマンス基準で評䟡したした。 そしお、3぀の基準すべおでほが絶察的な92勝者は、ランダムフォレストアルゎリズムでした。 たた、さたざたなサンプルで、いく぀かの基準、䞭倮倀回垰、䟡栌の察数を含むMNC、完党なMNC、および堎合によっおはLassoを含むRidgeが良奜な結果を瀺したした。 ペナルティのあるモデルは完党なMNCよりも優れおいるず考えられたため、結果はやや驚くべきものでしたが、垞にそうであるずは限りたせんでした。 したがっお、単玔なモデルOLSは、より耇雑なモデルよりも優れた代替手段になる可胜性がありたす。 異なるサンプルでは、​​異なる基準に埓っお、2番目の堎所から始たる堎所は異なるモデルで占められおおり、勝者はランダムフォレストであるずいう事実のため、私はそれをさらなる䜜業に䜿甚するこずにしたした。

1぀のモデルが既に䜿甚されおいるため、ダミヌ倉数を明瀺的に指定する必芁はありたせん。したがっお、元のフレヌムに戻り、高品質倉数が因子倉数であるこずを瀺したす。これにより、ダむアグラム䞊の埌続の解釈が簡略化され、アルゎリズムは簡単になりたす本質的には重芁ではありたせんが  テストモデリングでは、同じ名前のパッケヌゞの randomForest関数をデフォルト倀で䜿甚し、 nodesize 、 maxnodes 、 nPerm treesの䞻芁な耇雑床パラメヌタヌを倉曎しようずしお、異なるサンプルの予枬゚ラヌの最小化がノヌドサむズパラメヌタヌ最小ノヌド数 1.したがっお、モデルが遞択されたす。





地図衚瀺



勝者が決定されたすランダムフォレスト。このモデルは、すべおの芳枬倀の「理論䞊の」䟡栌を最小の誀差で予枬したす。 これで、絶察的、盞察的な過小評䟡を蚈算し、゜ヌトされたテヌブルの圢匏で結果を衚瀺できたすが、衚圢匏ビュヌに加えお、すぐに情報を埗たいので、最良の結果の䞀郚をすぐにマップに衚瀺したす。 このため、RにはGoogleマッピングシステムずの統合甚に蚭蚈されたgoogleVisパッケヌゞがありたすただし、リヌフレット甚のパッケヌゞもありたす。 ゞオコヌディングから受け取った座暙を他の地図に衚瀺するこずは犁止されおいるため、Googleも匕き続き䜿甚したした。 マップ䞊の衚瀺は、 googleVisパッケヌゞの1぀のgvisMap関数によっお実行されたす。

地図衚瀺コヌド
output $ view <-renderGvis{#view-htmlOutput出力芁玠

iferr= ""returnNULL



formap3 <-formap

formap3 $ desc <-paste0row.namesformap3、

「。いいえ」、

formap3 $番号、

「」、

formap3 $アドレス、

「過小評䟡」、

圢匏-formap3 $ abs.discount、big.mark = ""、

「ルヌブル」、

as.integerformap3 $ otn.discount、

「」

gvisMapformap3、「coord」、「desc」、options = list

mapType = 'normal'、

enableScrollWheel = TRUE、

showTip = TRUE



}





Web GUI



必芁なすべおのパラメヌタヌをコン゜ヌルに枡すのは時間がかかり、䞍䟿なので、すべおを自動的に実行したかったのです。 そしお䌝統的に、このために、十分なI / Oコントロヌルを持぀shinyずshinydashboardフレヌムワヌクでRを再び䜿甚できたす。

むンタヌフェヌスのクラむアント郚分の完党なコヌド
dashboardPage

dashboardHeaderタむトル=「マむニングプロパティv0.9」、



dashboardSidebar

sidebarMenu



menuItem "゜ヌスデヌタ"、tabName = "゜ヌス"、

menuItem "Summary"、tabName = "Summary"、

menuItem「生デヌタ」、tabName =「生」、

menuItem「敎頓デヌタ」、tabName =「敎頓」、

menuItem "予枬デヌタ"、tabName = "予枬"、

menuItem "Plots"、tabName = "Plots"、

menuItem "結果マップ"、tabName = "マップ"



、

dashboardBody

tags $ headtags $ styleHTML '。box {overflowauto;}'、



tabItems



tabItem "゜ヌス"、











ボックス幅= 12、









fluidRow

列幅= 4





selectInput "Metro"、 "Metro"、 ""、width = '60 '、

br、

hr、



#checkboxInput "Kind.home0"、 "all"、TRUE、

checkboxGroupInput "Kind.home"、 "House Type"、c

「パネル」= 1、

「スタヌリン」= 7

「シヌルド」= 8

「レンガ」= 2

「モノリシック」= 3

「ブリックモノリシック」= 4

「ブロック」= 5

「ツリヌ」= 6、遞択枈み= c1,2,3,4,5,6,7,8、

hr、

SliderInput「Etag」、「Floor」、min = 0、max = 100、value = c0、100、step = 1、

checkboxInput「EtagP」、「最埌ではない」、

SliderInput "Etagn"、 "In the house of floors"、min = 0、max = 100、value = c0、100、step = 1





、





submitButton「分析」、アむコン「曎新」





、



列幅= 4

selectInput "Rooms"、 "Rooms"、c

 ""、

"1" = "room1 = 1"、

"2" = "room2 = 1"、

"3" = "room3 = 1"、幅= '45 '、

br、

hr、

br、

selectInput "Balcon"、 "Balcony"、

c "バルコニヌなしでも可" = "0"、

「バルコニヌのみ」=「minbalkon = 1」、

「バルコニヌなしのみ」=「minbalkon = -1」、

幅= '45 '、



br、

hr、

br、

#br、

SliderInput「キッチンM」、「キッチン゚リア」、最小= 0、最倧= 25、倀= c0、25、ステップ= 1、

sliderInput "GilM"、 "Living Area"、最小= 0、最倧= 100、倀= c0、100、ステップ= 1、

SliderInput「TotalM」、「Total Area」、最小= 0、最倧= 150、倀= c0、150、ステップ= 1









、



列幅= 4





SliderInput "Price"、 "Price"、min = 0、max = 50000000、value = c0、50000000、step = 100000、sep = ""、

hr、

selectInput「取匕」、「取匕タむプ」、

c "any" = "0"、

「無料」=「sost_type = 1」、

「代替」=「sost_type = 2」、

幅= '45 '、

br、

hr、

#br、

br、

br、

radioButtons "wc"、 "Bathroom"、

c「重芁ではない」=「」、

「分離」=「minsu_r = 1」、

「結合」=「minsu_s = 1」、



hr、

selectInput「Lift」、「Lifts最小」、

c "0" = 0、

"1" = "minlift = 1"、

"2" = "minlift = 2"、

"3" = "minlift = 3"、

"4" = "minlift = 4"



、

幅= '45 '、

hr、

selectInput「obs」、「地図䞊にアパヌトメントを衚瀺」、c1:10、遞択= 5、幅= 250、

textOutput "フラット"









、

fluidRowhtmlOutput "hyperf1"、

fluidRowtextOutput "testOutput"











、

tabItem "Raw"、boxdataTableOutput "Raw"、width = 12、height = 600、

tabItem "Summary"、boxverbatimTextOutput "Summary"、width = 12、height = 600、

tabItem "Tidy"、boxdataTableOutput "Tidy"、width = 12、height = 600、

tabItem "予枬"、ボックスdataTableOutput "予枬"、幅= 12、高さ= 600、

tabItem "Plots"、boxwidth = 12、plotOutput "RFplot"、height = 275、plotOutput "r2"、height = 275、

tabItem "Map"、boxwidth = 12、htmlOutput "view"、DT :: dataTableOutput "formap2"、height = 600















これらすべおの結果は、グラフィカルむンタヌフェむスを備えた䟿利なアプリケヌションであり、実際にはサむドメニュヌの2぀の䞻芁なポむント制埡甚の他のアむテムが最初ず最埌にありたす。 サむドメニュヌ図1の最初の ゜ヌスデヌタ 項目には、アパヌトの怜玢ず評䟡に必芁なすべおのパラメヌタヌcianに類䌌が蚭定されおいたす。



画像

図1遞択されたメニュヌのりィンドり゜ヌスデヌタ



サむドメニュヌの残りの項目に衚瀺されたす





画像

図2遞択したプロットメニュヌのりィンドり



さお、最埌の段萜 結果マップ 図3には、すべおが䜕のために開始されたか、遞択された最良の結果のマップ、蚈算された予枬䟡栌ずアパヌトの䞻な特性のテヌブルが衚瀺されたす。



画像

図3遞択したメニュヌのりィンドり結果マップ



たた、この衚には、この広告に移動するためのリンク*がすぐにありたす。 この統合衚のJS芁玠を含むにより、 DTパッケヌゞを䜜成できたす。



おわりに



䞊蚘のすべおを芁玄するず、それはどのように機胜したすか

  1. 最初のペヌゞでは、最初のリク゚ストはコントロヌルを䜿甚しお蚭定されたす
  2. これらの入力芁玠の遞択に基づいお、ク゚リ文字列が圢成されたす怜蚌甚のハむパヌリンクずしおも瀺されたす
  3. ペヌゞを瀺すこの行はimport.io APIに枡されたすこれをすべお䜜成する過皋で、 import.ioのおかげでcianは出力むンタヌフェヌスを倉曎し始めたした。文字通り5分で抜出プログラムを再トレヌニングしたした
  4. APIから受信したJSONが凊理されたす
  5. すべおのペヌゞがスキャンされたすプロセスでは、プロセスのステヌタスバヌが衚瀺されたす
  6. テヌブルは接着され、チェックされ䞍正な倀は陀倖され、欠損倀は眮換されたす、分析に適した均䞀な圢匏になりたす
  7. 䜏所のゞオコヌディングず距離の決定
  8. モデルは、ランダムフォレストアルゎリズムに埓っお構築されたす
  9. 予枬䟡栌、絶察、盞察偏差が決定されたす
  10. 最良の結果は、マップずその䞋の衚に衚瀺されたす衚瀺されおいるアパヌトメントの数は最初のペヌゞに瀺されおいたす


アプリケヌションのすべおの䜜業リク゚ストの開始から地図䞊の衚瀺たでは1分未満で完了したすほずんどの時間は䜍眮情報に費やされたす。これは、家庭での䜿甚に関するGoogleの制限です。



この出版物は、単玔な家庭のニヌズのために、1぀のアプリケヌションのフレヌムワヌク内で、倚くの小さな、しかし根本的に異なる興味深いサブタスクを解決できるこずを瀺したした。



さらに、これらはすべお、ロヌカルたたはネットワヌク䞊でホストできる䟿利なグラフィカルアプリケヌションに実装され、すべおこれは1぀のR import.ioをカりントしないで行われ、シンプルで゚レガントな構文の最小限のコヌド行で行われたす。 もちろん、高速道路の近くの家やアパヌトの状態これは広告に含たれおいないためなどは考慮されたせんが、マップにすぐに衚瀺され、元の広告自䜓ぞのリンクを含む最終的なランク付けされたオプションのリストは、アパヌトの遞択を非垞に容易にしたすそれに加えお、Rで倚くのこずを孊びたした。



All Articles