Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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.
Neptunus ML melakukan ekstraksi fitur dan pengkodean sebagai bagian dari langkah-langkah ekspor data dan pemrosesan data, menggunakan teknik pengkodean fitur yang dijelaskan di sini.
catatan
Jika Anda berencana untuk mengimplementasikan pengkodean fitur Anda sendiri dalam implementasi model khusus, Anda dapat menonaktifkan pengkodean fitur otomatis dalam tahap pra-pemrosesan data dengan memilih none
sebagai jenis pengkodean fitur. Tidak ada pengkodean fitur yang terjadi pada properti node atau edge itu, dan sebagai gantinya nilai properti mentah diurai dan disimpan dalam kamus. Preprocessing data masih membuat grafik DGL dari dataset yang diekspor, tetapi grafik DGL yang dibangun tidak memiliki fitur pra-proses untuk pelatihan.
Anda harus menggunakan opsi ini hanya jika Anda berencana untuk melakukan pengkodean fitur kustom Anda sebagai bagian dari pelatihan model khusus. Lihat Model khusus di Neptunus ML untuk detail.
Fitur kategoris di Neptunus ML
Properti yang dapat mengambil satu atau lebih nilai berbeda dari daftar tetap nilai yang mungkin adalah fitur kategoris. Di Neptunus ML, fitur kategoris dikodekan menggunakan pengkodean satu panas.
Food Veg. Meat Fruit Encoding --------- ---- ---- ----- -------- Apple 0 0 1 001 Chicken 0 1 0 010 Broccoli 1 0 0 100
catatan
Jumlah maksimum kategori dalam fitur kategoris apa pun adalah 100. Jika sebuah 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 di Neptunus ML
Properti apa pun yang nilainya bilangan real dapat dikodekan sebagai fitur numerik di Neptunus ML. Fitur numerik dikodekan menggunakan angka floating-point.
Anda dapat menentukan metode normalisasi data yang akan digunakan saat menyandikan fitur numerik, seperti ini: "norm": "
Teknik normalisasi berikut didukung:normalization technique
"
-
“tidak ada” — Jangan menormalkan nilai numerik selama pengkodean.
-
“min-max” — Normalisasi setiap nilai dengan mengurangi nilai minimum darinya dan kemudian membaginya dengan selisih antara nilai maksimum dan minimum.
-
“standar” — Menormalkan setiap nilai dengan membaginya dengan jumlah semua nilai.
Fitur bucket-numerik di Neptunus ML
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). Dengan menggunakan bucket numerik ini, Anda akan mengubah properti numerik menjadi semacam fitur kategoris.
Di Neptunus ML, Anda dapat menyebabkan properti numerik dikodekan sebagai fitur bucket-numerik, Anda harus memberikan dua hal:
Rentang numerik dalam bentuk,
"range": [
, di manaa
,b
]a
danb
merupakan bilangan bulat.Hitungan ember, dalam bentuk
"bucket_cnt":
, dic
c
mana jumlah ember, juga bilangan bulat.
Neptunus ML kemudian menghitung ukuran setiap bucket ( b - a ) / c
sebagai, dan mengkodekan setiap nilai numerik sebagai jumlah bucket apa pun yang masuk ke dalamnya. Nilai apa pun yang kurang dari a
dianggap termasuk dalam ember pertama, dan nilai apa pun yang lebih besar dari b
dianggap termasuk dalam ember terakhir.
Anda juga dapat, secara opsional, membuat nilai numerik jatuh ke lebih dari satu ember, dengan menentukan ukuran jendela geser, seperti ini: "slide_window_size":
, di mana angka. s
s
Neptunus ML kemudian mengubah setiap v
nilai numerik properti menjadi rentang v - s/2
dari v + s/2
hingga, dan memberikan v
nilai ke setiap ember yang dicakup oleh rentang tersebut.
Terakhir, Anda juga dapat secara opsional menyediakan cara mengisi nilai yang hilang untuk fitur numerik dan fitur bucket-numerik. Anda melakukan ini menggunakan
"imputer": "
, di mana teknik imputasi adalah salah satu dariimputation technique
""mean"
,"median"
, atau. "most-frequent"
Jika Anda tidak menentukan imputer, nilai yang hilang dapat menyebabkan pemrosesan terhenti.
Pengkodean fitur teks di Neptunus ML
Untuk teks bentuk bebas, Neptunus ML dapat menggunakan beberapa model berbeda untuk mengonversi urutan token dalam string nilai properti menjadi vektor nilai nyata ukuran tetap:
text_fasttext— Menggunakan pengkodean FastText
. Ini adalah pengkodean yang disarankan untuk fitur yang menggunakan satu dan hanya satu dari lima bahasa yang didukung FastText. text_sbert— Menggunakan model pengkodean Sentence BERT
(SBERT). Ini adalah pengkodean yang disarankan untuk teks yang text_fasttext
tidak mendukung.text_word2vec— Menggunakan algoritma Word2Vec
awalnya diterbitkan oleh Google untuk menyandikan teks. Word2Vec hanya mendukung bahasa Inggris. text_tfidf— Menggunakan istilah frekuensi—inverse document frequency
(TF-IDF) vectorizer untuk pengkodean teks. Pengkodean TF-IDF mendukung fitur statistik yang tidak dilakukan pengkodean lainnya.
FastText encoding nilai properti teks di Neptunus ML
Neptunus ML dapat menggunakan model FastText untuk mengubah nilai properti teks
en
(Bahasa Inggris)zh
(Tionghoa)hi
(Hindi)es
(Spanyol)fr
(Perancis)
Perhatikan bahwa FastText tidak dapat menangani kalimat yang mengandung kata-kata dalam lebih dari satu bahasa.
text_fasttext
Metode ini opsional dapat mengambil max_length
bidang yang menentukan jumlah maksimum token dalam nilai properti teks yang akan dikodekan, setelah itu string terpotong. Ini dapat meningkatkan kinerja ketika nilai properti teks berisi string panjang, karena jika tidak max_length
ditentukan, FastText mengkodekan semua token terlepas dari panjang string.
Contoh ini menentukan bahwa judul film Prancis dikodekan menggunakan FastText:
{
"file_name" : "nodes/movie.csv",
"separator" : ",",
"node" : ["~id", "movie"],
"features" : [
{
"feature": ["title", "title", "text_fasttext"],
"language": "fr",
"max_length": 1024
}
]
}
Sentence BERT (SBERT) encoding fitur teks di Neptunus ML
Neptunus ML dapat mengubah urutan token dalam nilai properti string menjadi vektor nilai nyata ukuran tetap menggunakantext_sbert128
:, yang merupakan default jika Anda hanya menentukan, dan. text_sbert
text_sbert512
Perbedaan antara keduanya adalah panjang maksimum string nilai properti teks yang dikodekan. text_sbert128
Pengkodean memotong string teks setelah menyandikan 128 token, sementara text_sbert512
memotong string teks setelah menyandikan 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 kodekan. SBERT mendukung banyak bahasa, dan dapat menyandikan kalimat yang berisi lebih dari satu bahasa. Jika Anda menyandikan nilai properti yang berisi teks dalam bahasa atau bahasa yang tidak didukung oleh FastText, SBERT adalah metode pengkodean yang disarankan.
Contoh berikut menentukan 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 Neptunus ML
Neptunus ML dapat menyandikan nilai properti string sebagai fitur Word2Vec (text_word2vec
Metode ini mengkodekan token dalam string sebagai vektor padat menggunakan salah satu model terlatih SPacy
Contoh berikut menentukan 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 adalah opsional, karena en_core_web_lg
model bahasa Inggris adalah satu-satunya yang didukung Neptunus.
Pengkodean fitur teks TF-IDF di Neptunus
Neptunus ML dapat menyandikan nilai properti teks sebagai fitur. text_tfidf
Pengkodean ini mengubah urutan kata dalam teks menjadi vektor numerik menggunakan istilah frekuensi-inverse document frequency (TF-IDF) vectorizer
TF-IDF
Misalnya, jika kata “ciuman” muncul dua kali dalam judul film tertentu (katakanlah, “ciuman ciuman bang bang”), dan “ciuman” muncul dalam judul 4 film secara keseluruhan, maka nilai TF-IDF dari “ciuman” dalam judul “ciuman ciuman 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 pengurangan dimensi menggunakan proyeksi jarang acak untuk mengurangi angka itu hingga maksimum 100. Kosakata grafik kemudian dihasilkan dengan menggabungkan semua text_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 ke 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 menyetelnya 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 di setidaknya 5 nilai properti yang 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 di judul “kiss kiss bang bang”:Istilah 2 kata: “ciuman ciuman”, “ciuman bang”, dan “bang bang”.
Istilah 3 kata: “kiss kiss bang” dan “kiss bang bang”.
Istilah 4 kata: “ciuman ciuman bang bang”.
Pengaturan default untuk
ngram_range
adalah[1, 1]
.
Fitur Datetime di Neptunus ML
Neptunus ML dapat mengubah bagian datetime
dari nilai properti menjadi fitur kategoris dengan menyandikannya sebagai array satu-panas.datetime_parts
parameter untuk menentukan satu atau beberapa bagian berikut untuk menyandikan:["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 dari entri datetime adalah sebagai berikut: 2011-04-22 01:16:34
-
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, array hari kerja satu panas 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 pagi diatur dalam array satu-panas 24 anggota.
Hari dalam sebulan, menit, dan detik tidak dikodekan secara kategoris.
Jika datetime
rentang total yang dimaksud hanya mencakup tanggal dalam satu tahun, tidak ada year
array yang dikodekan.
Anda dapat menentukan strategi imputasi untuk mengisi datetime
nilai yang hilang, menggunakan imputer
parameter dan salah satu strategi yang tersedia untuk fitur numerik.
Pengkodean fitur otomatis di Neptunus ML
Alih-alih secara manual menentukan metode pengkodean fitur yang akan digunakan untuk properti dalam grafik Anda, Anda dapat mengatur auto
sebagai metode pengkodean fitur. Neptunus ML kemudian mencoba menyimpulkan pengkodean fitur terbaik untuk setiap properti berdasarkan tipe data yang mendasarinya.
Berikut adalah beberapa heuristik yang digunakan Neptunus dalam memilih pengkodean fitur yang sesuai:
Jika properti hanya memiliki nilai numerik dan dapat dilemparkan ke tipe data numerik, maka Neptunus ML umumnya 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 Neptunus ML menggunakan pengkodean kategoris.
Jika nilai properti dapat dilemparkan ke suatu
datetime
tipe, maka Neptunus ML mengkodekannya sebagai fitur.datetime
Jika nilai properti dapat dipaksa untuk boolean (1/0 atau True/False), maka Neptunus ML menggunakan 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, Neptunus ML menyimpulkan jenis properti menjadi teks dan secara otomatis mendeteksi bahasa yang digunakan. Jika bahasa yang terdeteksi adalah salah satu yang didukung oleh FastText, yaitu Inggris, Mandarin, Hindi, Spanyol dan Prancis, maka Neptunus menggunakan untuk menyandikan teks.
text_fasttext
Sebaliknya, penggunaan Neptunus ML. text_sbertJika properti adalah string yang tidak diklasifikasikan sebagai fitur teks maka Neptunus ML menganggapnya sebagai fitur kategoris dan menggunakan pengkodean kategori.
Jika setiap node memiliki nilai uniknya sendiri untuk properti yang disimpulkan sebagai fitur kategori, Neptunus ML menjatuhkan properti dari grafik pelatihan karena mungkin ID yang tidak informatif untuk pembelajaran.
-
Jika properti diketahui mengandung pemisah Neptunus yang valid seperti titik koma (“;”), maka Neptunus ML hanya dapat memperlakukan properti sebagai atau.
MultiNumerical
MultiCategorical
Neptunus ML pertama kali mencoba untuk menyandikan nilai sebagai fitur numerik. jika ini berhasil, Neptunus ML menggunakan pengkodean numerik untuk membuat fitur vektor numerik.
Jika tidak, Neptunus ML mengkodekan nilai sebagai multi-kategoris.
Jika Neptunus ML tidak dapat menyimpulkan tipe data dari nilai properti, MLdrops Neptunus properti dari grafik pelatihan.