HomeScape
DCD-19 Project Proposal
Problem Research
Background Problem
Berbicara mengenai kebutuhan seorang manusia maka secara umum dapat dikelompokkan kedalam 3 kategori, yaitu kebutuhan primer, kebuthan sekunder dan kebutuhan tersier. Terkhusus kebutuhan primer, maka setiap orang harus mampu untuk memenuhinya, karna jika tidak, maka kelangsungan hidupnya dapat terganggu. Salah satu hal yang yang termasuk ke dalam kebutuhan primer adalah kebutuhan akan tempat tinggal. Tidak ada satupun manusia yang tidak membutuhkan tempat tinggal, karena disana manusia melakukan berbagai aktivitas untuk menunjang kelangsungan hidupnya. Handayani (2019) menyebutkan bahwa definisi dari tempat tinggal adalah lingkungan di mana seseorang atau sekelompok orang orang bermukim atau bertempat tinggal yang meliputi keluarga, rumah tempat tinggal, yang meliputi pondok pesantren, cita-cita hidup, kawan-kawan bermain, masyarakat, pengalaman batin, problem yang dihadapi dan sebagainya. Dari definisi ini dapat diambil kesimpulan bahwa tempat tinggal adalah tempat di mana manusia menetap untuk bisa melakukan beberapa kegiatan tertentu yang hanya bisa dilakukan di dalamnya untuk kelangsungan hidupnya.
Tempat tinggal sendiri memiliki banyak jenis, diantaranya adalah rumah, apartemen, kos-kosan, rumah susun dan lain sebagainya. Bagi orang Indonesia sendiri, rumah merupakan jenis tempat tinggal yang paling bayak diminati dan dicari sebagai tujuan akhir dalam memiliki tempat tinggal dibandingkan denagn jenis lainnya. Sayangnya, saat ini tidak sedikit masyarakat Indonesia yang kesulitan dalam memiliki rumah. Dikutip dari laman finance.detik.com yang di akses pada tanggal 24 Mei 2023, terdapat beberapa alasan mengapa masyarakat akan semakin sulit dalam mendapatkan hunian kedepannya:
Harga perumahan terus mengalami kenaikan dari tahun ketahun, faktor-faktor yang menyebabkannya adalah harga lahan dan bahan baku yang terus mengalami kenaikan. Inflasi yang terus mengalami peningkatan juga mempengaruhi harga rumah.
Gaya hidup anak muda yang cenderung konsumtif, sehingga perencanaan untuk membeli tumah menjadi tidak tepat sasaran.
Mendukung pernyataan diatas, survey ynag dilakukan Bank Indonesia menunjukkan perbandingan trend kenaikan harga properti berupa rumah dengan berbagai tipe sebagaimana ditunjukkan oleh gambar dibawah:
Dari gambar diatas, dapat diambil kesimpulan bahwa terhitung sejak kuartal ke-empat tahun 2019 sampai dengan kuartal ke-empat tahun 2022, secara keseluruhan indeks harga properti untuk seluruh tipe rumah (kecil, sedang dan besar) selalu mengalami kenaikan. Tidak menutup kemungkinan, trend kenaikan ini akan terus mengalami kenaikan seiring berjalannya waktu.
Lebih spesifik, berdasarkan hasil survey yang dilakukan oleh rumah.com di Jakarta dari kuartal ketiga tahun 2021 sampai dengan kuartal ketiga tahun 2022 menunjukkan bahwa indeks harga properti berupa rumah selalu mengalami kenaikan yang signifikan, sedangkan indeks harga properti berupa apartemen cenderung stabil.
Bahkan, dari hasil survey yang sama namun dengan lingkup yang lebih kecil, yaitu di Jakarta Pusat, menunjukkan perbandingan terbalik antara indeks harga dan minat, dimana harga terus mengalami kenaikan namun permintaan terlihat fluktuatif. Berbeda dengan apartemen, dimana harga cenderung stabil namun permintaan terus mengalami kenaikan yang signifikan.
Berdasarkan permasalah dan data-data yang ada diatas, tidak menutup kemungkinan bahwa kedepannya trend permintaan akan unit apartemen di Jakarta akan melebihi permintaan akan unit hunian berupa Rumah. Harapannya melalui project ini, bisa dijadikan sebagai contoh sebuah website yang mampu membantu setiap orang dalam memilih apartemen sesuai dengan keinginannya.
Business Impact
Dengan adanya platform yang memudahkan pengguna untuk menemukan apartemen yang sesuai dengan kebutuhan dan preferensi calon pembeli, project ini akan memberikan manffat yang sangat besar bagi para calon pembeli dan agen properti berupa apartemen. Hal ini akan meningkatkan efisiensi dalam proses penjualan apartemen dan memperluas jangkauan pasar bagi para pengembang apartemen di Jakarta. Dengan demikian, project ini memiliki potensi untuk menghasilkan pertumbuhan bisnis yang tinggi.
Benefit for Target User
Target user dari project ini terdiri dari 2 kelompok, yaitu calon pembeli dan para pengembang propoerti.
Untuk calon pembeli:
Pembeli adalah setiap orang yang ingin memiliki apartemen, dari sisi calon pembeli terdapat beberapa keuntungan yang bisa diperoleh:
- Memudahkan dalam memilih apartemen yang sesuai berdasarkan karakteristik apartemen yang tersedia di lapangan.
- Menyesuaikan dan menyiapkan budget dengan tepat sebelum melakukan pembelian.
- Mendapat banyak pilihan hunian dengan harga yang kompetitif.
Untuk pengembang properti apartemen:
Pengembang properti adalah entitas atau perusahaan yang terlibat dalam mengembangkan, membangun dan menjual properi apartemen. Dari sisi pengembang, terdapat beberapa keuntungan yang bisa diperoleh:
- Memudahkan dalam pemetaan jenis-jenis apartemen beserta harganya.
- Meningkatkan persaingan bisnis sehinga inovasi dan harga bisa lebih bersaing.
- Mendapatkan market yang lebih luas, karna pengembang akan mengetahui trend jenis atau tipe properti yang paling banyak diminati pada suatu daerah tertentu.
Project Output
Tujuan atau output dari project ini adalah untuk membantu orang-orang yang ingin menemukan hunian berupa apartemen, yang mana melalui website ini para calon pembeli akan dipermudah untuk menemukannya sesuai dengan kriteria yang diinginkan. Juga melalui website ini secara tidak langsung akan membantu para pemilik apartemen untuk bisa memasarkan produk mereka lebih luas juga masyarakat menjadi tahu bahwa terdapat alternatif hunian lain dari rumah yang lebih terjangkau.
Data Collection
Pada projet ini akan digunakan data apartemen yang dijual di Jakarta yang didapatkan melalui proses webscraping pada situs lamudi.co.id tertanggal 24 Mei 2023 sehingga data merupakan data terupdate dan dapat dipertanggung jawabkan. Dataset ini memiliki total 3001 rows dengan informasi kolom sebagai berikut:
- Name: Nama apartemen yang dijual
- Address: Alamat dari apartemen yang dijual
- Bedroom: Jumlah total kamar tidur dimiliki
- Bathroom: Jumlah total kamar mandi yang dimiliki
- Total_area: Total luas bangunan dalam meter persegi
- Price: Harga total apartemen.
link webste: lamudi.co.id
Data yang digunakan sudah cukup untuk menjawab permasalahan yang di angkat karna sudah terdapat beberapa kolom sebagai prediktor dan kolom sisanya sebagai target. Juga terdapat kolom address yang nantinya akan digunakan untuk mendapatkan nilai latitude dan longitude.
Data Preparation
Target and Predictor:
Dalam project ini akan digunakan baik supervised machine learning maupun unsupervised machine learning. Untuk supervised machine learning akan digunakan ensembel learning, dimana akan digabungkan hasil dari 3 machine learning untuk meningkatkan keakuratan hasil yang didapatkan, ketiga machine learning tersebut adalah regresi, random forest dan decision tree. Maka dari itu taget dari Ensembel Machine Learning ini adalah kolom price.
Untuk unsupervised machine learning nantinya akan digunakan untuk melakukan clustering apartemen yang memiliki kemiripan satu dengan yang lainnya, di mana nantinya akan digunakan sebagai rekomendasi pilihan apartemen lainnya untuk calon pembeli. Unsupervised machine learning tidak memiliki kolom target.
Read Data
datatable(apartment, options = list(scrollX = T))Data Coertion
Pada tahap ini akan diperiksa apakah tipe data dari setiap kolom sudah memilki tipe data yang sesuai atau belum.
glimpse(apartment)#> Rows: 3,000
#> Columns: 6
#> $ Name <chr> "Di jual Apartemen Studio 28 m2, dekat pintu TOL, di Metro …
#> $ Address <chr> "Kebon Jeruk, Jakarta Barat", "Ciracas, Jakarta Timur", "Ci…
#> $ Bedroom <int> 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 2, 2, 2, 2, 2, 1, 2, 1,…
#> $ Bathroom <chr> "1", "1", "1", "1", "1", "1", "2", "1", "2", "1", "3", "1",…
#> $ Total_area <chr> "29 m²", "36 m²", "61 m²", "24 m²", "60 m²", "40 m²", "86 m…
#> $ Price <chr> " 567,000,000", " 891,000,000", " 1,478,000,000", " 625,000…
Selain kolom Nmae, kolom-kolom lainnya belum memiliki tipe data yang sesuai. Juga beberapa kolom membutuhkan treatment tambahan agar bisa dilakukan data coertion.
Mengambil hanya informasi nama provinsi
apartment$Address <- gsub(".*, (Jakarta Timur|Jakarta Selatan|Jakarta Pusat|Jakarta Utara|Jakarta Barat)", "\\1", apartment$Address)Pada proses webscraping, terdapat beberapa apartemen yang tidak memiliki informasi kamar mandi, sehingga program mengambil data total area untuk di isi di kolom Bathroom, untuk itu akan dihapus semua baris yang memiliki karakter selain angka pada kolom bathroom.
apartment <- apartment[!grepl("[A-Za-z]", apartment$Bathroom), ]Membuang semua karakter m²
apartment$Total_area <- gsub(" m²", "", apartment$Total_area)apartment$Price <- gsub(",", "", apartment$Price)Kolom bedroom dan bathroom akan diubah menjadi numerik karna nilai pada kolom ini merepresentasikan level, bukan sebuah nilai yang berkelompok dan redundan.
apartment <- apartment %>%
mutate(Bedroom = as.numeric(Bedroom),
Bathroom = as.numeric(Bathroom),
Total_area = as.numeric(Total_area),
Price = as.numeric(Price))Checking for Missing Values
colSums(is.na(apartment))#> Name Address Bedroom Bathroom Total_area Price
#> 0 0 0 0 0 0
Tidak terdeteksi missing value pada data yang digunakan
Handling Outlier and Abnormal Value
summary(apartment)#> Name Address Bedroom Bathroom
#> Length:2984 Length:2984 Min. : 1.000 Min. : 1.000
#> Class :character Class :character 1st Qu.: 1.000 1st Qu.: 1.000
#> Mode :character Mode :character Median : 2.000 Median : 1.000
#> Mean : 2.148 Mean : 1.576
#> 3rd Qu.: 3.000 3rd Qu.: 2.000
#> Max. :45.000 Max. :45.000
#> Total_area Price
#> Min. : 1.0 Min. : 11111
#> 1st Qu.: 36.0 1st Qu.: 550000000
#> Median : 60.0 Median : 1200000000
#> Mean : 200.8 Mean : 2417363791
#> 3rd Qu.: 105.0 3rd Qu.: 2700000000
#> Max. :123456.0 Max. :63000000000
table(apartment$Bedroom)#>
#> 1 2 3 4 5 6 7 11 12 33 36 45
#> 750 1397 630 176 22 3 1 1 1 1 1 1
table(apartment$Bathroom)#>
#> 1 2 3 4 5 6 7 45
#> 1748 885 279 57 11 2 1 1
Dari hasil summary diatas, terdapat nilai-nilai yang terlampau besar dan jauh dari mean atau median datanya. Seperti contoh, pada kolom Bedroom terdapat apartemen yang memiliki sampai dengan 45 kamar tidur, yang mana nilai ini sangat besar dan tidak mungkin, juga pada kolom bathroom dimana terdapat apartemen yang memiliki 45 kamar mandi, hal yang sama terjadi pada kolom total_area dimana terdapat apartemen denga luas area sebesar 123456 m².
Terdapat beberapa jenis apartemen yang tersedia di pasaran, namun secara garis besar tipe paling kecil dari sebuah apartemen adalah micro apartmen dan tipe paling besar adalah penthouse. Dikutip dari situs moving.com micro apartment umumnya memiliki rata-rata luas bangunan sekitar 18 - 37 meter persegi. Sementara itu, dikutip dari situs 2D3D Floor Pan rata-rata luas sebuah penthouse mencapai 139m2. Oleh karena itu saya akan memakai nilai area antara 18 sampai 139 m2.
apartment_clean <- apartment %>%
filter(Total_area >= 18,
Total_area <= 139)Dikutip dari halaman website phillyaptrentals.com yang diakses pada tanggal 25 Mei 2025, disebutkan bahwa umumnya sebuah apartemen memiliki maksimm 3 kamar tidur, sangat jarang ada apartemen yang memiliki jumlah kamar tidur mencapai 4 atau lebih, yang mana jumlah 4 atau lebih umumnya dimiliki oleh rumah atau townhouse. Maka threshold jumlah kamar tidur yang digunakan adalah 1 sampai 3.
apartment_clean <- apartment_clean %>%
filter(Bedroom >= 1,
Bedroom <= 3)Untuk jumlah kamar mandi, diasumsikan setiap kamar tidur akan memiliki 1 kamar mandi dan tidak ada apartemen yang memiliki jumlah kamar mandi melebihi jumlah kamar tidur.
apartment_clean <- apartment_clean %>%
filter(Bathroom >= 1,
Bathroom <= 3,
Bathroom <= Bedroom)Data Exploration
Scaling
summary(apartment_clean)#> Name Address Bedroom Bathroom
#> Length:2406 Length:2406 Min. :1.000 Min. :1.000
#> Class :character Class :character 1st Qu.:1.000 1st Qu.:1.000
#> Mode :character Mode :character Median :2.000 Median :1.000
#> Mean :1.887 Mean :1.324
#> 3rd Qu.:2.000 3rd Qu.:2.000
#> Max. :3.000 Max. :3.000
#> Total_area Price
#> Min. : 18.00 Min. : 11111
#> 1st Qu.: 35.00 1st Qu.: 491685000
#> Median : 47.00 Median : 860000000
#> Mean : 58.53 Mean : 1355070727
#> 3rd Qu.: 79.00 3rd Qu.: 1800000000
#> Max. :139.00 Max. :37500000000
Dari hasil summary diatas dapat dikatakan bahwa skala antar kolom masih sangat jauh, yang mana akan berakibat buruk pada hasil k-mean clustering sehingga perlu dilakukan penyamaan skala.
separate <- data.frame(Name = apartment_clean$Name,
Address = apartment_clean$Address)
apartment_not_clean <- apartment_clean %>%
select(-c(Name, Address))apartment_scale <- scale(apartment_not_clean)summary(apartment_scale)#> Bedroom Bathroom Total_area Price
#> Min. :-1.3377 Min. :-0.6092 Min. :-1.3099 Min. :-0.9254
#> 1st Qu.:-1.3377 1st Qu.:-0.6092 1st Qu.:-0.7604 1st Qu.:-0.5897
#> Median : 0.1705 Median :-0.6092 Median :-0.3726 Median :-0.3381
#> Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
#> 3rd Qu.: 0.1705 3rd Qu.: 1.2699 3rd Qu.: 0.6617 3rd Qu.: 0.3039
#> Max. : 1.6787 Max. : 3.1490 Max. : 2.6008 Max. :24.6853
Skala dari tiap kolom sudah tidak terlalu jauh, sehingga dapat dilakukan K-Means clustering pada data.
apartment_merge <- cbind(apartment_scale, separate) Correlation Between Column
Melakukan pengecekan korelasi antar kolom akan membantu kita untuk deteksi awal adanya multikolineariti. Hal lainnya yang bisa dilihat adalah apabila korelasi antar prediktor dan target cukup kuat maka hasil dari regresi akan lebih baik.
ggcorr(apartment_merge, label = TRUE, label_size = 2.9, hjust = 1, layout.exp = 2)Dari plot diatas dapat dilihat bahwa korelasi tiap prediktor terhadap target cukup kuat dan positif. Hal yang sama juga terjadi antar prediktor total_area dengan bathroom dan bathroom dengan bedroom. Hal ini akan berimbas pada regresi dan decision tree, dimana model yang dihasilkan akan jelek karna terdapat indikasi adanya multikolineariti. Untuk mengatasi hal ini akan digunakan metode PCA sehingga tidak ada korelasi antar prediktor, sedangkan untuk random forest akan tetap menggunakan data awal.
Product Design
Machine Learning Used
- Ensembel Learning
Pada project ini akan digunakan 3 jenis machine learning untuk memprediksi harga dari sebuah apartemen berdasarkan karakteristik yang dipilih sendiri oleh user. Tiga jenis machine learning yang digunakan adalah random forest, regresi dan decision tree. Tujuan penggunaan ensemble machine learning adalah untuk meningkatkan akurasi dari machine learning.
- Unsupervised Machine Learning
K-Means Clustering nantinya akan digunakan untuk memberikan rekomendasi apartemen lainnya yang memiliki kemiripan karakteristik dengan apartemen yang dipilih oleh calon pembeli.
Dashboard Feature
Berikut beberapa fitur yang akan ada di dashboard. Dibawah juga disertakan sketsa dari tampilan R shiny yang di gambar menggunakan aplilkasi CorelDraw.
- Home
Tampilan awal dari dashboard, berisi informasi umum konten dashboard.
- By Region
Melalui halaman ini calon pembeli dapat memilih apartemen yang diinginkan sesuai dengan daerah yang dipilihnya.
- Find Price
Melalui halaman ini, calon pembeli akan dibantu untuk menentukan harga wajar dari sebuah apartemen sesuai dengan kriteria yang ditentukan sendiri menggunakan Ensembled Learning.