Saya memiliki bidang 'jam' sebagai atribut saya, tetapi dibutuhkan nilai siklik. Bagaimana saya bisa mengubah fitur untuk menjaga informasi seperti '23' dan '0' jam dekat tidak jauh.
Satu cara yang bisa saya pikirkan adalah melakukan transformasi: min(h, 23-h)
Input: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
Output: [0 1 2 3 4 5 6 7 8 9 10 11 11 10 9 8 7 6 5 4 3 2 1]
Apakah ada standar untuk menangani atribut seperti itu?
Update: Saya akan menggunakan superviseed learning, untuk melatih classifier hutan acak!
feature-extraction
feature-scaling
featurization
Mangat Rai Modi
sumber
sumber
Jawaban:
Cara paling logis untuk mengubah jam adalah menjadi dua variabel yang berayun bolak-balik. Bayangkan posisi ujung jarum jam dari 24 jam. The
x
ayunan posisi bolak-balik dari wastafel dengany
posisi. Untuk jam 24-jam Anda dapat melakukannya denganx=sin(2pi*hour/24)
,y=cos(2pi*hour/24)
.Anda perlu kedua variabel atau gerakan yang tepat melalui waktu hilang. Hal ini disebabkan oleh fakta bahwa turunan dari dosa atau cos berubah dalam waktu ketika
(x,y)
posisi bervariasi dengan lancar saat bergerak di sekitar satuan lingkaran.Akhirnya, pertimbangkan apakah perlu menambahkan fitur ketiga untuk melacak waktu linier, yang dapat dibangun jam saya (atau menit atau detik) dari awal catatan pertama atau cap waktu Unix atau sesuatu yang serupa. Ketiga fitur ini kemudian memberikan proksi untuk progresif siklus dan linear waktu, mis. Anda dapat menarik fenomena siklus seperti siklus tidur dalam pergerakan manusia dan juga pertumbuhan linear seperti populasi vs waktu.
Semoga ini membantu!
Menambahkan beberapa kode contoh yang relevan yang saya hasilkan untuk jawaban lain:
Contoh jika dilakukan:
Sekarang mari kita coba:
Anda hanya bisa melihat bahwa ada beberapa setelah tengah malam yang termasuk dalam kluster hijau sebelum tengah malam. Sekarang mari kita kurangi jumlah cluster dan tunjukkan bahwa sebelum dan sesudah tengah malam dapat dihubungkan dalam satu cluster secara lebih detail:
Lihat bagaimana gugus biru berisi waktu dari sebelum dan sesudah tengah malam yang dikelompokkan bersama di dalam kluster yang sama ...
QED!
sumber
Pertanyaannya sangat menarik dan saya tidak ingat membaca tentang jawaban yang menarik. Karena itu saya berani memberi Anda satu solusi yang mungkin bahkan jika itu terlihat cukup gila.
Biasanya seseorang menghindari memiliki informasi yang sama dalam banyak fitur, karena banyak algoritma tidak dapat mengatasinya. Tapi ini bukan kasus hutan acak. Membandingkan regresi linier (dan semua model berdasarkan ide yang sama), hutan acak menguji semua fitur, dengan mempertimbangkan setiap fitur satu per satu. Dengan cara ini dimungkinkan untuk membuat kode informasi yang sama dalam berbagai cara tanpa mempengaruhi kinerja pembelajaran, hanya ruang dan waktu berjalan.
Itu menghabiskan beberapa ruang dan waktu, tetapi saya akan mencobanya untuk melihat bagaimana itu bekerja.
sumber
Idealnya Anda tidak perlu transformasi apa pun. Perbedaan waktu relatif antara dua titik dapat digunakan sebagai fungsi jarak. Di mana klasifikasi dapat didasarkan pada ini.
di java:
sumber