Apa satu pengkodean panas di tensorflow?

10

Saat ini saya sedang melakukan kursus di tensorflow di mana mereka menggunakan tf.one_hot (indeks, kedalaman). Sekarang saya tidak mengerti bagaimana indeks ini berubah menjadi urutan biner itu.

Bisakah seseorang tolong jelaskan kepada saya proses yang tepat ???

thanatoz
sumber

Jawaban:

14

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).

Djib2011
sumber
3

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.]]
  1. Menentukan on_value dan off_value
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

Vallie
sumber
Dokumen ini lebih mudah dipahami: tensorflow.org/api_docs/python/tf/one_hot
dturvene