Mengkodekan Musiman untuk Meningkatkan Model Penilaian Properti Kami

Nov 29 2022
Pendahuluan Di Homebound, tim Machine Learning & Pricing bertanggung jawab untuk mengembangkan dan memelihara Model Penilaian Otomatis (AVM) untuk memprediksi nilai properti secara akurat. Dijuluki di sini sebagai Homebound Valuation Model (HVM), karakteristik seperti ukuran rumah, tampilan properti, kedekatan dengan jalan utama, dan masih banyak lagi digunakan untuk memperkirakan harga properti.
Properti Homebound di Santa Rosa!

pengantar

Di Homebound, tim Machine Learning & Pricing bertanggung jawab untuk mengembangkan dan memelihara Automated Valuation Model (AVM) untuk memprediksi nilai properti secara akurat. Dijuluki di sini sebagai Homebound Valuation Model (HVM), karakteristik seperti ukuran rumah, tampilan properti, kedekatan dengan jalan utama, dan masih banyak lagi digunakan untuk memperkirakan harga properti. Hal ini memungkinkan tim underwriting kami dengan cepat dan akurat menilai properti bagi pelanggan yang ingin menjual rumah mereka melalui Portal Pembelian Properti Homebound .

Tim kami terus berupaya meningkatkan HVM dengan merekayasa fitur baru, memodifikasi arsitektur model, dan meningkatkan kualitas data. Salah satu fitur yang baru-baru ini kami masukkan ke dalam model kami adalah musiman. Waktu tahun di mana Anda memutuskan untuk membeli atau menjual rumah Anda dapat berdampak pada seberapa besar nilai properti Anda. Bergantung pada lokasi rumah, harga cenderung lebih tinggi selama musim semi dan musim panas dan lebih rendah selama musim dingin. Sementara model awal kami secara naif menangkap beberapa aspek musiman melalui fitur seperti jumlah waktu sejak rumah terakhir dijual, kami ingin secara eksplisit menyandikan aspek musiman ke dalam model kami.

Mengkode Musiman

Secara tradisional, harga daftar rumah bergantung pada rumah yang baru dijual, sebanding di dekatnya, atau perusahaan. Sementara penjual yang mendaftarkan rumah mereka mungkin tidak berencana untuk menjual rumah mereka, penilai atau agen real estat memasukkan musim ke dalam harga daftar rumah mereka. Untuk model pembelajaran mesin, musiman ini harus disertakan secara eksplisit dalam model, dan dapat dilakukan dengan berbagai cara.

Bulanan

Mengkodekan musiman selama bulan terjadinya suatu peristiwa, baik secara ordinal maupun kategoris, mungkin merupakan cara yang paling umum dan paling sederhana untuk mengekstrak fitur musiman. Di Homebound, ini adalah bulan di mana sebuah properti terdaftar untuk dijual. Meskipun mudah diimplementasikan dan diinterpretasikan, metode ini sering kekurangan apa yang kita ingin model pahami tentang musiman. Misalnya, jika data ini dikodekan satu kali, setiap bulan dianggap independen, padahal kenyataannya kita tahu ada hubungan dalam waktu. Jika data ini ordinal, kami memperhitungkan kesamaan antara bulan seperti Januari dan Februari, sementara menjauhkan bulan yang berbeda seperti Januari dan Juni, tetapi kemudian mengalami masalah Januari dan Desember sebagai bulan yang paling tidak mirip.

Gambar 1: Representasi linier dari penyandian musiman sebagai fitur bulanan (kategorikal dan ordinal).

Bucket

Cara lain untuk merepresentasikan musiman adalah dengan mengelompokkan, atau mengelompokkan waktu yang mungkin relevan dengan hasil yang diprediksi. Misalnya, kami mengelompokkan tanggal daftar secara manual menjadi dua cara yang berpotensi relevan, triwulanan dan musiman. Meskipun hal ini mengurangi dimensi dan secara manual mengkodekan aspek musiman yang dirasakan, masalah yang sama yang dibahas di atas tetap ada dengan representasi kategorikal dan ordinal dari grup yang dikelompokkan ini.

Gambar 2: Representasi linear dari pengkodean musiman sebagai grup berkelompok (kuartalan dan musiman).

Berhubung dgn putaran

Meskipun representasi waktu bulanan dan ember membantu dalam menafsirkan dan merepresentasikan musiman sebagai fitur model, mereka kesulitan menangkap sifat siklus waktu dan musim. Cara alternatif untuk menangkap siklus musiman ini adalah dengan mengubah tanggal dalam satu tahun menjadi ruang fitur dua dimensi, sinus dan kosinus. Hal ini dilakukan dengan menormalkan hari numerik dalam setahun ke nilai antara 0 dan 1, mengubah nilai tersebut antara interval sinus dan kosinus 0 dan 2π, dan kemudian memperoleh sinus dan kosinus dari nilai tersebut (pikirkan kembali ke lingkaran satuan dari trigonometri ). Setiap hari dalam setahun kemudian diwakili oleh pasangan nilai sinus dan kosinus unik yang membentuk lingkaran, seperti yang terlihat pada gambar di bawah ini.

Gambar 3: Representasi siklus waktu di mana setiap hari dalam setahun diwakili oleh pasangan nilai sinus dan kosinus yang unik. Titik waktu yang lebih dekat lebih terlihat secara visual (gradasi warna) dan secara numerik serupa.

Satu kelemahan dari metodologi ini adalah kurangnya interpretasi. Memiliki dua fitur yang merepresentasikan waktu membuatnya lebih sulit untuk menguraikan kepentingan fitur dan efek umumnya pada variabel hasil. Selain itu, beberapa model seperti metode berbasis pohon, mungkin mengalami kesulitan dalam membuat pemisahan yang berguna pada dua fitur yang mewakili satu elemen, musiman. Salah satu solusi potensial untuk masalah ini adalah membuat fitur siklik satu dimensi serupa yang ditafsirkan sebagai N hari dari titik waktu tertentu yang dipilih. Ini sama dengan merepresentasikan waktu hanya sebagai representasi kosinus waktu yang dinormalisasi dari atas, di mana setiap hari berjarak N hari dari tanggal 1 Januari hingga N bertemu di bulan Juli. Namun hal ini menyebabkan dua waktu berbeda dalam setahun diwakili oleh nilai yang sama.

Gambar 4: Representasi siklus waktu di mana dua hari dalam setahun diwakili oleh nilai kosinus yang unik. Setiap nilai kosinus mewakili N hari dari tanggal 1 Januari, hingga nilai tersebut menyatu pada bulan Juli. Titik waktu yang lebih dekat lebih terlihat secara visual (gradasi warna) dan secara numerik serupa.

Pada akhirnya, tidak ada cara yang “benar” untuk menyandikan musim. Masing-masing metode ini memiliki pro dan kontra berdasarkan masalah yang dihadapi, persyaratan bisnis, dan model yang dipilih. Oleh karena itu, satu-satunya cara kami dapat mengevaluasi secara adil metode mana yang terbaik untuk HVM adalah melalui eksperimen.

Mengevaluasi Eksperimen

Untuk menentukan cara terbaik merepresentasikan musiman di HVM, kami menjalankan eksperimen untuk menentukan fitur yang meminimalkan kesalahan, sebagaimana didefinisikan oleh Mean Average Precision Error (MAPE), dan pada akhirnya memberikan peningkatan terbesar dalam akurasi model. Di Homebound, kami menggunakan mlflow untuk melacak eksperimen, menyimpan detail model, dan mengevaluasi metrik utama di berbagai wilayah. Tabel di bawah berisi informasi tentang eksperimen musiman yang dijalankan.

Tabel 1: Hasil peningkatan model untuk setiap representasi fitur musiman yang dibahas

Mengingat pengkodean fitur siklik umumnya digunakan dalam model berbasis non-pohon, seringkali dalam model pembelajaran mendalam, kami terkejut melihatnya memberi kami peningkatan terbesar dalam kinerja model. HVM adalah ansambel metode berbasis pohon, dan oleh karena itu kami tidak yakin tentang kemampuannya untuk mengambil harga rumah musiman dari ruang fitur dua dimensi.

Jika Anda tidak yakin tentang cara menyandikan musiman untuk proyek Anda, cobalah metode ini, Anda mungkin akan terkejut dengan apa yang berhasil!

Langkah Selanjutnya & Pekerjaan Masa Depan

Seperti disebutkan sebelumnya, salah satu tujuan utama tim kami adalah membantu tim underwriting Homebound dalam membuat penawaran yang cepat, akurat, dan adil kepada calon pelanggan Homebound. Memberikan lebih banyak penjelasan ke dalam prediksi HVM adalah salah satu cara kami dapat meningkatkan kemitraan antara tim kami. Meskipun menggabungkan fitur siklik dua dimensi sangat bagus untuk meningkatkan kinerja model, hal itu agak menurunkan kemampuan interpretasi model.

Salah satu cara tim Machine Learning mendapatkan wawasan tentang prediksi individu dan efek musiman pada prediksi adalah melalui nilai Shapley . Di masa mendatang, memberikan tingkat interpretasi yang sama terhadap prediksi HVM untuk tim underwriting juga dapat membantu kami mengulangi dan meningkatkan pemahaman kami tentang musiman harga rumah dengan lebih baik di pasar regional yang berbeda dan menyempurnakan model kami.

Implementasi Python

Bagian ini akan berfokus terutama pada penerapan berbagai fitur musiman yang dibahas di atas, dengan Python.

Kami mulai dengan mengimpor paket yang diperlukan untuk membuat boneka DataFrame Pandas yang berisi tanggal selama tiga tahun terakhir (2019–2021) untuk mengekstraksi fitur musiman.

# import packages
import pandas as pd
import numpy as np

# create dummy dataframe of dates over the past 3 years (2019-2021)
df = pd.DataFrame()
df['date'] = pd.Series(pd.date_range('2019', periods=1096, freq='D'))

# extract month number for ordinal representation of months
df['month_ordinal'] = df['date'].dt.month

# extract month name for categorical representation of months
df['month_categorical'] = df['date'].dt.month_name()

# extract quarters for bucketed representation of time
# note: the last two characters are removed to keep the quarter without year
df['quarter'] = df['date'].dt.to_period('Q').astype('str').str[-2:]

# create list of desired month number to group mapping 
seasons = ['Winter', 'Winter', 'Spring', 'Spring', 'Spring', 'Summer',
          'Summer', 'Summer', 'Fall', 'Fall', 'Fall', 'Winter']

# map month number (1-12) to desired group (list created above)
season_month_map = dict(zip(range(1,len(seasons)+1), seasons))

# map extracted month number (month_ordinal) to desired group
df['season'] = df['month_ordinal'].apply(lambda x: season_month_map[x])

# extract day of year from date
df['day_of_year'] = df['date'].dt.dayofyear

# create cyclic sine and cosine normalized representation of time using extracted day of year
# note: divide by 366 to normalize & account for leap years (max number of days in a year)
# note: using just cos_date feature is equivalent to the one-dimnesional feature described
df['sin_date'] = np.sin(2 * np.pi * df['day_of_year']/366)
df['cos_date'] = np.cos(2 * np.pi * df['day_of_year']/366)

Tabel 2: Contoh deretan fitur musiman yang diekstraksi dari hari pertama setiap bulan pada tahun 2021.

Homebound sedang merekrut! Tertarik bekerja di Homebound? Lihat halaman karir kami !

Untuk mempelajari lebih lanjut tentang Homebound, kunjungi situs web Homebound atau buka Blog Teknologi Homebound untuk melihat lebih banyak cerita dari tim kami.

Referensi

[1] Araj, Victoria. “Waktu Terbaik Tahun Ini untuk Membeli Rumah.” Hipotek Roket , 1 November 2022,https://www.rocketmortgage.com/learn/best-time-of-year-to-buy-a-house.

[2] Bescond, Pierre-Louis. “Encoding Fitur Siklus, It's about Time!”, Menuju Ilmu Data , 8 Juni 2020,https://towardsdatascience.com/cyclical-features-encoding-its-about-time-ce23581845ca.

[3] Hopper. "Ai dalam Perjalanan, Bagian 2: Mewakili Fitur Siklik dan Geografis." Sedang — Kehidupan di Hopper , 27 April 2018,https:///life-at-hopper/ai-in-travel-part-2-representing-cyclic-and-geographic-features-4ada33dd0b22.