Mungkin pertanyaan yang sangat sederhana. Saya memiliki daftar sekitar seribu lokasi geografis potensial (lat lon), dan dari mereka saya perlu memilih 200 lokasi yang "paling tersebar". Saya pikir itu akan menjadi 200 poin dengan total jarak rata-rata tertinggi. Pikirkan toko di kota.
Apakah ada metode yang pasti untuk melakukannya? Mungkin dalam paket-R?
Terima kasih kepada semua orang yang menjadikan ini tempat terbaik untuk mempelajarinya!
/ Chris
r
spatial-statistics
business
Chris
sumber
sumber
Jawaban:
Pertanyaan sederhana, solusi sulit.
Metode terbaik yang saya tahu menggunakan simulated annealing (Saya telah menggunakan ini untuk memilih beberapa lusin poin dari puluhan ribu dan berskala sangat baik untuk memilih 200 poin: penskalaan adalah sublinear), tetapi ini membutuhkan pengkodean yang hati-hati dan eksperimen yang cukup, seperti serta sejumlah besar perhitungan. Anda harus mulai dengan melihat metode yang lebih sederhana dan lebih cepat terlebih dahulu untuk melihat apakah metode tersebut memadai.
Salah satu caranya adalah pertama mengelompokkan lokasi toko . Dalam setiap cluster pilih toko yang paling dekat dengan pusat cluster.
Metode pengelompokan yang sangat cepat adalah K-means . Berikut ini adalah
R
solusi yang menggunakannya.Argumen untuk
scatter
adalah daftar lokasi toko (sebagai n oleh 2 matriks) dan jumlah toko untuk dipilih (misalnya, 200). Ini mengembalikan array lokasi.Sebagai contoh aplikasinya, mari kita hasilkan n = 1000 toko yang terletak secara acak dan lihat seperti apa solusinya:
Perhitungan ini memakan waktu 0,03 detik:
Anda dapat melihat itu tidak bagus (tapi juga tidak terlalu buruk). Untuk melakukan jauh lebih baik akan memerlukan metode stokastik, seperti anil simulasi, atau algoritma yang cenderung skala secara eksponensial dengan ukuran masalah. (Saya telah mengimplementasikan algoritma semacam itu: butuh 12 detik untuk memilih 10 poin yang paling banyak spasi dari 20. Menerapkannya pada 200 cluster adalah hal yang mustahil.)
Alternatif yang baik untuk K-means adalah algoritma pengelompokan hierarkis; cobalah metode "Ward" terlebih dahulu dan pertimbangkan untuk bereksperimen dengan tautan lain. Ini akan membutuhkan lebih banyak perhitungan, tetapi kami masih berbicara tentang hanya beberapa detik untuk 1000 toko dan 200 cluster.
Ada metode lain. Misalnya, Anda bisa menutupi wilayah dengan kisi heksagonal biasa dan, untuk sel yang berisi satu atau lebih toko, pilih toko terdekat pusatnya. Mainkan sedikit dengan cellsize sampai sekitar 200 toko telah dipilih. Ini akan menghasilkan ruang toko yang sangat teratur, yang mungkin atau mungkin tidak Anda inginkan. (Jika ini benar-benar lokasi toko, ini mungkin akan menjadi solusi yang buruk, karena itu akan memiliki kecenderungan untuk memilih toko di daerah yang paling padat penduduknya. Dalam aplikasi lain ini mungkin solusi yang jauh lebih baik.)
sumber