Juwono136 / predictive-analytics-machine-learning-model

Predictive Analysis using a Comparison of Three Machine Learning Algorithms (KNN, Random Forest, and Boosting Algorithm) to Predict Home Selling Prices.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Predictive Analytics - Prediksi Harga Jual Rumah Menggunakan Algoritma Machine Learning

predictive-analytics-ames-dataset

Untuk penjelasan dan file projek dalam versi Bahasa Inggris silahkan klik disini
For the explanation and project files in the English version, please click here

Domain Proyek

Fluktuasi atau perubahan harga rumah dapat dipengaruhi oleh beberapa faktor termasuk lokasi, ukuran rumah, kondisi bangunan, faktor ekonomi makro dan sebagainya. Beberapa faktor tadi terkadang membingungkan dan membutuhkan waktu untuk mempertimbangkan dan memilih rumah yang sesuai. Oleh karena itu, dibutuhkan sebuah sistem untuk memprediksi harga rumah yang dapat memberikan estimasi dengan tepat/pantas dan membantu para penjual dan pembeli dalam mengambil keputusan.

Dengan membangun sistem yang bisa memprediksi harga rumah, pembeli maupun penjual akan mendapatkan harga rumah yang akurat serta ekspektasi harga yang realistis sehingga bisa meminimalkan risiko overpricing atau underpricing. Jika seorang investor atau pengembang, memiliki perkiraan harga rumah yang akurat dapat membantu dalam menentukan apakah suatu properti merupakan investasi yang menguntungkan atau tidak.

Untuk proses pengembangan model machine learning, dataset yang digunakan pada proyek ini adalah Ames Housing Dataset. Dataset ini berisi berbagai atribut rumah yang ada di daerah Ames, Iowa, United States termasuk dengan harga jualnya dan jumlah fitur yang mencangkup setiap aspek rumah hunian di daerah tersebut. Menurut hasil studi dari Alan Ihre et al dalam jurnalnya berjudul Predicting House Prices with Machine Learning Methods dengan menggunakan dataset yang sama, didapat hasil bahwa permasalahan mengenai prediksi harga rumah bisa menggunakan metode regresi seperti misalnya KNN (K-Nearest Neighbor) atau Random Forest. Dengan membangun model prediksi harga rumah berdasarkan dataset dari daerah Ames, diharapkan hasil model dari proyek ini dapat juga digunakan untuk memprediksi harga rumah di daerah lain.

Business Understanding

Problem Statements

Sekarang, Misalkan ada sebuah perusahaan atau pengembang properti perumahan yang ingin menentukan harga jual rumah pantas tapi perusahaan tetap ingin mendapat keuntungan sebesar mungkin dari penjualan properti tersebut. Berdasarkan kondisi yang telah diuraikan sebelumnya, perusahaan akan mengembangkan sistem yang mampu memprediksi harga rumah untuk menjawab permasalahan berikut:

  • Dari serangkaian fitur yang ada, fitur apa saja yang paling berpengaruh terhadap harga jual rumah?
  • Berapa harga pasar jual rumah dengan karakteristik atau fitur tertentu?

Goals

Untuk menjawab pertanyaan tersebut, perusahaan akan membuat predictive modelling dengan tujuan atau goals sebagai berikut:

  • Mengetahui fitur yang paling berkorelasi dengan harga jual rumah.
  • Membuat model machine learning yang dapat memprediksi harga jual rumah seakurat mungkin berdasarkan fitur - fitur yang ada.

Metodologi

Prediksi harga adalah tujuan yang ingin dicapai dan harga merupakan variabel kontinu. Dalam predictive analytics, untuk data yang bersifat variabel kontinu artinya merupakan permasalahan regresi. Oleh karena itu, metodologi pada proyek ini adalah: membangun model regresi dengan harga jual rumah sebagai target.

Solution Statements

Berdasarkan tujuan atau goals yang sudah dijelaskan sebelumnya, solusi yang diberikan untuk menyelesaikan permasalahan adalah sebagai berikut:

  • Membuat sebuah model untuk memprediksi harga jual rumah. Pengembangan model akan menggunakan beberapa algoritma machine learning yaitu K-Nearest Neighbor, Random Forest, dan Boosting Algorithm dengan mengatur hyperparameter tuning dan melakukan improvement pada baseline model. Dari ketiga model ini, akan dipilih satu model yang memiliki nlai kesalahan prediksi terkecil untuk membuat model yang seakurat mungkin.
  • Metrik digunakan untuk mengevaluasi seberapa baik model dalam memprediksi harga. Karena kasus kali ini merupakan kasus regresi, beberapa metrik yang digunakan adalah Mean Squared Error (MSE) dan Root Mean Squared Error (RMSE). Secara umum, metrik ini mengukur seberapa jauh hasil prediksi dengan nilai sebenarnya.

Data Understanding

Data yang digunakan pada proyek ini adalah Ames Housing Dataset yang diunduh dari platform Kaggle. Dataset ini merupakan dataset competition yang diguanakan untuk latihan di Kaggle dan didalamnya terdapat 1.460 jenis rumah hunian dengan berbagai karakteristik dan harga. Karakteristik terdiri dari 79 jenis fitur yang mencangkup fitur numerik dan non-numerik serta terdapat 1 label yaitu sale price (harga rumah) sebagai variabel target. Fitur numerik seperti misalnya MSSub Class, Lot Frontage, dan Lot Area, sedangkan fitur non-numerik misalnya Street, Alley, dan Lot Shape. 79 Jenis fitur ini adalah fitur yang akan digunakan dalam menentukan pola data, sedangkan harga jual merupakan fitur target. Karena banyaknya jumlah fitur/variabel yang tersedia dalam dataset, maka dibuatkan file bernama data_description.txt untuk melihat informasi lebih lengkap mengenai kategori dan penjelasan dari masing - masing fitur yang tersedia. Berikut adalah struktur folder Ames Housing Dataset yang sudah di download:

├── house-prices                 <- nama folder utama.
   ├── data_description.txt      <- berisi kategori dan penjelasan lengkap dari masing - masing fitur.
   ├── sample_submission.csv     <- berisi contoh submission kompetisi.
   ├── test.csv                  <- test data untuk melakukan pengujian model.
   └── train.csv                 <- train data untuk melatih model.

Variabel - variabel pada Ames Housing Dataset adalah sebagai berikut:

  • SalePrice : Harga jual rumah dalam dollar. Ini adalah variabel target yang ingin diprediksi.
  • MSSubClass : Tipe atau kelas bangunan, terdiri dari beberapa jenis kelas rumah yang direpresentasikan dalam bentuk angka.
  • MSZoning : Klasifikasi zonasi umum dari penjualan properti yang direpresentasikan dalam bentuk huruf seperti A (Agriculture/Pertanian), C (Commercial/Komersial), FV (Pemukiman Desa Terapung), I (Industri), RH (Kepadatan tinggi perumahan), RL (Kepadatan rendah perumahan), RP (Kepadatan rendah perumahan taman), dan RM (Kepadatan menengah perumahan).
  • LotFrontage : Panjang linear dari jalan yang terhubung ke properti.
  • LotArea : Luas lot (lahan/tanah) dalam kaki persegi.
  • Street : Jenis akses jalan ke properti.
  • Alley : Jenis akses gang ke properti.
  • LotShape : Bentuk umum dari properti.
  • LandContour : Kontur tanah dari properti.
  • Utilities : Jenis utilitas yang tersedia.
  • LotConfig : Konfigurasi lot.
  • LandSlope : Kemiringan properti.
  • Neighborhood : Lokasi fisik dalam batas kota Ames.
  • Condition1 : Proksimitas (kedekatan) dengan properti.
  • Condition2 : Proksimitas terhadap berbagai kondisi di dekat properti (jika lebih dari satu).
  • BldgType : Tipe hunian.
  • HouseStyle : Gaya hunian.
  • OverallQual : Penilaian bahan/material dan penyelesaian keseluruhan rumah.
  • OverallCond : Penilaian kondisi keseluruhan rumah.
  • YearBuilt : Tanggal konstruksi asli.
  • YearRemodAdd : Tanggal remodel (sama dengan tanggal konstruksi jika tidak ada renovasi atau penambahan).
  • RoofStyle : Jenis atap.
  • RoofMatl : Bahan atap.
  • Exterior1st : Penutup luar rumah.
  • Exterior2nd : Penutup luar rumah (jika lebih dari satu bahan).
  • MasVnrType : Jenis veneer batu bata.
  • MasVnrArea : Luas veneer batu bata dalam kaki persegi.
  • ExterQual : Kualitas material pada eksterior.
  • ExterCond : Kondisi saat ini dari material pada eksterior.
  • Foundation : Jenis pondasi.
  • BsmtQual : Ketinggian basement.
  • BsmtCond : Kondisi umum basement.
  • BsmtExposure : Dinding tingkat berjalan atau taman.
  • BsmtFinType1 : Penilaian area basement yang sudah selesai.
  • BsmtFinSF1 : Tipe 1 yang sudah selesai dalam kaki persegi.
  • BsmtFinType2 : Penilaian area basement yang sudah selesai (jika ada beberapa tipe).
  • BsmtFinSF2 : tipe 2 yang sudah selesai dalam kaki persegi.
  • BsmtUnfSF : area yang belum selesai dari area basement dalam kaki persegi.
  • TotalBsmtSF : Total area basement dalam kaki persegi.
  • Heating : jenis pemanas.
  • HeatingQC : Kualitas dan kondisi pemanas.
  • CentralAir : terdapat pemanas udara pusat.
  • Electrical : Sistem listrik.
  • 1stFlrSF : Luas lantai pertama dalam kaki persegi.
  • 2ndFlrSF : Luas lantai kedua dalam kaki persegi.
  • LowQualFinSF : luas lantai yang sudah selesai berkualitas rendah dalam kaki persegi.
  • GrLivArea : Area tinggal di atas tingkat tanah dalam kaki persegi.
  • BsmtFullBath : Kamar mandi penuh di basement.
  • BsmtHalfBath : Kamar mandi setengah di basement.
  • FullBath : Kamar mandi penuh di atas tingkat tanah.
  • HalfBath : Kamar mandi setengah di atas tingkat tanah (lantai atas).
  • Bedroom : Kamar tidur di atas tingkat tanah (TIDAK termasuk kamar tidur di basement).
  • Kitchen : Dapur di atas tingkat tanah.
  • KitchenQual : Kualitas dapur.
  • TotRmsAbvGrd : Total kamar di atas tingkat tanah (tidak termasuk kamar mandi).
  • Functional : Fungsionalitas rumah (Anggap tipikal kecuali ada pengurangan).
  • Fireplaces : Jumlah perapian.
  • FireplaceQu : Kualitas perapian.
  • GarageType : Lokasi garasi.
  • GarageYrBlt : Tahun pembuatan garasi.
  • GarageFinish : Penyelesaian interior garasi.
  • GarageCars : Ukuran garasi dalam kapasitas mobil.
  • GarageArea : Ukuran garasi dalam kaki persegi.
  • GarageQual : Kualitas garasi.
  • GarageCond : Kondisi garasi.
  • PavedDrive : Jalan beraspal.
  • WoodDeckSF : Luas area dek kayu dalam kaki persegi.
  • OpenPorchSF : Luas area teras terbuka dalam kaki persegi.
  • EnclosedPorch : Luas area teras tertutup dalam kaki persegi.
  • 3SsnPorch : Luas area teras tiga musim dalam kaki persegi.
  • ScreenPorch : Luas area teras berlayar dalam kaki persegi.
  • PoolArea : Luas area kolam renang dalam kaki persegi.
  • PoolQC : Kualitas kolam renang.
  • Fence : Kualitas pagar.
  • MiscFeature : Fitur tambahan lainnya yang tidak termasuk dalam kategori lain.
  • MiscVal : Nilai fitur tambahan dalam dolar.
  • MoSold : Bulan Dijual (MM).
  • YrSold : Tahun Dijual (YYYY).
  • SaleType : Jenis penjualan.
  • SaleCondition : Kondisi penjualan.

Berikut adalah beberapa tahapan untuk memahami data:

  • Data Loading
  • Exploratory Data Analysis - Deskripsi Variabel
  • Exploratory Data Analysis - Identifikasi Missing Value, Outliers dan Menghapus fitur yang tidak diperlukan untuk pelatihan model
  • Exploratory Data Analysis - Univariate Analysis
  • Exploratory Data Analysis - Multivariate Analysis

Data Loading

Pada bagian ini, dataset akan dibaca secara langsung dari folder dataset yang sudah di download melalui Ames Housing Dataset. Dataset yang digunakan adalah train.csv yang berisi dataset untuk proses pelatihan model.

Tabel 1. Train data dari Ames Housing Dataset

Id MSSubClass MSZoning LotFrontage LotArea Street Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAdd RoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrArea ExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1 BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSF Heating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGr KitchenQual TotRmsAbvGrd Functional Fireplaces FireplaceQu GarageType GarageYrBlt GarageFinish GarageCars GarageArea GarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolArea PoolQC Fence MiscFeature MiscVal MoSold YrSold SaleType SaleCondition SalePrice
0 1 60 RL 65 8450 Pave nan Reg Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 2Story 7 5 2003 2003 Gable CompShg VinylSd VinylSd BrkFace 196 Gd TA PConc Gd TA No GLQ 706 Unf 0 150 856 GasA Ex Y SBrkr 856 854 0 1710 1 0 2 1 3 1 Gd 8 Typ 0 nan Attchd 2003 RFn 2 548 TA TA Y 0 61 0 0 0 0 nan nan nan 0 2 2008 WD Normal 208500
1 2 20 RL 80 9600 Pave nan Reg Lvl AllPub FR2 Gtl Veenker Feedr Norm 1Fam 1Story 6 8 1976 1976 Gable CompShg MetalSd MetalSd None 0 TA TA CBlock Gd TA Gd ALQ 978 Unf 0 284 1262 GasA Ex Y SBrkr 1262 0 0 1262 0 1 2 0 3 1 TA 6 Typ 1 TA Attchd 1976 RFn 2 460 TA TA Y 298 0 0 0 0 0 nan nan nan 0 5 2007 WD Normal 181500
2 3 60 RL 68 11250 Pave nan IR1 Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 2Story 7 5 2001 2002 Gable CompShg VinylSd VinylSd BrkFace 162 Gd TA PConc Gd TA Mn GLQ 486 Unf 0 434 920 GasA Ex Y SBrkr 920 866 0 1786 1 0 2 1 3 1 Gd 6 Typ 1 TA Attchd 2001 RFn 2 608 TA TA Y 0 42 0 0 0 0 nan nan nan 0 9 2008 WD Normal 223500
3 4 70 RL 60 9550 Pave nan IR1 Lvl AllPub Corner Gtl Crawfor Norm Norm 1Fam 2Story 7 5 1915 1970 Gable CompShg Wd Sdng Wd Shng None 0 TA TA BrkTil TA Gd No ALQ 216 Unf 0 540 756 GasA Gd Y SBrkr 961 756 0 1717 1 0 1 0 3 1 Gd 7 Typ 1 Gd Detchd 1998 Unf 3 642 TA TA Y 0 35 272 0 0 0 nan nan nan 0 2 2006 WD Abnorml 140000
4 5 60 RL 84 14260 Pave nan IR1 Lvl AllPub FR2 Gtl NoRidge Norm Norm 1Fam 2Story 8 5 2000 2000 Gable CompShg VinylSd VinylSd BrkFace 350 Gd TA PConc Gd TA Av GLQ 655 Unf 0 490 1145 GasA Ex Y SBrkr 1145 1053 0 2198 1 0 2 1 4 1 Gd 9 Typ 1 TA Attchd 2000 RFn 3 836 TA TA Y 192 84 0 0 0 0 nan nan nan 0 12 2008 WD Normal 250000

Berdasarkan Tabel 1 informasi yang didapat dataset adalah sebagai berikut:

  • Terdapat 1.460 baris (records atau jumlah pengamatan) dalam dataset.
  • Terdapat 81 kolom yaitu: Id, MSSubClass, MSZoning, LotFrontage, dan sebagainya.

Exploratory Data Analysis - Deskripsi Variabel

Exploratory data analysis atau sering disingkat EDA merupakan proses investigasi awal pada data untuk menganalisis karakteristik, menemukan pola, anomali, dan memeriksa asumsi pada data. Proses EDA akan melakukan deskripsi variabel untuk mengetahui informasi lebih lengkap dan mengecek informasi pada dataset. Berdasarkan informasi dari Kaggle Terdapat sekitar 80 variabel (termasuk harga rumah) yang dijelaskan lebih lengkap di file data_description.txt. Berikut adalah contoh penjelasan dari salah satu variabel yaitu MSZoning yang berasal dari file data_description.txt:

  • MSZoning : Mengidentifikasi klasifikasi zona umum dari penjualan. Terdiri dari:
    • A : Pertanian
    • C : Komersial
    • FV : Perumahan Desa Mengambang
    • I : Industri
    • RH : Kepadatan Tinggi Perumahan
    • RL : Kepadatan Rendah Perumahan
    • RP : Taman Kepadatan Rendah Perumahan
    • RM : Kepadatan Sedang Perumahan

Dengan menggunakan fungsi info() di dataset terlihat bahwa:

  • Terdapat 43 kolom dengan tipe object. Kolom ini merupakan categorical features (fitur non-numerik)
  • Terdapat 3 kolom dengan tipe data float64. Kolom ini merupakan fitur numerik yang merupakan hasil pengukuran secara fisik.
  • Terdapat 35 kolom dengan tipe data int64. Kolom ini merupakan fitur numerik yang salah satunya adalah target fitur yaitu harga jual rumah.

Terdapat juga beberapa fitur/kolom yang memiliki nilai null/NaN. Berdasarkan hasil analisis, terdapat 19 fitur yang mempunyai nilai NaN/Null yaitu 'LotFrontage', 'Alley', 'MasVnrType', 'MasVnrArea', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Electrical', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageQual', 'GarageCond', 'PoolQC', 'Fence', dan 'MiscFeature'. Karena nilai ini nantinya akan mengganggu kinerja dari model maka akan dihapus fitur yang memiliki nilai NaN/Null tersebut. Setelah di drop fitur yang memiliki nilai NaN/Null, dataset akan terlihat pada Tabel 2.

Tabel 2. Dataset setelah dilakukan proses drop fitur yang memiliki nilai NaN/Null

Id MSSubClass MSZoning LotArea Street LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAdd RoofStyle RoofMatl Exterior1st Exterior2nd ExterQual ExterCond Foundation BsmtFinSF1 BsmtFinSF2 BsmtUnfSF TotalBsmtSF Heating HeatingQC CentralAir 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGr KitchenQual TotRmsAbvGrd Functional Fireplaces GarageCars GarageArea PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolArea MiscVal MoSold YrSold SaleType SaleCondition SalePrice
0 1 60 RL 8450 Pave Reg Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 2Story 7 5 2003 2003 Gable CompShg VinylSd VinylSd Gd TA PConc 706 0 150 856 GasA Ex Y 856 854 0 1710 1 0 2 1 3 1 Gd 8 Typ 0 2 548 Y 0 61 0 0 0 0 0 2 2008 WD Normal 208500
1 2 20 RL 9600 Pave Reg Lvl AllPub FR2 Gtl Veenker Feedr Norm 1Fam 1Story 6 8 1976 1976 Gable CompShg MetalSd MetalSd TA TA CBlock 978 0 284 1262 GasA Ex Y 1262 0 0 1262 0 1 2 0 3 1 TA 6 Typ 1 2 460 Y 298 0 0 0 0 0 0 5 2007 WD Normal 181500
2 3 60 RL 11250 Pave IR1 Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 2Story 7 5 2001 2002 Gable CompShg VinylSd VinylSd Gd TA PConc 486 0 434 920 GasA Ex Y 920 866 0 1786 1 0 2 1 3 1 Gd 6 Typ 1 2 608 Y 0 42 0 0 0 0 0 9 2008 WD Normal 223500
3 4 70 RL 9550 Pave IR1 Lvl AllPub Corner Gtl Crawfor Norm Norm 1Fam 2Story 7 5 1915 1970 Gable CompShg Wd Sdng Wd Shng TA TA BrkTil 216 0 540 756 GasA Gd Y 961 756 0 1717 1 0 1 0 3 1 Gd 7 Typ 1 3 642 Y 0 35 272 0 0 0 0 2 2006 WD Abnorml 140000
4 5 60 RL 14260 Pave IR1 Lvl AllPub FR2 Gtl NoRidge Norm Norm 1Fam 2Story 8 5 2000 2000 Gable CompShg VinylSd VinylSd Gd TA PConc 655 0 490 1145 GasA Ex Y 1145 1053 0 2198 1 0 2 1 4 1 Gd 9 Typ 1 3 836 Y 192 84 0 0 0 0 0 12 2008 WD Normal 250000
5 6 50 RL 14115 Pave IR1 Lvl AllPub Inside Gtl Mitchel Norm Norm 1Fam 1.5Fin 5 5 1993 1995 Gable CompShg VinylSd VinylSd TA TA Wood 732 0 64 796 GasA Ex Y 796 566 0 1362 1 0 1 1 1 1 TA 5 Typ 0 2 480 Y 40 30 0 320 0 0 700 10 2009 WD Normal 143000
6 7 20 RL 10084 Pave Reg Lvl AllPub Inside Gtl Somerst Norm Norm 1Fam 1Story 8 5 2004 2005 Gable CompShg VinylSd VinylSd Gd TA PConc 1369 0 317 1686 GasA Ex Y 1694 0 0 1694 1 0 2 0 3 1 Gd 7 Typ 1 2 636 Y 255 57 0 0 0 0 0 8 2007 WD Normal 307000
7 8 60 RL 10382 Pave IR1 Lvl AllPub Corner Gtl NWAmes PosN Norm 1Fam 2Story 7 6 1973 1973 Gable CompShg HdBoard HdBoard TA TA CBlock 859 32 216 1107 GasA Ex Y 1107 983 0 2090 1 0 2 1 3 1 TA 7 Typ 2 2 484 Y 235 204 228 0 0 0 350 11 2009 WD Normal 200000
8 9 50 RM 6120 Pave Reg Lvl AllPub Inside Gtl OldTown Artery Norm 1Fam 1.5Fin 7 5 1931 1950 Gable CompShg BrkFace Wd Shng TA TA BrkTil 0 0 952 952 GasA Gd Y 1022 752 0 1774 0 0 2 0 2 2 TA 8 Min1 2 2 468 Y 90 0 205 0 0 0 0 4 2008 WD Abnorml 129900
9 10 190 RL 7420 Pave Reg Lvl AllPub Corner Gtl BrkSide Artery Artery 2fmCon 1.5Unf 5 6 1939 1950 Gable CompShg MetalSd MetalSd TA TA BrkTil 851 0 140 991 GasA Ex Y 1077 0 0 1077 1 0 1 0 2 2 TA 5 Typ 2 1 205 Y 0 4 0 0 0 0 0 1 2008 WD Normal 118000
10 11 20 RL 11200 Pave Reg Lvl AllPub Inside Gtl Sawyer Norm Norm 1Fam 1Story 5 5 1965 1965 Hip CompShg HdBoard HdBoard TA TA CBlock 906 0 134 1040 GasA Ex Y 1040 0 0 1040 1 0 1 0 3 1 TA 5 Typ 0 1 384 Y 0 0 0 0 0 0 0 2 2008 WD Normal 129500
11 12 60 RL 11924 Pave IR1 Lvl AllPub Inside Gtl NridgHt Norm Norm 1Fam 2Story 9 5 2005 2006 Hip CompShg WdShing Wd Shng Ex TA PConc 998 0 177 1175 GasA Ex Y 1182 1142 0 2324 1 0 3 0 4 1 Ex 11 Typ 2 3 736 Y 147 21 0 0 0 0 0 7 2006 New Partial 345000
12 13 20 RL 12968 Pave IR2 Lvl AllPub Inside Gtl Sawyer Norm Norm 1Fam 1Story 5 6 1962 1962 Hip CompShg HdBoard Plywood TA TA CBlock 737 0 175 912 GasA TA Y 912 0 0 912 1 0 1 0 2 1 TA 4 Typ 0 1 352 Y 140 0 0 0 176 0 0 9 2008 WD Normal 144000
13 14 20 RL 10652 Pave IR1 Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 1Story 7 5 2006 2007 Gable CompShg VinylSd VinylSd Gd TA PConc 0 0 1494 1494 GasA Ex Y 1494 0 0 1494 0 0 2 0 3 1 Gd 7 Typ 1 3 840 Y 160 33 0 0 0 0 0 8 2007 New Partial 279500
14 15 20 RL 10920 Pave IR1 Lvl AllPub Corner Gtl NAmes Norm Norm 1Fam 1Story 6 5 1960 1960 Hip CompShg MetalSd MetalSd TA TA CBlock 733 0 520 1253 GasA TA Y 1253 0 0 1253 1 0 1 1 2 1 TA 5 Typ 1 1 352 Y 0 213 176 0 0 0 0 5 2008 WD Normal 157000
15 16 45 RM 6120 Pave Reg Lvl AllPub Corner Gtl BrkSide Norm Norm 1Fam 1.5Unf 7 8 1929 2001 Gable CompShg Wd Sdng Wd Sdng TA TA BrkTil 0 0 832 832 GasA Ex Y 854 0 0 854 0 0 1 0 2 1 TA 5 Typ 0 2 576 Y 48 112 0 0 0 0 0 7 2007 WD Normal 132000
16 17 20 RL 11241 Pave IR1 Lvl AllPub CulDSac Gtl NAmes Norm Norm 1Fam 1Story 6 7 1970 1970 Gable CompShg Wd Sdng Wd Sdng TA TA CBlock 578 0 426 1004 GasA Ex Y 1004 0 0 1004 1 0 1 0 2 1 TA 5 Typ 1 2 480 Y 0 0 0 0 0 0 700 3 2010 WD Normal 149000
17 18 90 RL 10791 Pave Reg Lvl AllPub Inside Gtl Sawyer Norm Norm Duplex 1Story 4 5 1967 1967 Gable CompShg MetalSd MetalSd TA TA Slab 0 0 0 0 GasA TA Y 1296 0 0 1296 0 0 2 0 2 2 TA 6 Typ 0 2 516 Y 0 0 0 0 0 0 500 10 2006 WD Normal 90000
18 19 20 RL 13695 Pave Reg Lvl AllPub Inside Gtl SawyerW RRAe Norm 1Fam 1Story 5 5 2004 2004 Gable CompShg VinylSd VinylSd TA TA PConc 646 0 468 1114 GasA Ex Y 1114 0 0 1114 1 0 1 1 3 1 Gd 6 Typ 0 2 576 Y 0 102 0 0 0 0 0 6 2008 WD Normal 159000
19 20 20 RL 7560 Pave Reg Lvl AllPub Inside Gtl NAmes Norm Norm 1Fam 1Story 5 6 1958 1965 Hip CompShg BrkFace Plywood TA TA CBlock 504 0 525 1029 GasA TA Y 1339 0 0 1339 0 0 1 0 3 1 TA 6 Min1 0 1 294 Y 0 0 0 0 0 0 0 5 2009 COD Abnorml 139000
20 21 60 RL 14215 Pave IR1 Lvl AllPub Corner Gtl NridgHt Norm Norm 1Fam 2Story 8 5 2005 2006 Gable CompShg VinylSd VinylSd Gd TA PConc 0 0 1158 1158 GasA Ex Y 1158 1218 0 2376 0 0 3 1 4 1 Gd 9 Typ 1 3 853 Y 240 154 0 0 0 0 0 11 2006 New Partial 325300
21 22 45 RM 7449 Pave Reg Bnk AllPub Inside Gtl IDOTRR Norm Norm 1Fam 1.5Unf 7 7 1930 1950 Gable CompShg Wd Sdng Wd Sdng TA TA PConc 0 0 637 637 GasA Ex Y 1108 0 0 1108 0 0 1 0 3 1 Gd 6 Typ 1 1 280 N 0 0 205 0 0 0 0 6 2007 WD Normal 139400
22 23 20 RL 9742 Pave Reg Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 1Story 8 5 2002 2002 Hip CompShg VinylSd VinylSd Gd TA PConc 0 0 1777 1777 GasA Ex Y 1795 0 0 1795 0 0 2 0 3 1 Gd 7 Typ 1 2 534 Y 171 159 0 0 0 0 0 9 2008 WD Normal 230000
...
1456 1457 20 RL 13175 Pave Reg Lvl AllPub Inside Gtl NWAmes Norm Norm 1Fam 1Story 6 6 1978 1988 Gable CompShg Plywood Plywood TA TA CBlock 790 163 589 1542 GasA TA Y 2073 0 0 2073 1 0 2 0 3 1 TA 7 Min1 2 2 500 Y 349 0 0 0 0 0 0 2 2010 WD Normal 210000
1457 1458 70 RL 9042 Pave Reg Lvl AllPub Inside Gtl Crawfor Norm Norm 1Fam 2Story 7 9 1941 2006 Gable CompShg CemntBd CmentBd Ex Gd Stone 275 0 877 1152 GasA Ex Y 1188 1152 0 2340 0 0 2 0 4 1 Gd 9 Typ 2 1 252 Y 0 60 0 0 0 0 2500 5 2010 WD Normal 266500
1458 1459 20 RL 9717 Pave Reg Lvl AllPub Inside Gtl NAmes Norm Norm 1Fam 1Story 5 6 1950 1996 Hip CompShg MetalSd MetalSd TA TA CBlock 49 1029 0 1078 GasA Gd Y 1078 0 0 1078 1 0 1 0 2 1 Gd 5 Typ 0 1 240 Y 366 0 112 0 0 0 0 4 2010 WD Normal 142125
1459 1460 20 RL 9937 Pave Reg Lvl AllPub Inside Gtl Edwards Norm Norm 1Fam 1Story 5 6 1965 1965 Gable CompShg HdBoard HdBoard Gd TA CBlock 830 290 136 1256 GasA Gd Y 1256 0 0 1256 1 0 1 1 3 1 TA 6 Typ 0 1 276 Y 736 68 0 0 0 0 0 6 2008 WD Normal 147500

Berdasarkan Tabel 2 terlihat bahwa jumlah fitur yang tersisa adalah sebesar 62 fitur setelah menghilangkan fitur yang memiliki nilai NaN/Null. Selanjutnya, karena semua kolom telah memiliki tipe data yang sesuai dilakukan proses pengecekan deksripsi statistik data menggunakan fitur describe().

Fungsi describe() memberikan informasi statistik pada masing - masing kolom, antara lain:

  • Count adalah jumlah sampel pada data.
  • Mean adalah nilai rata-rata.
  • Std adalah standar deviasi.
  • Min yaitu nilai minimum setiap kolom.
  • 25% adalah kuartil pertama. Kuartil adalah nilai yang menandai batas interval dalam empat bagian sebaran yang sama.
  • 50% adalah kuartil kedua, atau biasa juga disebut median (nilai tengah).
  • 75% adalah kuartil ketiga.
  • Max adalah nilai maksimum.

Exploratory Data Analysis - Menangani Missing Value, Outliers dan Menghapus fitur yang tidak perlu

Identifikasi Missing Value

Dari hasil fungsi describe(), nilai minimum untuk beberapa kolom adalah 0. Karena terdapat banyak fitur dalam dataset, sehingga dibeberapa kasus nilai 0 ini menyulitkan nantinya untuk melihat keseluruhan fitur, maka dilakukan investigasi untuk mencari informasi semua fitur dengan nilai minimum sama dengan 0.

Berdasarkan analisis dengan bantuan fungsi describe(), didapat bahwa terdapat 22 fitur yang memiliki nilai minimum 0. Berdasarkan data description di file data_description.txt diketahui bahwa nilai 0 di dataset juga memiliki makna tertentu yang artinya bukan merupakan nilai missing value tapi berupa informasi yang ada di beberapa variabel. Misalnya untuk fitur PoolArea yang paling banyak terdapat nilai 0 sebesar 1.453, nilai 0 disini memiliki arti bahwa di beberapa jenis properti rumah tersebut tidak terdapat kolam renang. Nilai 0 ini juga tidak bisa dianggap sebagai tipe data boolean karena angka 0 disini memiliki arti jumlah (kuantitas) bukan bermakna True/False. Jadi bisa disimpulkan bahwa tidak terdapat missing value pada dataset tersebut.

Menghilangkan outliers

Outliers adalah sampel yang nilainya sangat jauh dari cakupan umum data utama. Ada beberapa teknik outliers yang umum digunakan. Pada proyek ini akan menggunakan metode IQR (Inter Quartile Range). IQR menggunakan konsep kuartil untuk menghilangkan outliers, Kuartil dari suatu populasi adalah tiga nilai yang membagi distribusi data menjadi empat sebaran. Seperempat dari data berada di bawah kuartil pertama (Q1), setengah dari data berada di bawah kuartil kedua (Q2), dan tiga perempat dari data berada di kuartil ketiga (Q3). Dengan demikian interquartile range atau IQR = Q3 - Q1.

Hal pertama yang perlu dilakukan adalah membuat batas bawah dan batas atas. Untuk membuat batas bawah, kurangi Q1 dengan 1,5 * IQR. Kemudian, untuk membuat batas atas, tambahkan 1.5 * IQR dengan Q3.

$Batas\ bawah = Q1 - 1.5 * IQR$

$Batas\ atas = Q3 + 1.5 * IQR$

Selanjutnya, visualisasikan terlebih dahulu dataset dengan boxplot untuk mendeteksi outliers pada beberapa fitur numerik. Misalnya pada fitur 'MSSubClass' seperti terlihat pada Gambar 1.

data3

Gambar 1. Boxplot untuk melihat outliers pada fitur MSSubClass

Selanjutnya gunakan metode IQR untuk mengatasi outliers yang terdapat di beberapa fitur tersebut. Metode IQR digunakan untuk mengidentifikasi outlier yang berada di luar Q1 dan Q3. Nilai apa pun yang berada di luar batas ini dianggap sebagai outlier.

Setelah dilakukan proses penghapusan outliers maka dataset akan memiliki dimensi sebesar (601, 62). Ini berarti dataset sudah bersih dan memiliki 601 sampel dengan tersisa 62 fitur. Untuk lebih jelasnya, dilakukan pengecekan kembali fitur 'MSSubClass' dengan menggunakan boxplot dan seperti terlihat pada Gambar 2 bahwa fitur tersebut sudah bersih dari outliers.

data4

Gambar 2. Boxplot pada fitur MSSubClass setelah outliers dihilangkan

Menghapus fitur yang tidak diperlukan

Sebelum dilakukan proses analisis data lebih lanjut. Perlu dilakuan pengecekan fitur yang tidak terlalu berpengaruh pada proses pemodelan nantinya. Penghapusan fitur yang tidak diperlukan akan membantu mempercepat proses pelatihan model dan membantu memahami data dengan lebih mudah.

  • Pertama, dihapus kolom Id karena tidak terlalu berpengaruh pada proses training nantinya.
  • Mengecek jumlah fitur yang mempunyai unique value hanya 1 saja. Jika suatu fitur hanya memiliki satu nilai unik, maka fitur tersebut tidak terlalu berpengaruh atau memberikan banyak informasi yang berguna dalam analisis statistik atau pemodelan. Fitur ini sering disebut juga sebagai fitur konstan.

Setelah dibersihkan dari fitur yang tidak perlu, maka dataset hanya tersisa 49 fitur/variabel dan akan terlihat seperti Tabel 3.

Tabel 3. Dataset yang sudah bersih dari fitur yang tidak diperlukan

MSSubClass MSZoning LotArea Street LotShape LandContour LotConfig LandSlope Neighborhood Condition1 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAdd RoofStyle Exterior1st Exterior2nd ExterQual ExterCond Foundation BsmtFinSF1 BsmtUnfSF TotalBsmtSF Heating HeatingQC CentralAir 1stFlrSF 2ndFlrSF GrLivArea BsmtFullBath FullBath HalfBath BedroomAbvGr KitchenQual TotRmsAbvGrd Functional Fireplaces GarageCars GarageArea PavedDrive WoodDeckSF OpenPorchSF MoSold YrSold SaleType SaleCondition SalePrice
0 60 RL 8450 Pave Reg Lvl Inside Gtl CollgCr Norm 1Fam 2Story 7 5 2003 2003 Gable VinylSd VinylSd Gd TA PConc 706 150 856 GasA Ex Y 856 854 1710 1 2 1 3 Gd 8 Typ 0 2 548 Y 0 61 2 2008 WD Normal 208500
2 60 RL 11250 Pave IR1 Lvl Inside Gtl CollgCr Norm 1Fam 2Story 7 5 2001 2002 Gable VinylSd VinylSd Gd TA PConc 486 434 920 GasA Ex Y 920 866 1786 1 2 1 3 Gd 6 Typ 1 2 608 Y 0 42 9 2008 WD Normal 223500
4 60 RL 14260 Pave IR1 Lvl FR2 Gtl NoRidge Norm 1Fam 2Story 8 5 2000 2000 Gable VinylSd VinylSd Gd TA PConc 655 490 1145 GasA Ex Y 1145 1053 2198 1 2 1 4 Gd 9 Typ 1 3 836 Y 192 84 12 2008 WD Normal 250000
6 20 RL 10084 Pave Reg Lvl Inside Gtl Somerst Norm 1Fam 1Story 8 5 2004 2005 Gable VinylSd VinylSd Gd TA PConc 1369 317 1686 GasA Ex Y 1694 0 1694 1 2 0 3 Gd 7 Typ 1 2 636 Y 255 57 8 2007 WD Normal 307000
10 20 RL 11200 Pave Reg Lvl Inside Gtl Sawyer Norm 1Fam 1Story 5 5 1965 1965 Hip HdBoard HdBoard TA TA CBlock 906 134 1040 GasA Ex Y 1040 0 1040 1 1 0 3 TA 5 Typ 0 1 384 Y 0 0 2 2008 WD Normal 129500

Exploratory Data Analysis - Univariate Analysis

Sebelum masuk ke tahap proses analisis data dengan teknik Univariate EDA. Pertama, dilakukan proses pembagian fitur pada dataset menjadi dua bagian, yaitu numerical features dan categorical features (non numerik). Lakukan analisis pada fitur kategori terlebih dahulu kemudian pada fitur numerik.

Categorical Features

Untuk fitur kategori, pertama visualisasikan dalam bentuk plot dan data frame untuk menganalisis persentase dari masing - masing fitur. Gambar 3 memperlihatkan salah satu visualisasi dari fitur bernama 'KitchenQual'.

data6

Gambar 3. Visualisasi dari salah satu fitur kategori bernama KitchenQual

Berdasarkan Gambar 3, diketahui bahwa beberapa fitur kategori memiliki persentase yang berbeda. Persentase ini menunjukkan jumlah kategori dari masing - masing fitur atau seberapa sering kategori itu muncul pada fitur tersebut.

Numerical Features

Untuk fitur numerik bisa menggunakan histogram untuk melihat hubungan fitur numerik terhadap sampel. Hasilnya terlihat pada Gambar 4.

data7

Gambar 4. Visualisasi histogram hubungan antara fitur - fitur numerik terhadap sampel.

Perhatikan Gambar 4, khususnya histogram untuk variabel "SalePrice" yang merupakan fitur target (label) pada dataset. Dari histogram "SalePrice" tersebut terdapat beberapa informasi, antara lain:

  • Peningkatan harga jual rumah terdistribusi dengan cukup baik. Hal ini dapat dilihat pada histogram "SalePrice" yang mana sampel cenderung meningkat lalu mengalami penurunan seiring dengan meningkatnya harga jual rumah.
  • rentang harga jual rumah cukup tinggi yaitu skala puluhan ribu dollar Amerika hingga sekitar $350000.
  • Sebagian besar harga jual rumah bernilai antara $100000 sampai $200000.
  • Distribusi harga cenderung cukup normal. Hal ini kemungkinan besar akan berimplikasi pada model.

Exploratory Data Analysis - Multivariate Analysis

Multivariate EDA menunjukkan hubungan antara dua atau lebih variabel pada data. Multivariate EDA yang menunjukkan hubungan antara dua variabel biasa disebut sebagai bivariate EDA. Selanjutnya,untuk melihat hubungan tersebut dilakukan analisis data pada fitur kategori dan numerik.

Categorical Features

Untuk fitur kategori, dilakukan pengamatan rata - rata harga jual rumah terhadap fitur kategori. Gambar 5 memperlihatkan salah satu visualisasi dari fitur kategori yaitu 'PavedDrive':

data8

Gambar 5. Visualisasi diagram multivariate analysis dari salah satu fitur kategori bernama PavedDrive

Dengan mengamati rata - rata harga jual rumah relatif terhadap fitur kategori diatas, diperoleh insight yaitu bahwa beberapa fitur kategori memiliki pengaruh yang cukup tinggi terhadap harga jual rumah. Misalkan pada fitur 'PavedDrive' (jalan masuk beraspal) yang terdapat pada Gambar 5, harga jual tertinggi dimiliki oleh tipe Y (Paved).

Numerical Features

Untuk mengamati hubungan antara fitur numerik, dilakukan Corellation matrix untuk melihat hubungan korelasi antar fitur. Koefisien korelasi berkisar antara -1 dan +1, dimana itu akan mengukur kekuatan hubungan antara dua variabel serta arahnya (positif atau negatif). Mengenai kekuatan hubungan antar variabel, semakin dekat nilainya ke 1 atau -1, korelasinya semakin kuat. Sedangkan, semakin dekat nilainya ke 0, korelasinya semakin lemah. Arah korelasi antara dua variabel bisa bernilai positif (nilai kedua variabel cenderung meningkat bersama-sama) maupun negatif (nilai salah satu variabel cenderung meningkat ketika nilai variabel lainnya menurun).

data9

Gambar 6. Correlation matrix untuk fitur numerik

Berdasarkan Gambar 6, terdapat beberapa fitur yang memiliki skor korelasi yang cukup besar diatas 70% dengan fitur target yaitu "SalePrice", Fitur tersebut adalah "OveralQual", "GLivArea", "GarageCars", dan "GarageArea". Sementara fitur lainnya memiliki korelasi yang kecil. Sehingga, fitur - fitur tersebut dapat di-drop atau dihapus dari dataset. Setelah itu fitur numerik akan di cek untuk memastikan tidak ada nilai Null/NaN di dalamnya. Jika ada, maka nilai tersebut akan dihapus. Setelah dilakukan proses drop dan menghilangkan nilai None/NaN, dataset akan tersisa 29 fitur seperti terlihat pada Tabel 4.

Tabel 4. Dataset setelah dilakukan proses EDA (Exploratory Data Analysis)

MSZoning Street LotShape LandContour LotConfig LandSlope Neighborhood Condition1 BldgType HouseStyle OverallQual RoofStyle Exterior1st Exterior2nd ExterQual ExterCond Foundation Heating HeatingQC CentralAir GrLivArea KitchenQual Functional GarageCars GarageArea PavedDrive SaleType SaleCondition SalePrice
0 RL Pave Reg Lvl Inside Gtl CollgCr Norm 1Fam 2Story 7 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1710 Gd Typ 2 548 Y WD Normal 208500
2 RL Pave IR1 Lvl Inside Gtl CollgCr Norm 1Fam 2Story 7 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1786 Gd Typ 2 608 Y WD Normal 223500
4 RL Pave IR1 Lvl FR2 Gtl NoRidge Norm 1Fam 2Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 2198 Gd Typ 3 836 Y WD Normal 250000
6 RL Pave Reg Lvl Inside Gtl Somerst Norm 1Fam 1Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1694 Gd Typ 2 636 Y WD Normal 307000
10 RL Pave Reg Lvl Inside Gtl Sawyer Norm 1Fam 1Story 5 Hip HdBoard HdBoard TA TA CBlock GasA Ex Y 1040 TA Typ 1 384 Y WD Normal 129500
13 RL Pave IR1 Lvl Inside Gtl CollgCr Norm 1Fam 1Story 7 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1494 Gd Typ 3 840 Y New Partial 279500
18 RL Pave Reg Lvl Inside Gtl SawyerW RRAe 1Fam 1Story 5 Gable VinylSd VinylSd TA TA PConc GasA Ex Y 1114 Gd Typ 2 576 Y WD Normal 159000
19 RL Pave Reg Lvl Inside Gtl NAmes Norm 1Fam 1Story 5 Hip BrkFace Plywood TA TA CBlock GasA TA Y 1339 TA Min1 1 294 Y COD Abnorml 139000
20 RL Pave IR1 Lvl Corner Gtl NridgHt Norm 1Fam 2Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 2376 Gd Typ 3 853 Y New Partial 325300
23 RM Pave Reg Lvl Inside Gtl MeadowV Norm TwnhsE 1Story 5 Gable CemntBd CmentBd TA TA PConc GasA TA Y 1060 TA Typ 2 572 Y WD Normal 129900
25 RL Pave Reg Lvl Corner Gtl NridgHt Norm 1Fam 1Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1600 Gd Typ 3 890 Y WD Normal 256300
27 RL Pave Reg Lvl Inside Gtl NridgHt Norm 1Fam 1Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1704 Gd Typ 3 772 Y WD Normal 306000
31 RL Pave IR1 Lvl CulDSac Gtl Sawyer Norm 1Fam 1Story 5 Gable HdBoard HdBoard TA TA CBlock GasA Gd Y 1228 Gd Typ 1 271 Y WD Normal 149350
32 RL Pave Reg Lvl Corner Gtl CollgCr Norm 1Fam 1Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1234 Gd Typ 2 484 Y WD Normal 179900
34 RL Pave Reg Lvl Inside Gtl NridgHt Norm TwnhsE 1Story 9 Hip MetalSd MetalSd Ex TA PConc GasA Ex Y 1561 Ex Typ 2 556 Y WD Normal 277500
35 RL Pave Reg Lvl Inside Gtl NridgHt Norm 1Fam 2Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 2452 Gd Typ 3 691 Y WD Normal 309000
36 RL Pave Reg Lvl Corner Gtl CollgCr Norm 1Fam 1Story 5 Gable VinylSd VinylSd TA TA PConc GasA Ex Y 1097 TA Typ 2 672 Y WD Normal 145000
38 RL Pave Reg Lvl Inside Gtl NAmes Norm 1Fam 1Story 5 Gable VinylSd VinylSd TA Gd CBlock GasA TA Y 1057 Gd Typ 1 246 Y WD Abnorml 109000
40 RL Pave Reg Lvl Inside Gtl NAmes Norm 1Fam 1Story 6 Gable Wd Sdng Wd Sdng TA TA CBlock GasA Ex Y 1324 TA Typ 2 440 Y WD Abnorml 160000
45 RL Pave Reg Lvl Inside Gtl NridgHt Norm TwnhsE 1Story 9 Hip MetalSd MetalSd Ex TA PConc GasA Ex Y 1752 Ex Typ 2 576 Y WD Normal 319900
47 FV Pave Reg Lvl Inside Gtl Somerst Norm 1Fam 1Story 8 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1656 Gd Typ 3 826 Y WD Normal 249700
49 RL Pave Reg Lvl Inside Gtl Sawyer Norm 1Fam 1Story 5 Gable HdBoard HdBoard TA TA CBlock GasA Ex Y 955 TA Typ 1 386 Y WD Normal 127000
54 RL Pave Reg Bnk Inside Mod NAmes Norm 1Fam SLvl 5 Gable MetalSd MetalSd TA TA CBlock GasA TA Y 1360 TA Min1 2 572 Y WD Normal 130000
...
1451 RL Pave Reg Lvl Inside Gtl Somerst Norm 1Fam 1Story 8 Gable CemntBd CmentBd Gd TA PConc GasA Ex Y 1578 Ex Typ 3 840 Y New Partial 287090
1453 RL Pave Reg Lvl Inside Gtl Mitchel Norm 1Fam 1Story 5 Gable VinylSd VinylSd TA TA PConc GasA Ex Y 1140 TA Typ 0 0 Y WD Abnorml 84500
1454 FV Pave Reg Lvl Inside Gtl Somerst Norm 1Fam 1Story 7 Gable VinylSd VinylSd Gd TA PConc GasA Ex Y 1221 Gd Typ 2 400 Y WD Normal 185000
1455 RL Pave Reg Lvl Inside Gtl Gilbert Norm 1Fam 2Story 6 Gable VinylSd VinylSd TA TA PConc GasA Ex Y 1647 TA Typ 2 460 Y WD Normal 175000

Data Preparation

Pada bagian ini, terdapat empat tahap persiapan data, yaitu:

  • Encoding fitur kategori.
  • Reduksi dimensi dengan Principal Component Analysis (PCA).
  • Pembagian dataset dengan fungsi train_test_split dari library sklearn.
  • Standarisasi.

Encoding Fitur Kategori

Proses encoding fitur kategori menggunakan teknik one-hot-encoding. Teknik ini adalah salah satu metode dalam proses encoding fitur (feature encoding) pada data kategorikal. Tujuannya adalah untuk mengubah variabel kategorikal menjadi representasi biner yang dapat digunakan dalam algoritma pembelajaran mesin. Dalam dataset terdapat beberapa variabel kategori, maka dilakukan proses encoding ini dengan fitur get_dummies. Dan menghasilkan dataset seperti terlihat pada Tabel 5.

Tabel 5. Dataset hasil dari Encoding Fitur Kategori

OverallQual GrLivArea GarageCars GarageArea SalePrice MSZoning_FV MSZoning_RH MSZoning_RL MSZoning_RM Street_Grvl Street_Pave LotShape_IR1 LotShape_IR2 LotShape_IR3 LotShape_Reg LandContour_Bnk LandContour_HLS LandContour_Low LandContour_Lvl LotConfig_Corner LotConfig_CulDSac LotConfig_FR2 LotConfig_FR3 LotConfig_Inside LandSlope_Gtl LandSlope_Mod Neighborhood_Blmngtn Neighborhood_BrkSide Neighborhood_ClearCr Neighborhood_CollgCr Neighborhood_Crawfor Neighborhood_Edwards Neighborhood_Gilbert Neighborhood_IDOTRR Neighborhood_MeadowV Neighborhood_Mitchel Neighborhood_NAmes Neighborhood_NPkVill Neighborhood_NWAmes Neighborhood_NoRidge Neighborhood_NridgHt Neighborhood_OldTown Neighborhood_SWISU Neighborhood_Sawyer Neighborhood_SawyerW Neighborhood_Somerst Neighborhood_StoneBr Neighborhood_Timber Neighborhood_Veenker Condition1_Artery Condition1_Feedr Condition1_Norm Condition1_PosA Condition1_PosN Condition1_RRAe Condition1_RRAn Condition1_RRNe Condition1_RRNn BldgType_1Fam BldgType_Duplex BldgType_Twnhs BldgType_TwnhsE HouseStyle_1.5Fin HouseStyle_1.5Unf HouseStyle_1Story HouseStyle_2Story HouseStyle_SFoyer HouseStyle_SLvl RoofStyle_Gable RoofStyle_Gambrel RoofStyle_Hip Exterior1st_AsbShng Exterior1st_BrkFace Exterior1st_CemntBd Exterior1st_HdBoard Exterior1st_MetalSd Exterior1st_Plywood Exterior1st_Stucco Exterior1st_VinylSd Exterior1st_Wd Sdng Exterior1st_WdShing Exterior2nd_AsbShng Exterior2nd_BrkFace Exterior2nd_CmentBd Exterior2nd_HdBoard Exterior2nd_ImStucc Exterior2nd_MetalSd Exterior2nd_Plywood Exterior2nd_Stone Exterior2nd_Stucco Exterior2nd_VinylSd Exterior2nd_Wd Sdng Exterior2nd_Wd Shng ExterQual_Ex ExterQual_Fa ExterQual_Gd ExterQual_TA ExterCond_Fa ExterCond_Gd ExterCond_TA Foundation_BrkTil Foundation_CBlock Foundation_PConc Foundation_Wood Heating_GasA Heating_GasW Heating_Grav HeatingQC_Ex HeatingQC_Fa HeatingQC_Gd HeatingQC_TA CentralAir_N CentralAir_Y KitchenQual_Ex KitchenQual_Fa KitchenQual_Gd KitchenQual_TA Functional_Maj1 Functional_Maj2 Functional_Min1 Functional_Min2 Functional_Typ PavedDrive_N PavedDrive_P PavedDrive_Y SaleType_COD SaleType_CWD SaleType_Con SaleType_ConLD SaleType_ConLI SaleType_ConLw SaleType_New SaleType_Oth SaleType_WD SaleCondition_Abnorml SaleCondition_AdjLand SaleCondition_Alloca SaleCondition_Family SaleCondition_Normal SaleCondition_Partial
0 7 1710 2 548 208500 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
2 7 1786 2 608 223500 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
4 8 2198 3 836 250000 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
6 8 1694 2 636 307000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
10 5 1040 1 384 129500 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0

Reduksi Dimensi dengan PCA

Teknik reduksi (pengurangan) dimensi adalah prosedur yang mengurangi jumlah fitur dengan tetap mempertahankan informasi pada data. Teknik pengurangan dimensi yang digunakan pada proyek ini adalah PCA. PCA adalah teknik untuk mereduksi dimensi, mengekstraksi fitur, dan mentransformasi data dari “n-dimensional space” ke dalam sistem berkoordinat baru dengan dimensi m, di mana m lebih kecil dari n.

PCA bekerja menggunakan metode aljabar linier dengan mengasumsikan bahwa sekumpulan data pada arah dengan varians terbesar merupakan yang paling penting (utama). PCA umumnya digunakan ketika variabel dalam data memiliki korelasi yang tinggi. Korelasi tinggi ini menunjukkan data yang berulang atau redundant. Karena hal inilah, teknik PCA digunakan untuk mereduksi variabel asli menjadi sejumlah kecil variabel baru yang tidak berkorelasi linier, disebut komponen utama (PC). Komponen utama ini dapat menangkap sebagian besar varians dalam variabel asli. Sehingga, saat teknik PCA diterapkan pada data, PCA hanya akan menggunakan komponen utama dan mengabaikan sisanya.

Sebelum dilakukan proses PCA, dilakukan proses analisis fitur numerik menggunakan pairplot. Dari hasil pairplot terdapat beberapa fitur yang akan dilakukan proses reduksi. Seperti terlihat pada Gambar 7, Fitur GrLivArea dan GarageArea memiliki korelasi yang cukup tinggi. Hal ini terjadi karena beberapa fitur tersebut mengandung informasi yang sama yaitu area/luas. Selanjutnya aplikasikan class PCA dari library scikit learn ke dalam kode program untuk melakukan pengurangan dimensi pada fitur tersebut.

data17

Gambar 7. Diagram pairplot hasil proses analisis fitur numerik

Setelah dilakukan proses PCA, maka akan terdapat fitur baru bernama 'dimension' yang merupakan pengurangan dimensi dari fitur 'GrLivArea' dan 'GarageArea' seperti terlihat pada Tabel 6.

Tabel 6. Dataset hasil dari proses PCA

OverallQual GarageCars SalePrice MSZoning_FV MSZoning_RH MSZoning_RL MSZoning_RM Street_Grvl Street_Pave LotShape_IR1 LotShape_IR2 LotShape_IR3 LotShape_Reg LandContour_Bnk LandContour_HLS LandContour_Low LandContour_Lvl LotConfig_Corner LotConfig_CulDSac LotConfig_FR2 LotConfig_FR3 LotConfig_Inside LandSlope_Gtl LandSlope_Mod Neighborhood_Blmngtn Neighborhood_BrkSide Neighborhood_ClearCr Neighborhood_CollgCr Neighborhood_Crawfor Neighborhood_Edwards Neighborhood_Gilbert Neighborhood_IDOTRR Neighborhood_MeadowV Neighborhood_Mitchel Neighborhood_NAmes Neighborhood_NPkVill Neighborhood_NWAmes Neighborhood_NoRidge Neighborhood_NridgHt Neighborhood_OldTown Neighborhood_SWISU Neighborhood_Sawyer Neighborhood_SawyerW Neighborhood_Somerst Neighborhood_StoneBr Neighborhood_Timber Neighborhood_Veenker Condition1_Artery Condition1_Feedr Condition1_Norm Condition1_PosA Condition1_PosN Condition1_RRAe Condition1_RRAn Condition1_RRNe Condition1_RRNn BldgType_1Fam BldgType_Duplex BldgType_Twnhs BldgType_TwnhsE HouseStyle_1.5Fin HouseStyle_1.5Unf HouseStyle_1Story HouseStyle_2Story HouseStyle_SFoyer HouseStyle_SLvl RoofStyle_Gable RoofStyle_Gambrel RoofStyle_Hip Exterior1st_AsbShng Exterior1st_BrkFace Exterior1st_CemntBd Exterior1st_HdBoard Exterior1st_MetalSd Exterior1st_Plywood Exterior1st_Stucco Exterior1st_VinylSd Exterior1st_Wd Sdng Exterior1st_WdShing Exterior2nd_AsbShng Exterior2nd_BrkFace Exterior2nd_CmentBd Exterior2nd_HdBoard Exterior2nd_ImStucc Exterior2nd_MetalSd Exterior2nd_Plywood Exterior2nd_Stone Exterior2nd_Stucco Exterior2nd_VinylSd Exterior2nd_Wd Sdng Exterior2nd_Wd Shng ExterQual_Ex ExterQual_Fa ExterQual_Gd ExterQual_TA ExterCond_Fa ExterCond_Gd ExterCond_TA Foundation_BrkTil Foundation_CBlock Foundation_PConc Foundation_Wood Heating_GasA Heating_GasW Heating_Grav HeatingQC_Ex HeatingQC_Fa HeatingQC_Gd HeatingQC_TA CentralAir_N CentralAir_Y KitchenQual_Ex KitchenQual_Fa KitchenQual_Gd KitchenQual_TA Functional_Maj1 Functional_Maj2 Functional_Min1 Functional_Min2 Functional_Typ PavedDrive_N PavedDrive_P PavedDrive_Y SaleType_COD SaleType_CWD SaleType_Con SaleType_ConLD SaleType_ConLI SaleType_ConLw SaleType_New SaleType_Oth SaleType_WD SaleCondition_Abnorml SaleCondition_AdjLand SaleCondition_Alloca SaleCondition_Family SaleCondition_Normal SaleCondition_Partial dimension
0 7 2 208500 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 272.251
2 7 2 223500 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 361.222
4 8 3 250000 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 818.289
6 8 2 307000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 279.646
10 5 1 129500 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -417.353
13 7 3 279500 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 139.467
18 5 2 159000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -296.043
19 5 1 139000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -151.972
20 8 3 325300 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 994.599
23 5 2 129900 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -349.23
25 8 3 256300 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 254.814
27 8 3 306000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 324.612
31 5 1 149350 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -265.137
32 8 2 179900 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -204.043
34 9 2 277500 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 130.437
35 8 3 309000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1025.93
36 5 2 145000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -287.536
38 5 1 109000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -436.764
40 6 2 160000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -128.553
45 9 2 319900 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 320.08
47 8 3 249700 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 292.278
49 5 1 127000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -498.919
54 5 2 130000 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -59.5168
...
1451 8 3 287090 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 220.587
1453 5 0 84500 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -420.477
1454 7 2 185000 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -238.406
1455 6 2 175000 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 188.564

Train-Test-Split

Selanjutnya adalah membagi dataset menjadi data latih (train) dan data uji (test). Proses pembagian dataset menggunakan library sklearn yaitu train-test-split. Proporsi pembagian adalah 80:20. Dilakukan juga pemisahkan fitur dengan target (label) yaitu SalePrice. Hasil pembagian dataset menghasilkan sampel untuk train dataset sebesar 480 dan sampel untuk test dataset sebesar 121 dari total keseluruhan dataset yaitu sebesar 601 buah sampel.

Standarisasi

Algoritma machine learning memiliki performa lebih baik dan konvergen lebih cepat ketika dimodelkan pada data dengan skala relatif sama atau mendekati distribusi normal. Proses scaling dan standarisasi membantu untuk membuat fitur data menjadi bentuk yang lebih mudah diolah oleh algoritma.

Standardisasi adalah teknik transformasi yang paling umum digunakan dalam tahap persiapan pemodelan. Untuk fitur numerik tidak akan melakukan transformasi dengan one-hot-encoding seperti pada fitur kategori, tetapi akan menggunakan teknik StandarScaler dari library Scikitlearn. StandardScaler melakukan proses standarisasi fitur dengan mengurangkan mean (nilai rata-rata) kemudian membaginya dengan standar deviasi untuk menggeser distribusi. StandardScaler menghasilkan distribusi dengan standar deviasi sama dengan 1 dan mean sama dengan 0. Sekitar 68% dari nilai akan berada di antara -1 dan 1.

Untuk menghindari kebocoran informasi pada data uji, hanya akan diterapkan fitur standarisasi pada data latih. Kemudian, setelah itu pada tahap evaluasi akan dilakukan standarisasi pada data uji. Hasil dari proses standarisasi fitur numerik bisa dilihat pada Tabel 7.

Tabel 7. Fitur numerik setelah dilakukan proses standarisasi

OverallQual GarageCars dimension
83 -0.985648 0.26343 -0.869308
1200 -1.77417 -1.18998 -1.43807
1410 0.591389 0.26343 0.994863
1280 0.591389 0.26343 0.338825
283 1.37991 1.71683 0.316431

Modeling

Pada tahap ini, akan dikembangkan model machine learning dengan tiga algoritma. Kemudian, dilakukan evaluasi performa masing-masing algoritma dan menentukan algoritma mana yang memberikan hasil prediksi terbaik. Ketiga algoritma yang akan digunakan pada proyek kali ini antara lain:

  • K-Nearest Neighbor
  • Random Forest
  • Boosting Algorithm

Untuk proses mencari nilai parameter terbaik atau hyperparameter tunning, digunakan metode GridSearch dari Library SkLearn. GridSearch akan menentukan hyperparameter terbaik berdasarkan best score untuk nanti digunakan pada proses pelatihan model machine learning. Dengan menggunakan GridSearch akan menghemat dalam proses analisis dan pencarian parameter untuk di-tune dalam model machine learning.

K-Nearest Neighbor

KNN adalah algoritma yang relatif sederhana dibandingkan dengan algoritma lain. Algoritma KNN menggunakan ‘kesamaan fitur’ untuk memprediksi nilai dari setiap data yang baru. Dengan kata lain, setiap data baru diberi nilai berdasarkan seberapa mirip titik tersebut dalam set pelatihan. KNN bekerja dengan membandingkan jarak satu sampel ke sampel pelatihan lain dengan memilih sejumlah k tetangga terdekat (dengan k adalah sebuah angka positif), itulah mengapa algoritma ini dinamakan K-nearest neighbor (sejumlah k tetangga terdekat). KNN bisa digunakan untuk kasus klasifikasi dan regresi. Walaupun begitu KNN memiliki kelebihan dan kekurangan sebagai berikut:

Kelebihan KNN adalah:

  • Sederhana dan Mudah Dipahami: Konsep KNN relatif mudah untuk dipahami dan diimplementasikan. Ini adalah salah satu algoritma pembelajaran mesin yang paling sederhana.
  • Cocok untuk Klasifikasi Non-Linier: KNN bisa sangat efektif untuk masalah klasifikasi yang tidak memiliki batas keputusan linier yang jelas. Algoritma ini mampu menangani relasi non-linier antara fitur.
  • Cocok untuk Dataset dengan Banyak Fitur: KNN dapat berfungsi dengan baik bahkan pada dataset dengan banyak fitur, asalkan jumlah tetangga (k) dipilih dengan benar.

Kelemahan KNN adalah:

  • Sensitif terhadap Pemilihan Jumlah Tetangga (k): KNN sangat sensitif terhadap nilai k yang dipilih. Jika k terlalu kecil, model akan menjadi sensitif terhadap noise dan outlier. Jika k terlalu besar, model dapat kehilangan kemampuan untuk memahami struktur lokal dari data.
  • Membutuhkan Memori Lebih Banyak: Algoritma KNN memerlukan penyimpanan seluruh dataset latih di memori. Untuk dataset besar, ini dapat menghabiskan banyak memori.
  • Komputasi yang Tinggi pada Pengujian: Untuk memprediksi label atau nilai untuk setiap sampel baru, algoritma KNN harus menghitung jarak dari sampel baru ke semua sampel dalam set pelatihan, yang dapat memakan waktu jika dataset besar.
  • Tidak Cocok untuk Data Berkasatria Tinggi (High-Dimensional Data): Ketika jumlah fitur sangat besar, ruang berkasatria menjadi sangat penuh dan mengukur jarak antara tetangga mungkin kehilangan makna.

Proses pembuatan model menggunakan algoritma KNN dimulai dengan mencari kombinasi terbaik dari hyperparameter terbaik menggunakan GridSearch. Pada tahap ini dataset yang dilatih hanya data training, sedangkan data testing digunakan nantinya untuk tahap evaluasi yang akan dibahas pada bagian evaluasi model. Proses pembuatan model menggunakan library scikit-learn bernama KNeighborsRegressor dimana method ini menggunakan paramater bernama n_neighbors yang merepresentasikan jumlah nilai k tetangga serta digunakan juga metrik Mean Squared Error (MSE) sebagai metrik evaluasi model. Berdasarkan hasil pencarian parameter terbaik menggunakan GridSearch, di dapat nilai paramater terbaik untuk n_neighbors adalah 10 (k = 10) dengan nilai best score (KNN GridSearch score) sebesar -601473767.6230625. Nilai parameter inilah yang digunakan pada model KNN.

Random Forest

Random forest merupakan salah satu model machine learning yang termasuk ke dalam kategori ensemble (group) learning. Random forest merupakan model prediksi yang terdiri dari beberapa model dan bekerja secara bersama-sama. Ide dibalik model ensemble adalah sekelompok model yang bekerja bersama menyelesaikan masalah. Sehingga, tingkat keberhasilan akan lebih tinggi dibanding model yang bekerja sendirian. Pada model ensemble, setiap model harus membuat prediksi secara independen. Kemudian, prediksi dari setiap model ensemble ini digabungkan untuk membuat prediksi akhir. Disebut random forest karena algoritma ini disusun dari banyak algoritma pohon (decision tree) yang pembagian data dan fiturnya dipilih secara acak.

Kelebihan Random Forest:

  • Akurasi Tinggi: Random Forest adalah salah satu algoritma yang memiliki akurasi tinggi dalam masalah klasifikasi dan regresi. Karena menggabungkan banyak pohon keputusan, cenderung mengurangi overfitting.
  • Tidak Sensitif terhadap Outlier dan Data Missing: Random Forest bisa menangani data yang tidak seimbang dan fitur yang hilang (missing values) tanpa memerlukan pre-processing yang ekstensif.
  • Bisa Mengatasi Data Berkasatria Tinggi (High-Dimensional Data): Algoritma ini bekerja dengan baik pada data yang memiliki banyak fitur.
  • Mampu Menangani Variabel Numerik dan Kategorikal: Random Forest dapat menangani baik variabel numerik maupun kategorikal tanpa memerlukan transformasi tambahan.

Kekurangan Random Forest:

  • Kesulitan dalam Interpretasi Model: Random Forest adalah model ensemble kompleks, yang bisa sulit untuk diinterpretasi dan menjelaskan mengapa keputusan spesifik dibuat.
  • Membutuhkan Memori Lebih Banyak: Karena Random Forest menggabungkan beberapa pohon keputusan, ia memerlukan lebih banyak memori daripada model tunggal.
  • Kurang Cepat dalam Proses Prediksi: Proses prediksi dengan Random Forest mungkin lebih lambat daripada model tunggal seperti pohon keputusan karena harus menggabungkan hasil dari beberapa pohon.

Sedikit mirip dengan membuat model KNN, Proses pembuatan model menggunakan algoritma Random Forest dimulai dengan mengimpor RandomForestRegressor dari library scikit-learn dan mengimport mean_squared_error sebagai metrik untuk mengevaluasi performa model. Kemudian dibuat juga variabel bernama RF dan memanggil RandomForestRegressor dengan beberapa nilai parameter. Berikut adalah parameter-parameter yang digunakan:

  • n_estimator: jumlah trees (pohon) di forest.
  • max_depth: kedalaman atau panjang pohon dan merupakan ukuran seberapa banyak pohon dapat membelah (splitting) untuk membagi setiap node ke dalam jumlah pengamatan yang diinginkan.
  • random_state: digunakan untuk mengontrol random number generator yang digunakan. Pada proyek kali ini digunakan random state sebesar 55.
  • n_jobs: jumlah job (pekerjaan) yang digunakan secara paralel dan merupakan komponen untuk mengontrol thread atau proses yang berjalan secara paralel. Pada proses pembuatan model kali ini ditetapkan nilai n_jobs=-1, artinya semua proses berjalan secara paralel.

Proses Pencarian nilai parameter (hyperparameter tunning) dilakukan dengan metode GridSearch. Berdasarkan hasil pencarian kombinasi nilai parameter dengan GridSearch didapat hasil nilai max_depth adalah 32 dan n_estimators adalah 60 sebagai nilai best parameters. Sedangkan didapat nilai RF GridSearch score sebesar -440290781.7763111, ini menunjukkan skor evaluasi terbaik yang didapat dari GridSearch untuk model yang dibuat. Kombinasi nilai parameter tersebut yang akan digunakan ke dalam model Random Forest pada proyek ini.

Boosting Algorithm

Boosting Algorithm adalah metode pembelajaran mesin ensemble yang berusaha meningkatkan kinerja model dengan menggabungkan sejumlah kecil model lemah (biasanya pohon keputusan dangkal atau pengklasifikasi lemah lainnya) menjadi model yang kuat. Secara umum, algoritma boosting bekerja dengan cara memberikan bobot yang berbeda pada setiap sampel dalam dataset sehingga model berfokus pada sampel yang sulit diprediksi oleh model sebelumnya.

Ada beberapa jenis algoritma boosting yang populer, tapi pada proyek ini yang digunakan adalah AdaBoost (Adaptive Boosting). AdaBoost menggunakan model lemah dan menyesuaikan bobot pada setiap sampel, memberikan lebih banyak fokus pada sampel yang salah diklasifikasikan sebelumnya.

Kelebihan algoritma boosting:

  • Akurasi Tinggi: Boosting sering menghasilkan model yang memiliki akurasi yang sangat tinggi, karena mampu mengurangi bias dan varians.
  • Mampu Menangani Data yang Tidak Seimbang: Boosting dapat menangani masalah klasifikasi dengan dataset yang tidak seimbang dengan baik, karena memberi bobot lebih pada sampel dari kelas yang kurang umum.
  • Tidak Sensitif terhadap Data Outlier: Boosting memiliki kekebalan terhadap outlier, karena fokus pada sampel yang sulit diprediksi oleh model sebelumnya.
  • Mampu Menangani Variabel Kategorikal dan Numerik: Banyak implementasi boosting dapat menangani baik variabel kategorikal maupun numerik tanpa memerlukan pre-processing tambahan.

Kelemahan algoritma boosting:

  • Memerlukan Waktu Komputasi yang Lebih Lama: Training boosting algorithms mungkin memerlukan lebih banyak waktu dan sumber daya komputasi dibandingkan dengan beberapa algoritma pembelajaran mesin lainnya.
  • Overfitting Jika Tidak Dikontrol: Ada kemungkinan overfitting jika parameter tidak diatur dengan benar atau jika terlalu banyak pohon digunakan dalam ensemble.
  • Rentan terhadap Noise: Boosting bisa sangat sensitif terhadap noise dalam data latih.

Proses pembuatan model dengan algoritma AdaBoost dimulai dengan mengimpor AdaBoostRegressor dari library scikit-learn serta mengimpor mean_squared_error sebagai metrik evaluasi model. Terdapat beberapa parameter yang digunakan pada method AdaBoostRegressor pada proyek ini yaitu:

  • learning_rate: bobot yang diterapkan pada setiap regressor di masing-masing proses iterasi boosting.
  • random_state: digunakan untuk mengontrol random number generator yang digunakan. Nilai random_state ditetapkan pada model ini adalah 55.

Digunakan juga metode GridSearch untuk melakukan pencarian kombinasi nilai parameter terbaik yang akan digunakan pada model. Berdasarkan hasil GridSearch didapat nilai learning_rate adalah 0.1 sebagai nilai best parameters. Sedangkan nilai AdaBoost GridSearch score didapat sebesar -634782552.3145735 yang menunjukkan score evaluasi terbaik yang didapat dari GridSearch. Nilai parameter inilah yang akan digunakan ke dalam model AdaBoost.

Evaluation

Metrik yang digunakan pada proyek ini untuk melakukan evaluasi model adalah MSE atau Mean Squared Error yang menghitung jumlah selisih kuadrat rata-rata nilai sebenarnya dengan nilai prediksi. Jika prediksi mendekati nilai sebenarnya, performanya baik. Sedangkan jika tidak, performanya buruk. Secara teknis, selisih antara nilai sebenarnya dan nilai prediksi disebut eror. Maka, semua metrik mengukur seberapa kecil nilai eror tersebut. MSE didefinisikan dalam persamaan berikut:

$$MSE = \frac{1}{N} \Sigma_{i=1}^N({y_i}- y_pred_i)^2$$

Keterangan:

  • N = jumlah dataset
  • yi = nilai sebenarnya
  • y_pred = nilai prediksi

Sebelum menghitung nilai MSE, dilakukan proses scaling fitur numerik pada data uji terlebih dahulu. Karena sebelumnya, hanya dilakukan proses scaling pada data latih saja. Setelah model dilatih menggunakan 3 jenis algoritma yaitu KNN, Random Forest dan AdaBoost, selanjutnya harus dilakukan proses scaling fitur pada data uji, hal ini bertujuan agar skala antara data latih dan data uji sama dan bisa melakukan proses evaluasi.

Evaluasi ketiga model menggunakan metrik MSE. Saat menghitung nilai MSE pada data train dan test dilakukan pembagian dengan bilangan 1e6, hal ini bertujuan agar nilai mse tidak terlalu besar skalanya. Nilai MSE dari ketiga model dapat dilihat pada Tabel 8.

Tabel 8. Nilai MSE dari ketiga model yaitu KNN, Random Forest (RF) dan Boosting Algorithm

train test
KNN 451.357 797.892
RF 61.4616 448.85
Boosting 459.925 592.737

Berdasarkan Tabel 8, terlihat bahwa, model Random Forest (RF) memberikan skor nilai error paling kecil dibandingkan algoritma lain seperti KNN dan AdaBoost. Jadi, Model Random Forest yang akan dipilih sebagai model terbaik untuk memprediksi harga jual rumah. Untuk mengujinya, dilakukan prediksi menggunakan beberapa harga dari data test dan didapatkan output atau hasil seperti Tabel 9.

Tabel 9. Hasil Prediksi dari ketiga model (KNN, Random Forest, dan Boosting Algorithm) pada data uji

y_true prediksi_KNN prediksi_RF prediksi_Boosting
787 233000 222500 234852 241872

Terlihat bahwa prediksi Random Forest (RF) memberikan hasil yang paling mendekati dengan y_true (data test). Dimana nilai y_true adalah 233000 sedangkan nilai prediksi dari Random Forest adalah 234851.5.

About

Predictive Analysis using a Comparison of Three Machine Learning Algorithms (KNN, Random Forest, and Boosting Algorithm) to Predict Home Selling Prices.


Languages

Language:Jupyter Notebook 100.0%