プログラマーとして、彼は新しいマシンを選びました

前の記事( IIIIII )で、ロシア連邦で収益性の高い中古車を見つけるサービスの開発について詳しく説明しました。



さまざまな中古車で長い間旅行していたので、新しい車を買うことを考え、この問題を詳細に研究することにしました。 大都市では、少なくとも人気のあるブランドのために、膨大な数の公式ディーラーがあります。 ディーラーは、利用可能な車のリストとさまざまなモデルの割引のサイズが互いに異なります。 私に興味のある車を探して、私は呼び出し音を鳴らして、すべてのディーラーを続けて訪問したくありませんでした。 私の意見では、先験的な情報に基づいて、興味のあるモデルと機器の最低価格を提供するディーラーのみを事前に選択することは合理的でした。 対面式のコミュニケーションでは、交渉できる場合、割引のサイズが大幅に増加する可能性があるという事実は、市場で最も有利な価格を提供しているディーラーを訪問する最初の目標と矛盾していません。



私は新車に関するデータを収集し、分析し、それをサービスとして設計しました。そして、年末にディーラーが値引きをしたときに、それをあなたと共有することにしました。









競合他社の概要



Runetには、新しい車を選択して購入するサービスautospot.ruが既にありますが、次のような重大な欠点があります。



  1. このサイトでは、興味のある車が存在するディーラーの連絡先を見つける方法はありません。フィードバックのために電話を残すことしかできません。 autospot.ruマネージャーは30分以内にご連絡し、メーカー、モデル、機器を確認し、要件に合った車をお持ちのディーラーに電話でご連絡します。 ディーラーからの最初の電話を待つには、少なくとも1時間お待ちください。 このコミュニケーションで非常に迷惑な要素は重要性です。 会話の後、autospot.ruマネージャーとさまざまなディーラーは、逆に尋ねても、頻繁に電話をかけ、自分自身を思い出させます。
  2. このサイトでは、ロシア全土から約30,000台の新車を紹介しています。これは、2018年の月間平均販売台数の 30%未満です。
  3. サイトには、構成および追加に応じて、市場に対する自動車のコストの見積もりがありません。 つまり、どのオファーが最も収益性が高いかを理解することは不可能です。


掲示板のauto.ru、drom.ru、avito.ruの場合、不利な点2はさまざまな程度に関係し、3番はすべての人に完全に適用されます。



このように、サービスの開発プロセスで解決しなければならなかった基本的なタスクの輪が概説されました。



データ収集



公式ディーラーの新車に関するデータは、さまざまなソースから収集され、処理され、体系化され、統合されています。 データは定期的に更新され、新しいソースが定期的に追加されます。 データ量は、ロシアの70以上の都市の650社以上のディーラーからの75,000台の新車です。



データの収集と処理のプロセスは、この記事の範囲外であり、次の記事のいずれかで説明されている場合があります。



データ変換とモデル構築



各自動車モデルの収益性の高い自動車を個別に検索するために、予測回帰モデルが作成されました。そのターゲット変数は自動車の価格であり、予測変数は自動車、機器、およびインストールされたアドオンの基本データから作成されました。 オプション。 いくつかの非数値を持つパラメーターは、モデルではn-1ダミー変数として表されました。



明確にするために、フォルクスワーゲンティグアンの回帰変数の形式は次のとおりです。



詳細
[1]「価格」

[2]「可用性」

[3]「年」

[4]「ボリューム」

[5]「パワー」

[6]「front_drive」

[7]「rear_drive」

[8]「mkpp」

[9]ベンジン

[10]「ディゼル」

[11]「body_tsvet_kuzova_chernyy_metallik」

[12]「interior_tsvet_peredney_paneli_temnyy」

[13]「interior_tsvet_obivki_sideniy_temnyy」

[14]「interior_tsvet_potolka_temnyy」

[15]「interior_tsvet_kovrovogo_pokrytiya_temnyy」

[16]「equip_dnevnoy_svet」

[17] "equip_avtokorrektor_far_s_dinamicheskim_povorotnym_svetom"

[18]「equip_paket_innovation」

[19]「equip_fary_svetodiodnye」

[20] "equip_omyvatel_far"

[21]「equip_bortovoy_kompyuter」

[22]「safety_avtomaticheskaya_regulirovka_dalnosti_sveta」

[23]「body_tsvet_kuzova_siniy_metallik」

[24]「body_tsvet_kuzova_serebristyy_metallik」

[25] "equip_sistema_avtomaticheskoy_parkovki"

[26] "equip_tekhnicheskiy_kod"

[27]「equip_paket_media」

[28]「equip_usb_interfeysvklyuchaya_auxin」

[29]「equip_interfeys_appconnect」

[30]「equip_paket_zimnie_tekhnologii」

[31] "equip_multimediynaya_sistema_audio"

[32]「equip_parktronik」

[33] safety_videokamera

[34]「main_komplektatsiya_city_20_tdi_150hp_7dsg_4motion」

[35] "body_shiny_21565_r17_99_v"

[36] "body_razmer_diskov_r17"

[37]「body_diski_legkosplavnye」

[38]「interior_tip_sideniy_sportivnye」

[39]「interior_obivka_sideniy_kozha」

[40] "equip_distantsionnoe_otkryvanie_bagazhnika"

[41]「equip_zapusk_bez_povorota_klyucha」

[42] "equip_dostup_bez_klyucha"

[43] "equip_interfeys_dlya_smartfonov_appconnect"

[44]「equip_kruizkontrol」

[45]「equip_pamyat_nastroek」

[46]「equip_dopolnitelnyy_otopitel」

[47]「safety_sistema_kontrolya_mertvykh_zon」

[48] "equip_sidenya_ergoactive_dlya_voditelya_s_14pozitsionnoy_regulirovkoy"

[49]「equip_elektroprivod_zerkal」

[50] "equip_paket_tekhnika"

[51]「safety_datchiki_davleniya_v_shinakh」

[52]「safety_okhrannaya_signalizatsiya」

[53]「body_tsvet_kuzova_belyy」

[54]「equip_spetsialnaya_seriya_city」

[55] "main_komplektatsiya_city_14_tsi_150hp_6dsg_4motion"

[56]「equip_panoramnaya_krysha」

[57] "body_bamper_s_uvelichennym_uglom_vezda_24_gradusa"

[58]「body_paket_offroad」

[59]「body_nakladki_na_dvernye_porogi」

[60]「interior_nakladki_na_dvernye_porogi」

[61]「main_komplektatsiya_city_20_tsi_180hp_7dsg_4motion」

[62] "body_shiny_23550_r19_99v"

[63] "body_razmer_diskov_r19"

[64]「interior_dvernye_paneli_skozhanoy_otdelkoy」

[65]「equip_elektroprivod_sideniy」

[66]「main_komplektatsiya_city_14_tsi_150hp_6dsg」

[67]「equip_vybor_rezhimov_vozhdeniya」

[68]「interior_yashchik_dlya_khraneniya_pod_perednim_passazhirskim_kreslom」

[69] "interior_ergonomichnye_perednie_sidenya"

[70] "equip_voditelskoe_sidene_s_regulirovkoy_po_vysote_dline_uglu_naklona_spinki"

[71]「equip_massazhnye_sideniya」

[72] "body_tsvet_kuzova_bezhevyy_metallik"

[73]「body_tsvet_kuzova_krasnyy_metallik」

[74] "body_shiny_23555_r18_100v"

[75] "body_razmer_diskov_r18"

[76] "interior_nakladki_na_porogi_s_podsvetkoy"

[77]「interior_dekorativnye_vstavki_dark_grid」

[78]「interior_dve_lampy_dlya_chteniya_speredi」

[79]「equip_paket_osveshchenie」

[80]「equip_fonovaya_podsvetka_interera」

[81] "equip_svetodiodnye_zadnie_fonari_3d"

[82] "main_komplektatsiya_offroad_20_tsi_180hp_7dsg_4motion"

[83] "body_korpusa_naruzhnykh_zerkal_okrashennye_v_chernyy_tsvet"

[84]「body_polnorazmernoe_stalnoe_zapasnoe_koleso_65x17」

[85] "body_peredniy_bamper_s_uvelichennym_uglom_vezda_26_gradusov_zadniy_bamper_s_dekorativnymi_vstavkami_dekorativnye_nakladki_na_dveri"

[86]「body_spoyler_na_zadney_dveri」

[87]「interior_dekorativnye_vstavki_dlya_spetsialnoy_versii」

[88]「interior_peredniy_podlokotnik_s_dvumya_podstakannikami_i_shtorkoy」

[89]「interior_ploskiy_pol_bagazhnogo_otdeleniy」

[90]「interior_yashchiki_dlya_khraneniya_pod_perednimi_kreslami」

[91] "interior_skladnye_stoliki_v_spinkakh_perednikh_kresel"

[92]「interior_alyuminievye_nakladki_na_pedali」

[93] "interior_rezinovye_salonnye_kovriki_speredi_i_szadi_s_logotipom_offroad"

[94]「interior_nakladki_na_dvernye_porogi_offroad」

[95]「interior_stekla_atermalnye_tonirovannye」

[96] "equip_datchik_sveta"

[97] "equip_spetsialnaya_versiya_offroad"

[98] "equip_klavishi_mekhanicheskoy_razblokirovki_spinok_zadnikh_sideniy_v_bagazhnom_otseke"

[99]「equip_vnutrennee_zerkalo_zadnego_vida_s_avtozatemneniem」

[100]「equip_poyasnichnyy_podpor_dlya_perednikh_sideniy」

[101] "equip_polnostyu_skladnaya_spinka_perednego_passazhirskogo_kresla"

[102] "equip_avtokorrektor_far"

[103] "equip_funktsiya_coming_homeleaving_home"

[104] "equip_2_usb_razema_v_peredney_konsoli_1_usb_razem_v_tsentralnoy_konsoli_dlya_zaryadki"

[105]「equip_datchik_dozhdya」

[106] "equip_obogrev_lobovogo_stekla"

[107] "safety_hdc_sistema_pomoshchi_pri_spuske_so_sklona"

[108]「body_tsvet_kuzova_korichnevyy_metallik」

[109]「equip_navigatsionnaya_sistema」

[110]「equip_paket_navigatsiya」

[111]「equip_golosovoe_upravlenie」

[112]「equip_usb_interfeys_ipodiphonevklyuchaya_auxin」

[113] "equip_multimediynaya_sistema_audiovideo"

[114] "main_komplektatsiya_sportline_20_tsi_220hp_7dsg_4motion"

[115]「body_paket_vneshnikh_elementov_sportline」

[116]「body_shiny_airstop_25545_r_19」

[117] "body_bampery_v_sportivnom_stile_i_nakladki_na_porogi_v_tsvet_kuzova_rasshiriteli_kolesnykh_arok"

[118] "equip_individualnaya_sborka"

[119] "equip_rulevoe_upravlenie_s_peremennym_peredatochnym_otnosheniem"

[120]「equip_multifunktsionalnyy_rul」

[121]「interior_dvernye_paneli_s_kozhanoy_otdelkoy」

[122]「main_komplektatsiya_offroad_14_tsi_150hp_6dsg_4motion」

[123] "equip_zerkalo_zadnego_vida_s_avtozatemneniem"

[124]「equip_tsentralnyy_zamok」

[125] "main_komplektatsiya_sportline_20_tsi_180hp_7dsg_4motion"

[126]「safety_podushki_bezopasnosti_sht_11」

[127]「safety_paket_bezopasnost」

[128] "safety_proaktivnaya_sistema_zashchity_passazhirov_presafe"

[129]「interior_otdelka_dverey」

[130]「main_komplektatsiya_sportline_20_tdi_150hp_7dsg_4motion」

[131]「main_komplektatsiya_offroad_14_tsi_150hp_6mt_4motion」

[132]「main_komplektatsiya_offroad_20_tdi_150hp_7dsg_4motion」

[133]「interior_salonnye_kovriki_speredi_i_szadi」

[134]「interior_tsvet_obivki_sideniy_kombinirovannyy」

[135]「equip_paket_discover_pro」

[136]「interior_paket_khranenie」

[137]「interior_makiyazhnye_zerkala_s_podsvetkoy_v_solntsezashchitnykh_kozyrkakh」

[138]「interior_bagazhnaya_setka」

[139]「interior_potolochnaya_konsol_s_otsekami_dlya_khraneniya」

[140]「body_tsvet_kuzova_belyy_metallik」

[141]「body_pritsepnoe_ustroystvo」

[142]「equip_obogrev_zerkal」

[143]「interior_obivka_sideniy_velyur」

[144]「body_tsvet_kuzova_seryy」

[145]「body_standartnyy_bamper_s_khromirovannoy_otdelkoy」

[146]「interior_khromirovannaya_otdelka_elementov_interera」

[147]「equip_paket_style」

[148]「equip_paket_premium」

[149]「equip_generator_180a」


最初のリリースで回帰モデルを作成するために、中古車に適したランダムフォレストアルゴリズムを使用しました( II )。



#    library(reshape2) library(caret) library(randomForest) new_cars_data <- read.csv('new_cars_data_tiguan.txt') #    R new_cars_data_cor <- as.matrix(cor(new_cars_data)) #     new_cars_data_cor [lower.tri(CM, diag = TRUE)] <- NA #  NA      high_cor_vars <- subset(melt(new_cars_data_cor , na.rm = TRUE), value == 1.0) #       #          if(length(high_cor_vars[,2])) { dataset <- new_cars_data[(-c(high_cor_vars[,2]))] } else { dataset <- new_cars_data } set.seed(1) #     ( ) split <- runif(dim(dataset)[1]) > 0.2 #    train <- dataset[split,] #      (cross-validation)  test <- dataset[!split,] #  (hold-out) 
      
      





相互検証には、 キャレットパッケージを使用しました。これには、モデルの品質を評価するための多数の可能性があります。



 fit.control <- trainControl(method = "repeatedcv", number = 10, repeats = 10) train.rf.model <- train(price~., data=train, method="rf", trControl=fit.control , metric = "RMSE") #  10-  10-  -    train.rf.model #    -
      
      





詳細
ランダムフォレスト



1858サンプル

111予測子



前処理なし

リサンプリング:交差検証(10倍、10回繰り返し)

サンプルサイズの概要:1673、1672、1672、1672、1671、1673、...

チューニングパラメーター全体の結果のリサンプリング:



mtry RMSE Rsquared

2 132963.50 0.7264413

56 79757.67 0.8626671

111 80 401.10 0.8605166



RMSEを使用して、最小値を使用して最適なモデルを選択しました。

モデルに使用される最終値はmtry = 56でした。


決定係数( Rsquared )の取得値は、従属変数(価格)が問題のモデルによって非常によく説明されていることを意味します。



 train.rf.model <- randomForest(price ~ ., train,mtry=56) #        -  varImpPlot(train.rf.model) #   30   
      
      









 rf.model.predictions <- predict(train.rf.model, test) #       print(sqrt(sum((as.vector(rf.model.predictions - test$price))^2)/length(rf.model.predictions))) #     ( ) [1] 82512.59
      
      





アルゴリズムのテスト



開発したアルゴリズムのおかげで、実際にどのようなメリットが期待できるかを確認します。



 rf.model <- randomForest(price ~ ., dataset,mtry=56) predicted.price <- predict(rf.model, dataset) real.price <- dataset$price profit <- predicted.price - real.price
      
      





ゲイン対価格をプロットします。



 plot(real.price,profit) abline(0,0)
      
      









利益率を計算します。



 sorted <- sort(predicted.price /real.price, decreasing = TRUE) sorted[1:8] 195 193 6 207 202 203 906 206 1.184079 1.176262 1.132920 1.126626 1.123967 1.123967 1.116736 1.116344
      
      





ディーラーからのアプリオリ情報に基づいて利益が計算されるという事実を考慮すると、個人的な会議ではまだ交渉できるので、18%の最大利益は非常に良い結果です。



Webサービスの実装



技術的な部分を整理したら、関心のある車の検索を開始します。



たとえば、 City 2.0 TSI 180hp 7DSG 4Motioを選ぶ際にフォルクスワーゲンティグアンを詳しく調べます。



















このサービスを使用すると、最初に電話をかけるのが妥当なディーラーを知り、車の入手可能性、価格、条件、検査のための訪問、および潜在的な購入を指定します。



最後に



したがって、私はアシスタントを実装して、確立されたすべての追加料金を考慮して、市場で最高の価格で認定ディーラーから新しい車を選択しました。 オプション。

ディーラーが特定の条件(クレジット、CASCO、下取りなど)で車の低価格を提供できるという事実に注意を喚起します。これは一般に、利益の評価に誤りをもたらします。 私の意見では、良い割引のために、ディーラーから課せられた同様のサービスのいくつかを利用することは合理的です、それはパートナーからのCASCOであるか、例えばできるだけ早く返済するローンであるかどうかです。 これは純粋に個人的な質問ですが、いずれにしても、誤解を避けるために、サロンを訪れる前に電話で条件を明確にすることをお勧めします。



ディーラーが最も重要な割引を提供する準備ができているときに年末が新しい車を購入するのに最適な時期であるため、サービスのリリース時期は偶然に選ばれませんでした。

現時点では、サービスはベータモードであり、完全に無料で提供されています。



統計が蓄積されると、新しい分析とインフォグラフィックがサービスに表示されます。これは最終消費者と公式ディーラーの両方にとって興味深いものになりますが、これについては次の記事で説明します。



参照資料



フォルクスワーゲンティグアンのおすすめ



All Articles