Encoding fitur dalam Neptune Neptune Neptune Neptune Neptune - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Encoding fitur dalam Neptune Neptune Neptune Neptune Neptune

Nilai properti datang dalam berbagai format dan tipe data. Untuk mencapai kinerja yang baik dalam pembelajaran mesin, penting untuk mengubah nilai-nilai tersebut menjadi pengkodean numerik yang dikenal sebagai fitur.

Neptune MLmelakukan ekstraksi dan pengkodean fitur sebagai bagian dari langkah-langkah ekspor data dan pemrosesan data, menggunakan teknik pengkodean fitur yang dijelaskan di sini.

catatan

Jika Anda berencana untuk menerapkan pengkodean fitur Anda sendiri dalam implementasi model kustom, Anda dapat menonaktifkan pengkodean fitur otomatis dalam tahap preprocessing data dengan memilihnone sebagai jenis pengkodean fitur. Tidak ada pengkodean fitur kemudian terjadi pada properti node atau edge, dan sebagai gantinya nilai properti mentah diurai dan disimpan dalam kamus. Pemrosesan awal data masih membuat grafik DGL dari kumpulan data yang diekspor, tetapi grafik DGL yang dibuat tidak memiliki fitur yang telah diproses sebelumnya untuk pelatihan.

Anda harus menggunakan opsi ini hanya jika Anda berencana untuk melakukan pengkodean fitur khusus Anda sebagai bagian dari pelatihan model khusus. Lihat Model khusus di Neptunus ML untuk detail.

Fitur kategoris dalam Neptune Neptune Neptune Neptune Neptune MLs

Properti yang dapat mengambil satu atau lebih nilai berbeda dari daftar tetap nilai yang mungkin adalah fitur kategoris. Di Neptune ML, fitur kategoris dikodekan menggunakan pengkodean satu-panas. Contoh berikut menunjukkan bagaimana nama properti makanan yang berbeda adalah satu-panas dikodekan menurut kategorinya:

Food Veg. Meat Fruit Encoding --------- ---- ---- ----- -------- Apple 0 0 1 001 Chicken 0 1 0 010 Broccoli 1 0 0 100
catatan

Jumlah maksimum dalam setiap fitur dalam setiap fitur kategoris adalah 100. Jika properti memiliki lebih dari 100 kategori nilai, hanya 99 yang paling umum ditempatkan dalam kategori yang berbeda, dan sisanya ditempatkan dalam kategori khusus bernamaOTHER.

Fitur numerik dalam Neptune Neptune Neptune Neptune MLs

Properti apa pun yang nilainya adalah bilangan real dapat dikodekan sebagai fitur numerik di Neptune ML. Fitur numerik dikodekan menggunakan angka floating-point.

Anda dapat menentukan metode data-normalisasi untuk digunakan saat mengkodekan fitur numerik, seperti ini:"norm": "normalization technique". Teknik normalisasi berikut didukung:

  • “none” - Jangan menormalkan nilai numerik selama pengkodean.

  • “min-max” — Menormalkan setiap nilai dengan mengurangi nilai minimum darinya dan kemudian membaginya dengan perbedaan antara nilai maksimum dan minimum.

  • “standard” — Menormalkan setiap nilai dengan membaginya dengan jumlah semua nilai.

Fitur ember-numerik di Neptune

Daripada mewakili properti numerik menggunakan angka mentah, Anda dapat memadatkan nilai numerik ke dalam kategori. Misalnya, Anda dapat membagi usia orang ke dalam kategori seperti anak-anak (0-20), dewasa muda (20-40), orang paruh baya (40-60) dan orang tua (dari 60 pada). Menggunakan ember numerik ini, Anda akan mengubah properti numerik menjadi semacam fitur kategoris.

Di Neptune, Anda dapat menyebabkan properti numerik dikodekan sebagai fitur bucket-numerik, Anda harus menyediakan dua hal:

  • Sebuah rentang numerik dalam bentuk, "range": [a, b] , dib manaa dan bilangan bulat.

  • Sebuah hitungan ember, dalam bentuk "bucket_cnt": c , di manac adalah jumlah ember, juga bilangan bulat.

Neptune MLkemudian menghitung ukuran setiap bucket sebagai ( b - a ) / c , dan mengkodekan setiap nilai numerik sebagai jumlah bucket apa pun yang jatuh ke dalamnya. Nilai apa pun yang kurang daria dianggap termasuk dalam bucket pertama, dan nilai apa pun yang lebih besar dari yangb dianggap termasuk dalam bucket terakhir.

Anda juga dapat, opsional, membuat nilai numerik jatuh ke dalam lebih dari satu ember, dengan menentukan ukuran slide-window, seperti ini: "slide_window_size": s , di manas adalah angka. Neptune MLkemudian mengubah setiap nilaiv numerik properti menjadi rentang dari v - s/2 melalui v + s/2 , dan memberikan nilaiv untuk setiap bucket yang mencakup rentang.

Akhirnya, Anda juga dapat secara opsional menyediakan cara mengisi nilai yang hilang untuk fitur numerik dan fitur ember-numerik. Anda melakukan ini dengan menggunakan "imputer": "imputation technique ", di mana teknik imputasi adalah salah satu"mean","median", atau"most-frequent". Jika Anda tidak menentukan imputer, nilai yang hilang dapat menyebabkan pemrosesan berhenti.

Encoding fitur teks di Neptune Neptune Neptune MLs

Untuk teks bentuk bebas, Neptune MLdapat menggunakan beberapa model yang berbeda untuk mengubah urutan token dalam string nilai properti menjadi vektor nilai nyata ukuran tetap:

  • text_fasttext- Menggunakan pengkodean fastText. Ini adalah pengkodean yang direkomendasikan untuk fitur yang menggunakan satu dan hanya satu dari lima bahasa yang didukung fastText.

  • text_sbert- Menggunakan model pengkodean Kalimat BERT (SBERT). Ini adalah pengkodean yang disarankan untuk teks yangtext_fasttext tidak mendukung.

  • text_word2vec- Menggunakan algoritma Word2Vec yang awalnya diterbitkan oleh Google untuk menyandikan teks. Word2Vec hanya mendukung bahasa Inggris.

  • text_tfidf- Menggunakan istilah frekuensi — frekuensi dokumen terbalik (TF-IDF) vectorizer untuk encoding teks. TF-IDF encoding mendukung fitur statistik bahwa pengkodean lainnya tidak.

Pengkodean fastText nilai properti teks di Neptune ML

Neptune MLdapat menggunakan model fastText untuk mengkonversi nilai properti teks ke dalam vektor real-nilai ukuran tetap. Ini adalah metode pengkodean yang direkomendasikan untuk nilai properti teks dalam salah satu dari lima bahasa yang didukung fastText:

  • en(Bahasa Inggris)

  • zh(Mandarin)

  • hi(Hindi)

  • es(Spanyol)

  • fr(Perancis)

Perhatikan bahwa fastText tidak dapat menangani kalimat yang berisi kata-kata dalam lebih dari satu bahasa.

text_fasttextMetode opsional dapat mengambilmax_length bidang yang menentukan jumlah maksimum token dalam nilai properti teks yang akan dikodekan, setelah string dipotong. Hal ini dapat meningkatkan kinerja ketika nilai properti teks mengandung string panjang, karena jika tidakmax_length ditentukan, fastText mengkodekan semua token terlepas dari panjang string.

Contoh ini menetapkan bahwa judul film Perancis dikodekan menggunakan fastText:

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_fasttext"], "language": "fr", "max_length": 1024 } ] }

Kalimat BERT (SBERT) pengkodean fitur teks di Neptune

Neptune MLdapat mengkonversi urutan token dalam nilai properti string menjadi vektor real-nilai ukuran tetap menggunakan Sentence BERT (SBERT) model. Neptune mendukung dua metode SBERT:text_sbert128, yang merupakan default jika Anda hanya menentukantext_sbert, dantext_sbert512. Perbedaan antara keduanya adalah panjang maksimum string nilai properti teks yang dikodekan. text_sbert128Pengkodean memotong string teks setelah mengkodekan 128 token, sementaratext_sbert512 memotong string teks setelah mengkodekan 512 token. Akibatnya,text_sbert512 membutuhkan lebih banyak waktu pemrosesan daripadatext_sbert128. Kedua metode lebih lambat daritext_fasttext.

Pengkodean SBERT bersifat multibahasa, jadi tidak perlu menentukan bahasa untuk teks nilai properti yang Anda enkodekan. SBERT mendukung banyak bahasa, dan dapat menyandikan kalimat yang berisi lebih dari satu bahasa. Jika Anda mengkodekan nilai properti yang berisi teks dalam bahasa atau bahasa yang tidak didukung fastText, SBERT adalah metode pengkodean yang direkomendasikan.

Contoh berikut menetapkan bahwa judul film dikodekan sebagai SBERT hingga maksimum 128 token:

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_sbert128"] } ] }

Pengkodean Word2Vec fitur teks di Neptune ML

Neptune MLdapat menyandikan nilai properti string sebagai fitur Word2Vec (algoritma Word2Vec awalnya diterbitkan oleh Google). text_word2vecMetode ini mengkodekan token dalam string sebagai vektor padat menggunakan salah satu model terlatih SpACy. Ini hanya mendukung bahasa Inggris menggunakan model en_core_web_lg).

Contoh berikut menetapkan bahwa judul film dikodekan menggunakan Word2Vec:

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_word2vec"], "language": "en_core_web_lg" } ] }

Perhatikan bahwa bidang bahasa bersifat opsional, karenaen_core_web_lg model bahasa Inggris adalah satu-satunya yang didukung Neptune.

Pengkodean fitur teks TF-IDF di Neptune ML

Neptune MLdapat menyandikan nilai properti teks sebagaitext_tfidf fitur. Pengkodean ini mengubah urutan kata dalam teks menjadi vektor numerik menggunakan vektor frekuensi - frekuensi dokumen terbalik (TF-IDF), diikuti oleh operasi pengurangan dimensi.

TF-IDF (frekuensi istilah - frekuensi dokumen terbalik) adalah nilai numerik yang dimaksudkan untuk mengukur seberapa penting sebuah kata dalam kumpulan dokumen. Hal ini dihitung dengan membagi berapa kali kata muncul dalam nilai properti yang diberikan dengan jumlah total nilai properti seperti yang muncul di.

Misalnya, jika kata “kiss” muncul dua kali dalam judul film tertentu (katakanlah, “kiss kiss bang bang”), dan “kiss” muncul dalam judul 4 film secara keseluruhan, maka nilai TF-IDF dari “kiss” dalam judul “kiss kiss bang bang” akan menjadi 2 / 4 .

Vektor yang awalnya dibuat memiliki dimensi d, di mana d adalah jumlah istilah unik di semua nilai properti dari jenis itu. Operasi reduksi dimensi menggunakan proyeksi jarang acak untuk mengurangi angka itu hingga maksimum 100. Kosakata grafik kemudian dihasilkan dengan menggabungkan semuatext_tfidf fitur di dalamnya.

Anda dapat mengontrol vectorizer TF-IDF dengan beberapa cara:

  • max_features- Dengan menggunakanmax_features parameter, Anda dapat membatasi jumlah istilah dalamtext_tfidf fitur dengan yang paling umum. Misalnya, jika Anda menyetelmax_features ke 100, hanya 100 istilah teratas yang paling umum digunakan yang disertakan. Nilai default untukmax_features jika Anda tidak secara eksplisit mengaturnya adalah 5.000.

  • min_df- Menggunakanmin_df parameter, Anda dapat membatasi jumlah istilah dalamtext_tfidf fitur untuk yang memiliki setidaknya frekuensi dokumen tertentu. Misalnya, jika Anda menyetelmin_df ke 5, hanya istilah yang muncul dalam setidaknya 5 nilai properti berbeda yang digunakan. Nilai default untukmin_df jika Anda tidak secara eksplisit mengaturnya adalah 2.

  • ngram_range-ngram_range Parameter menentukan kombinasi kata apa yang diperlakukan sebagai istilah. Misalnya, jika Anda mengaturngram_range ke[2, 4], 6 istilah berikut akan ditemukan dalam judul “kiss kiss bang bang”:

    • Istilah 2 kata: “ciuman ciuman”, “cium bang”, dan “bang bang”.

    • Istilah 3 kata: “kiss kiss bang” dan “kiss bang bang”.

    • Istilah 4 kata: “ciuman ciuman bang bang”.

    Pengaturan default untukngram_range adalah[1, 1].

Fitur Datetime di Neptune MLs

Neptune MLdapat mengubah bagian dari nilaidatetime properti menjadi fitur kategoris dengan mengkodekannya sebagai array satu-panas. Gunakandatetime_parts parameter untuk menentukan satu atau beberapa bagian berikut untuk dikodekan:["year", "month", "weekday", "hour"]. Jika Anda tidak mengaturdatetime_parts, secara default keempat bagian dikodekan.

Misalnya, jika rentang nilai datetime mencakup tahun 2010 hingga 2012, empat bagian entri datetime2011-04-22 01:16:34 adalah sebagai berikut:

  • tahun[0, 1, 0].

    Karena hanya ada 3 tahun dalam rentang (2010, 2011, dan 2012), array satu-panas memiliki tiga entri, satu untuk setiap tahun.

  • bulan[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0].

    Di sini, array satu-panas memiliki entri untuk setiap bulan dalam setahun.

  • hari kerja[0, 0, 0, 0, 1, 0, 0].

    Standar ISO 8601 menyatakan bahwa Senin adalah hari pertama dalam seminggu, dan sejak 22 April 2011 adalah hari Jumat, susunan hari kerja yang sesuai panas di posisi kelima.

  • jam[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

    Jam 1 AM diatur dalam array satu-panas 24 anggota.

Hari dalam sebulan, menit, dan detik tidak dikodekan secara kategoris.

Jikadatetime rentang total yang dimaksud hanya mencakup tanggal dalam satu tahun, tidak adayear array yang dikodekan.

Anda dapat menentukan strategi imputasi untuk mengisidatetime nilai yang hilang, menggunakanimputer parameter dan salah satu strategi yang tersedia untuk fitur numerik.

Encoding fitur otomatis di Neptune MLs

Alih-alih secara manual menentukan metode pengkodean fitur yang akan digunakan untuk properti dalam grafik Anda, Anda dapat menetapkanauto sebagai metode pengkodean fitur. Neptune MLkemudian mencoba untuk menyimpulkan encoding fitur terbaik untuk setiap properti berdasarkan tipe data yang mendasarinya.

Berikut adalah beberapa heuristik yang digunakan Neptune MLdalam memilih pengkodean fitur yang sesuai:

  • Jika properti hanya memiliki nilai numerik dan dapat dilemparkan ke tipe data numerik, maka Neptune MLumumnya mengkodekannya sebagai nilai numerik. Namun, jika jumlah nilai unik untuk properti kurang dari 10% dari jumlah total nilai dan kardinalitas nilai unik tersebut kurang dari 100, maka Neptune MLmenggunakan pengkodean kategoris.

  • Jika nilai properti dapat dilemparkan kedatetime tipe, maka Neptune MLmengkodekannya sebagaidatetime fitur.

  • Jika nilai properti dapat dipaksa untuk boolean (1/0 atau True/False), maka Neptune MLmenggunakan kategori encoding.

  • Jika properti adalah string dengan lebih dari 10% nilainya unik, dan jumlah rata-rata token per nilai lebih besar dari atau sama dengan 3, Neptune MLmenyimpulkan jenis properti menjadi teks dan secara otomatis mendeteksi bahasa yang digunakan. Jika bahasa yang terdeteksi adalah salah satu bahasa yang didukung oleh fastText, yaitu Inggris, Mandarin, Hindi, Spanyol dan Prancis, maka Neptune MLmenggunakantext_fasttext untuk menyandikan teks. Othewise, Neptune ML menggunakan text_sbert.

  • Jika properti adalah string yang tidak diklasifikasikan sebagai fitur teks maka Neptune MLmenganggapnya sebagai fitur kategoris dan menggunakan pengkodean kategori.

  • Jika setiap node memiliki nilai uniknya sendiri untuk properti yang disimpulkan sebagai fitur kategori, Neptune MLakan menjatuhkan properti dari grafik pelatihan karena mungkin ID yang tidak informatif untuk belajar.

  • Jika properti diketahui berisi pemisah Neptune yang valid seperti titik koma (“;”), maka Neptune MLhanya dapat memperlakukan properti sebagaiMultiNumerical atauMultiCategorical.

    • Neptune MLpertama kali mencoba menyandikan nilai sebagai fitur numerik. Jika ini berhasil, Neptune MLmenggunakan pengkodean numerik untuk membuat fitur vektor numerik.

    • Jika tidak, Neptune MLmengkodekan nilai sebagai multi-kategoris.

  • Jika Neptune MLtidak dapat menyimpulkan tipe data dari nilai properti, Neptune MLDrops properti dari grafik pelatihan.