

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

# Pengkodean fitur di Neptunus ML
<a name="machine-learning-feature-encoding"></a>

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](machine-learning-custom-models.md) untuk detail.

## Fitur kategoris di Neptunus ML
<a name="machine-learning-categorical-features"></a>

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.](https://en.wikipedia.org/wiki/One-hot) Contoh berikut menunjukkan bagaimana nama properti makanan yang berbeda dikodekan satu panas sesuai dengan kategorinya:

```
    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 bernama`OTHER`.

## Fitur numerik di Neptunus ML
<a name="machine-learning-numerical-features"></a>

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": "normalization technique"` Teknik normalisasi berikut didukung:
+ **“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
<a name="machine-learning-bucket_numerical-features"></a>

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": [a, b] `, di mana `a` dan `b` merupakan bilangan bulat.
+ Hitungan ember, dalam bentuk` "bucket_cnt": c `, di `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": s `, di mana angka. `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": "imputation technique "`, di mana teknik imputasi adalah salah satu dari`"mean"`,`"median"`, atau. `"most-frequent"` Jika Anda tidak menentukan imputer, nilai yang hilang dapat menyebabkan pemrosesan terhenti.

## Pengkodean fitur teks di Neptunus ML
<a name="machine-learning-text-features"></a>

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`](#machine-learning-fasttext-features)— Menggunakan pengkodean [FastText](https://fasttext.cc/). Ini adalah pengkodean yang disarankan untuk fitur yang menggunakan satu dan hanya satu dari lima bahasa yang didukung FastText.
+ [`text_sbert`](#machine-learning-sbert-features)— Menggunakan model pengkodean [Sentence BERT](https://www.sbert.net/docs/pretrained_models.html#sentence-embedding-models) (SBERT). Ini adalah pengkodean yang disarankan untuk teks yang `text_fasttext` tidak mendukung.
+ [`text_word2vec`](#machine-learning-word2vec-features)— Menggunakan algoritma [Word2Vec](https://wikipedia.org/wiki/Word2vec) awalnya diterbitkan oleh [Google](https://code.google.com/archive/p/word2vec/) untuk menyandikan teks. Word2Vec hanya mendukung bahasa Inggris.
+ [`text_tfidf`](#machine-learning-tfidf-features)— Menggunakan [istilah frekuensi—inverse document frequency](https://wikipedia.org/wiki/Tf-idf) (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
<a name="machine-learning-fasttext-features"></a>

Neptunus ML dapat menggunakan model [FastText untuk mengubah nilai properti teks](https://fasttext.cc/) menjadi vektor nilai nyata ukuran tetap. Ini adalah metode pengkodean yang direkomendasikan untuk nilai properti teks di salah satu dari lima bahasa yang didukung FastText:
+ `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
<a name="machine-learning-sbert-features"></a>

Neptunus ML dapat mengubah urutan token dalam nilai properti string menjadi vektor nilai nyata ukuran tetap [menggunakan](https://www.sbert.net/docs/pretrained_models.html#sentence-embedding-models) model Sentence BERT (SBERT). Neptunus mendukung dua metode SBERT`text_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 daripada`text_sbert128`. Kedua metode lebih lambat dari`text_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
<a name="machine-learning-word2vec-features"></a>

[Neptunus ML dapat menyandikan nilai properti string sebagai fitur Word2Vec [(](https://wikipedia.org/wiki/Word2vec)algoritma Word2Vec awalnya diterbitkan oleh Google).](https://code.google.com/archive/p/word2vec/) `text_word2vec`Metode ini mengkodekan token dalam string sebagai vektor padat menggunakan salah satu model [terlatih SPacy](https://spacy.io/models). Ini hanya mendukung bahasa Inggris menggunakan model [en\$1core\$1web\$1lg](https://spacy.io/models/en#en_core_web_lg)).

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
<a name="machine-learning-tfidf-features"></a>

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](https://wikipedia.org/wiki/Tf-idf), diikuti oleh operasi reduksi dimensi.

[TF-IDF](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) (frekuensi istilah — frekuensi dokumen terbalik) adalah nilai numerik yang dimaksudkan untuk mengukur seberapa penting sebuah kata dalam kumpulan dokumen. Ini dihitung dengan membagi berapa kali sebuah kata muncul dalam nilai properti tertentu dengan jumlah total nilai properti yang muncul di.

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 menggunakan `max_features` parameter, Anda dapat membatasi jumlah istilah dalam `text_tfidf` fitur ke yang paling umum. Misalnya, jika Anda menyetel `max_features` ke 100, hanya 100 istilah teratas yang paling umum digunakan yang disertakan. Nilai default untuk `max_features` jika Anda tidak secara eksplisit menyetelnya adalah 5.000.
+ **`min_df`**— Menggunakan `min_df` parameter, Anda dapat membatasi jumlah istilah dalam `text_tfidf` fitur untuk yang memiliki setidaknya frekuensi dokumen tertentu. Misalnya, jika Anda menyetel `min_df` ke 5, hanya istilah yang muncul di setidaknya 5 nilai properti yang berbeda yang digunakan. Nilai default untuk `min_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 mengatur `ngram_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
<a name="machine-learning-datetime-features"></a>

[Neptunus ML dapat mengubah bagian `datetime` dari nilai properti menjadi fitur kategoris dengan menyandikannya sebagai array satu-panas.](https://en.wikipedia.org/wiki/One-hot) Gunakan `datetime_parts` parameter untuk menentukan satu atau beberapa bagian berikut untuk menyandikan:`["year", "month", "weekday", "hour"]`. Jika Anda tidak mengatur`datetime_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
<a name="machine-learning-auto-encoding"></a>

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](#machine-learning-fasttext-features), yaitu Inggris, Mandarin, Hindi, Spanyol dan Prancis, maka Neptunus menggunakan untuk menyandikan teks. `text_fasttext` Sebaliknya, penggunaan Neptunus ML. [`text_sbert`](#machine-learning-sbert-features)
+ Jika 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.