Ukuran Kesamaan yang Diawasi

Daripada membandingkan data fitur yang digabungkan secara manual, Anda dapat mengurangi data fitur dengan representasi yang disebut embeddings, lalu membandingkan embeddings. Embeddings dihasilkan dengan melatih jaringan neural dalam yang diawasi (DNN) yang diawasi pada data fitur itu sendiri. Penyematan memetakan data fitur ke vektor dalam ruang penyematan. Biasanya, ruang penyematan memiliki lebih sedikit dimensi dibandingkan data fitur dengan cara yang menangkap beberapa struktur laten dari set data fitur. Vektor sematan untuk contoh serupa, seperti video YouTube yang ditonton oleh pengguna yang sama, akan berakhir di ruang sematan. Kita akan melihat cara pengukuran kesamaan menggunakan "kedekatan" ini untuk mengukur kemiripan dengan pasangan contoh.

Ingat, kita sedang membahas pembelajaran yang diawasi hanya untuk membuat langkah kemiripan. Ukuran kesamaan, baik manual maupun yang diawasi, kemudian digunakan oleh algoritme untuk melakukan pengelompokan yang tidak diawasi.

Perbandingan Tindakan Manual dan yang Diawasi

Tabel ini menjelaskan kapan harus menggunakan pengukuran kesamaan yang diawasi atau manual, bergantung pada persyaratan Anda.

PersyaratanManualDiawasi
Hilangkan informasi yang berlebihan dalam fitur terkait. Tidak, Anda perlu menyelidiki korelasi antar-fitur secara terpisah. Ya, DNN menghilangkan informasi yang tidak perlu.
Berikan insight tentang kesamaan yang dihitung. Ya Tidak, penyematan tidak dapat diuraikan.
Cocok untuk set data kecil dengan sedikit fitur. Ya, mendesain pengukuran manual dengan beberapa fitur adalah hal yang mudah. Tidak, set data kecil tidak memberikan data pelatihan yang memadai untuk DNN.
Cocok untuk set data besar dengan banyak fitur. Tidak, menghapus informasi redundan secara manual dari beberapa fitur lalu menggabungkannya sangat sulit. Ya, DNN secara otomatis menghilangkan informasi yang tidak perlu dan menggabungkan fitur.

Proses untuk Mengukur Kesamaan yang Diawasi

Gambar berikut menunjukkan cara membuat pengukuran kesamaan yang diawasi:

Input data fitur. Pilih DNN: autoencoder atau prediktor.
      Mengekstrak penyematan. Pilih pengukuran: Jarak produk, kosinus, atau Euclidean.
Gambar 1: Langkah-langkah untuk membuat ukuran kesamaan yang diawasi.

Anda sudah mempelajari langkah pertama. Halaman ini membahas langkah berikutnya, dan halaman berikutnya akan membahas langkah-langkah selanjutnya.

Pilih DNN Berdasarkan Label Pelatihan

Kurangi data fitur Anda ke penyematan dengan melatih DNN yang menggunakan data fitur yang sama baik sebagai input maupun sebagai label. Misalnya, untuk data internal, DNN akan menggunakan fitur—seperti harga, ukuran, dan kode pos—untuk memprediksi fitur tersebut. Untuk menggunakan data fitur guna memprediksi data fitur yang sama, DNN akan dipaksa untuk mengurangi data fitur input ke sematan. Anda menggunakan penyematan ini untuk menghitung kemiripan.

DNN yang mempelajari penyematan data input dengan memprediksi data input itu sendiri disebut autoencoder. Karena lapisan tersembunyi autoencoder lebih kecil dari lapisan input dan output, autoencoder dipaksa untuk mempelajari representasi data fitur input yang dikompresi. Setelah DNN dilatih, Anda akan mengekstrak penyematan dari lapisan tersembunyi terakhir untuk menghitung kesamaan.

Perbandingan antara autoencoder dan DNN prediktor.
       Input awal dan lapisan tersembunyi tetap sama, tetapi output difilter oleh fitur utama dalam model prediktor.
Gambar 2: Perbandingan antara autoencoder dan prediktor.

Autoencoder adalah pilihan paling sederhana untuk menghasilkan penyematan. Namun, autoencoder bukanlah pilihan yang optimal jika fitur tertentu dapat lebih penting dibandingkan yang lain dalam menentukan kemiripan. Misalnya, dalam data internal, anggap "harga" lebih penting daripada "kode pos". Dalam kasus semacam itu, gunakan hanya fitur penting sebagai label pelatihan DNN. Karena DNN ini memprediksi fitur input tertentu, bukan memprediksi semua fitur input, DNN ini disebut DNN prediktor. Gunakan panduan berikut untuk memilih fitur sebagai label:

  • Memilih fitur numerik daripada fitur kategoris sebagai label karena kerugian lebih mudah dihitung dan ditafsirkan untuk fitur numerik.

  • Jangan gunakan fitur kategoris dengan kardinalitas \(\lesssim\) 100 sebagai label. Jika demikian, DNN tidak akan dipaksa untuk mengurangi data input Anda ke penyematan karena DNN dapat dengan mudah memprediksi label kategori kardinalitas rendah.

  • Hapus fitur yang Anda gunakan sebagai label dari input ke DNN; jika tidak, DNN akan memprediksi output dengan sempurna.

Bergantung pada pilihan label, DNN yang dihasilkan adalah DNN autoencoder atau DNN prediktor.

Fungsi Kehilangan untuk DNN

Untuk melatih DNN, Anda perlu membuat fungsi kerugian dengan mengikuti langkah-langkah berikut:

  1. Hitung kerugian untuk setiap output DNN. Untuk output yang:
    • bersifat numerik, gunakan error rata-rata persegi (MSE).
    • Kategoris setara, gunakan kerugian log. Perhatikan bahwa Anda tidak perlu menerapkan kehilangan log sendiri karena Anda dapat menggunakan fungsi library untuk menghitungnya.
    • Kategoris multivalen, gunakan kerugian softmax cross entropy. Perhatikan bahwa Anda tidak perlu menerapkan sendiri kerugian entropi silang softmax karena Anda dapat menggunakan fungsi library untuk menghitungnya.
  2. Hitung total kerugian dengan menjumlahkan kerugian untuk setiap output.

Saat menjumlahkan kerugian, pastikan setiap fitur memberikan kontribusi yang proporsional pada kerugian. Misalnya, jika Anda mengonversi data warna menjadi nilai RGB, Anda akan memiliki tiga output. Namun, menjumlahkan kerugian untuk tiga output berarti kehilangan untuk warna dibobot tiga kali lebih banyak daripada fitur lainnya. Sebagai gantinya, kalikan setiap output dengan 1/3.

Menggunakan DNN di Sistem Online

Sistem machine learning online memiliki aliran data input baru yang berkelanjutan. Anda harus melatih DNN pada data baru. Namun, jika Anda melatih ulang DNN dari awal, maka penyematan Anda akan berbeda karena DNN diinisialisasi dengan bobot acak. Sebagai gantinya, selalu awali DNN dengan bobot yang ada, lalu perbarui DNN dengan data baru.