Kaggle – House Prices modellek elemzése5 perc olvasás

Ebben a cikkünkben a Kaggle House Prices: Advanced Regression Techniques versenyére készített modelljeink eredményét mutatjuk be.

A lakásárak becsléséhez lineáris regresszió, random forest, lasso regresszió és xgboost modelleket használtunk. Ezeknek az eredményeit ábrázoltuk a training mintán és a Kaggle-n kapott értékek alapján. A pontok RMSLE (Root Mean Squared Logarithmic Error) értékek alapján lettek ábrázolva, vagyis minél kisebb érték elérése volt a cél. A két mintán kapott értékek összehasonlításához megrajzoltuk a 45°-os egyenest is, ami látványosabbá teszi a túlillesztés jelenségét. Ugyanis minél feljebb és távolabb helyezkedik el egy pont ettől az egyenestől, annál inkább túlillesztett modellt kapunk. Egy vízszintes vonallal jeleztük a Kaggle-re feltöltött eddigi legjobb modell eredményét, hogy viszonyítani tudjuk a saját modelljeinket a legjobbakhoz. Azonban fontos megjegyezni, hogy a győztes eredménye nem mindig bizonyul jó viszonyítási alapnak, ugyanis elképzelhető, hogy irreálisan sokat foglalkozott az adott feladattal, illetve az is, hogy csak szimplán szerencséje volt. Ebben a rangsorban jelenleg csupán két embernek van kiugróan jó, 0.08-hoz közeli eredménye, a többieknek mind 0.1 feletti, ami azt sugallja, hogy nem feltétlenül kell komolyan venni a 0.08-os értéket. Ezt az is alátámaszthatja, ha megnézzük az első pár helyezett többi versenyen elért helyezéseit, és azt látjuk, hogy ott nem teljesítettek kiugróan jól.

A vizualizációhoz a ggplot package-et használtuk, melynek kódját és eredményét alább láthatjátok.

p <- ggplot(data=pontoka, aes(x=Training_RMSE, y=Kaggle_Score, color=Verzio))
p + 
  scale_x_continuous(name="Training RMSLE", limits=c(0, 0.43),expand = c(0,0))+
  scale_y_continuous(name="Kaggle RMSLE", limits=c(0, 0.43),expand = c(0,0))+
    geom_abline(slope=1, intercept=0) +
  geom_abline(slope = 0, intercept = 0.08021) +
  geom_point(size=3,alpha=0.6) +
    geom_label_repel(aes(label = Verzio, size=80),
                   box.padding   = 0.35, 
                   point.padding = 0.5,
                   segment.color = 'grey50',
                   label.size = 1) +
   theme_classic() +
  theme(text = element_text(family="Comic Sans MS"),
      axis.title.x= element_text(colour="Black", size=20),
      axis.title.y = element_text(colour="Black", size=20),
      axis.text.x= element_text(size=17),
      axis.text.y = element_text(size=17), 
      legend.position="none") 

A Naiv 2.0 modellt referenciaszempontból készítettük, hogy tudjuk mihez viszonyítani a többi modellünket. A Naiv 2.0 modell esetében a logaritmikus átlaggal becsültük a házárakat. Ehhez képest lényegesen jobb eredményt mutatott a többi modellünk. A lineáris regressziós becslésünk, a módszer egyszerűségéhez és gyorsaságához képest jó eredményt mutatott, míg volt olyan modell, például a lasso regresszió, ami rosszabb eredményt produkált. Ugyanakkor a két lasso modell között nagy volt az eltérés, ami a keresztvalidáció során alkalmazott felbontáson múlott. A lasso-K modell esetében több, mint dupla annyi részre osztottuk a tanuló tartományt (a lasso-A-hoz képest), ez vezetett a túlillesztéshez. A random forest modellek inkább közepes színvonalat hoztak, bár elég idő- és erőforrásigényes az elkészítésük és a validációjuk, így ez a megközelítés annyira nem volt eredményes ezen az adatsoron. A végére maradtak a boosting modellek, amik a legjobb eredményt hozták, ebből számszerűen is a legtöbbet készítettük. Ez a modellcsalád talán a legkedveltebb jelenleg a Kaggle versenyek során, mert nagy a fejlődési potenciálja, viszont erőforrásigényes.

Mivel a használt adatfájl nem volt teljes, ezért sok előkészítést, imputálást és egyéb transzformációkat igényelt. Erről bővebben Data preprocessing: Imputálás és a Hiányzó adatok és vizualizáció cikkekben olvashattok, illetve az előkészítés egy lehetséges megvalósítását itt lehet végigkövetni. Ezek az előkészítési eljárások, azért hangsúlyosak, mert meghatározzák a modellek tanulási képességének lehetőségeit. Nem véletlen, hogy az előrejelzések készítésének nagy részét az előkészítés teszi ki. A mi esetünkben a SalePrice változó transzformálása, konkrétan logaritmizálása egyes modelltípusok esetén 0.2-0.3 tizedes (!) javulást produkált a célváltozó Kaggle pontjaiban, ami nagyjából 1400 hellyel javította a rangsorban elfoglalt helyünket. Ez elég szignifikáns változás ahhoz, hogy ne hagyjuk figyelmen kívül. Persze üzleti szempontból is nézhetjük a problémát, mert nem minden esetben éri meg az üzleti életben néhány százados javulásért dolgozni, hogy a ház árát például a 85 ezer – 115 ezer dolláros tartományról 90 ezer – 110 ezer dolláros tartományra szűkítsük. Ezért mindig érdemes átgondolni, hogy mihez készítjük a modellt, és meddig érdemes erőforrásokat fordítani a becslés pontosságának növelésére.

Reméljük hasznosnak találjátok a tapasztalatainkat és segítségetekre lesz a modelleitek készítéséhez.

Leave a Reply

Your email address will not be published. Required fields are marked *