Jawaban:
Misalkan Anda memiliki fitur kategorikal dalam dataset Anda (misalnya warna). Dan sampel Anda dapat berupa merah, kuning atau biru. Untuk meneruskan argumen ini ke algoritme ML, Anda harus terlebih dahulu menyandikannya sehingga alih-alih string Anda memiliki angka.
Cara termudah untuk melakukan hal seperti itu adalah membuat pemetaan di mana:
merah -> 1
kuning -> 2
biru -> 3
dan ganti setiap string dengan nilai yang dipetakan.
Namun ini mungkin menciptakan efek samping yang tidak diinginkan dalam model ML kami seperti ketika berhadapan dengan angka mungkin berpikir bahwa biru> kuning (karena 3> 2) atau yang merah + kuning = biru (karena 1 + 2 = 3). Model tidak memiliki cara untuk mengetahui bahwa data ini adalah kategori dan kemudian dipetakan sebagai bilangan bulat.
Solusi untuk masalah ini adalah pengodean satu-panas di mana kami membuat N fitur baru , di mana N adalah jumlah nilai unik dalam fitur asli. Dalam contoh kita N akan sama dengan 3, karena kita memiliki 3 warna unik (merah, kuning dan biru).
Masing-masing fitur ini bersifat biner dan akan sesuai dengan salah satu nilai unik ini. Dalam contoh kami, fitur pertama adalah fitur biner yang memberi tahu kami apakah sampel itu merah atau tidak, yang kedua adalah hal yang sama untuk kuning dan yang ketiga untuk biru.
Contoh transformasi seperti itu diilustrasikan di bawah ini:
Perhatikan, bahwa karena pendekatan ini meningkatkan dimensi dataset, jika kami memiliki fitur yang mengambil banyak nilai unik, kami mungkin ingin menggunakan pengkodean yang lebih jarang (seperti yang saya presentasikan di atas).
depth: Skalar yang mendefinisikan kedalaman satu dimensi panas.
indeks: Tensor indeks.
Ini contoh yang diberikan dalam dokumentasi tensorflow.
1. Hanya Menentukan indeks dan kedalaman (Nilai Default on_value adalah 1 dan off_value adalah 0)
indices = [0, 1, 2]
depth = 3
tf.one_hot(indices, depth) # output: [3 x 3]
# [[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]]
indeks = [0, 2, -1, 1] kedalaman = 3 tf.one_hot (indeks, kedalaman, on_value = 5.0, off_value = 0.0, sumbu = -1) Keluaran ##: [4 x 3] # [[5.0, 0.0, 0.0], # one_hot (0) # [0.0, 0.0, 5.0], # one_hot (2) # [0,0, 0,0, 0,0], # one_hot (-1) # [0,0, 5.0, 0.0]] # one_hot (1)
Anda juga dapat melihat kode di GitHub