Como programador, tomó una nueva máquina.

En artículos anteriores ( I , II , III ), hablé en detalle sobre el desarrollo de un servicio para encontrar autos usados ​​rentables en la Federación de Rusia.

Después de haber viajado durante mucho tiempo en varios autos usados, pensé en comprar un auto nuevo y decidí estudiar este tema en detalle. En las grandes ciudades hay una gran cantidad de distribuidores oficiales, al menos para marcas populares. Los concesionarios difieren entre sí en la lista de automóviles disponibles y en la cantidad de descuentos para varios modelos. En busca de los autos que me interesan, no quería llamar y visitar a todos los concesionarios en una fila. En mi opinión, era razonable seleccionar preliminarmente, en base a información a priori, solo aquellos distribuidores que ofrecen los precios más bajos para los modelos y equipos que me interesan. El hecho de que, en la comunicación cara a cara, si puede negociar, la tasa de descuento puede aumentar significativamente, no contradice el objetivo en primer lugar de visitar a los distribuidores que ofrecen los precios más favorables del mercado.

Recopilé datos sobre autos nuevos, los analicé, los diseñé como un servicio y, al final del año, cuando los concesionarios tienen descuentos, decidí compartirlos con ustedes.


Descripción de los competidores


Runet ya tiene un servicio para seleccionar y comprar autos nuevos, autospot.ru, pero tiene las siguientes desventajas significativas:

  1. En el sitio no hay forma de averiguar los contactos de los concesionarios donde se encuentran los autos que le interesan, solo puede dejar su teléfono para recibir comentarios. El gerente de autospot.ru se comunicará con usted dentro de media hora, verificará con usted la marca, el modelo y el equipo, y luego informará su teléfono a los concesionarios que tienen autos que cumplen con sus requisitos. Esperará al menos una hora para esperar la llamada inicial del distribuidor. Un factor extremadamente molesto en esta comunicación es la importunidad. Después de la conversación, el administrador de autospot.ru y varios distribuidores lo llamarán con bastante frecuencia, recordándole a sí mismos, incluso si les pregunta lo contrario.
  2. El sitio presenta ~ 30,000 autos nuevos de toda Rusia, que es menos del 30% del número promedio de autos nuevos vendidos por mes en 2018 .
  3. El sitio no tiene una estimación del costo de un automóvil en relación con el mercado de acuerdo con el equipo y otros opciones, es decir, es imposible entender qué ofertas son las más rentables.

Para los tableros de anuncios auto.ru, drom.ru y avito.ru, la falla n. ° 2 es relevante en diversos grados, y la n. ° 3 es totalmente aplicable a todos.

Por lo tanto, se describió un círculo de tareas fundamentales que tuve que resolver en el proceso de desarrollo del servicio.

Recogida de datos


Los datos sobre automóviles nuevos de los concesionarios oficiales se recopilan de diversas fuentes, se procesan, sistematizan y unifican. Los datos se actualizan y se agregan nuevas fuentes regularmente. El volumen de datos es de ~ 75,000 autos nuevos de más de 650 concesionarios de más de 70 ciudades de Rusia.

El proceso de recopilación y procesamiento de datos está más allá del alcance de este artículo y puede estar cubierto en uno de los siguientes artículos.

Transformación de datos y construcción de modelos


Para buscar automóviles rentables para cada modelo de automóvil individualmente, se formó un modelo de regresión predictiva, cuya variable objetivo fue el precio del automóvil, y se formaron predictores a partir de los datos básicos del automóvil, el equipo y los complementos instalados. opciones. Los parámetros con varios valores no numéricos se representaron en el modelo como una variable ficticia n-1.

Para mayor claridad, el conjunto de regresores para el Volkswagen Tiguan tiene la forma:

Más detalles
[1] "precio"
[2] "disponibilidad"
[3] "año"
[4] "volumen"
[5] "poder"
[6] "unidad_delantera"
[7] "unidad trasera"
[8] "mkpp"
[9] bencina
[10] "dizel"
[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"

Para construir los modelos de regresión en la primera versión, utilicé el algoritmo Random Forest que funcionó bien para autos usados ​​( 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)  

Para la validación cruzada, utilicé el paquete caret , que tiene una gran cantidad de posibilidades para evaluar la calidad del modelo.

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

Más detalles
Bosque al azar

1858 muestras
111 predictor

Sin preprocesamiento
Muestreo: validación cruzada (10 veces, repetido 10 veces)
Resumen de tamaños de muestra: 1673, 1672, 1672, 1672, 1671, 1673, ...
Resultados de muestreo a través de parámetros de ajuste:

mtry rms rsquared
2 132963.50 0.7264413
56 79757.67 0.8626671
111 80 401.10 0.8605166

RMSE se utilizó para seleccionar el modelo óptimo utilizando el valor más pequeño.
El valor final utilizado para el modelo fue mtry = 56.

El valor obtenido del coeficiente de determinación ( Rsquared ) significa que la variable dependiente (precio) está muy bien explicada por el modelo en consideración.

 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 

Prueba de algoritmo


Comprobaremos qué beneficios reales se pueden esperar gracias al algoritmo desarrollado.

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

Trazamos la ganancia versus el precio.

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



Calcule el porcentaje de beneficio.

 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 

Teniendo en cuenta el hecho de que el beneficio se calcula de acuerdo con la información a priori del concesionario, y en una reunión personal que aún puede negociar, el beneficio máximo del 18% es un muy buen resultado.

Implementación de servicios web


Una vez que haya resuelto la parte técnica, es hora de comenzar a buscar el automóvil de interés.

Por ejemplo, miro de cerca al Volkswagen Tiguan al elegir City 2.0 TSI 180hp 7DSG 4Motio .









Al utilizar el servicio, sabrá a qué distribuidores es razonable llamar en primer lugar, especificará la disponibilidad del automóvil, el precio, las condiciones y la visita para la inspección y la posible compra.

Al final


Por lo tanto, implementé un asistente para seleccionar un auto nuevo de un concesionario autorizado al mejor precio del mercado, teniendo en cuenta todos los complementos establecidos. opciones.
Le llamo la atención sobre el hecho de que el distribuidor puede proporcionar el bajo precio de un automóvil bajo ciertas condiciones (crédito, casco, canje, etc.), lo que en general introduce un error en la evaluación de los beneficios. En mi opinión, en aras de un buen descuento, es racional aprovechar algunos de los servicios similares impuestos por el concesionario, ya sea CASCO con un socio o, por ejemplo, un préstamo que usted paga lo antes posible. Este es un tema puramente individual, pero en cualquier caso, es aconsejable, para evitar malentendidos, aclarar las condiciones por teléfono antes de visitar el salón.

El tiempo de lanzamiento del servicio no se eligió por casualidad, ya que el final del año es el mejor momento para comprar un auto nuevo cuando los concesionarios están listos para proporcionar los descuentos más significativos.
Por el momento, el servicio se encuentra en fase beta y se ofrece de forma totalmente gratuita.

A medida que se acumulen las estadísticas, aparecerán nuevos análisis e infografías en el servicio, lo que será de interés tanto para los consumidores finales como para los distribuidores oficiales, pero hablaré de esto en el próximo artículo.

Referencias


Selecciones para Volkswagen Tiguan

Source: https://habr.com/ru/post/es430336/


All Articles