

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

# Algoritma Mesin Faktorisasi
<a name="fact-machines"></a>

Algoritma Factorization Machines adalah algoritma pembelajaran terawasi tujuan umum yang dapat Anda gunakan untuk tugas klasifikasi dan regresi. Ini adalah perpanjangan dari model linier yang dirancang untuk menangkap interaksi antara fitur dalam kumpulan data jarang dimensi tinggi secara ekonomis. Misalnya, dalam sistem prediksi klik, model Mesin Faktorisasi dapat menangkap pola rasio klik yang diamati saat iklan dari kategori iklan tertentu ditempatkan pada halaman dari kategori halaman tertentu. Mesin faktorisasi adalah pilihan yang baik untuk tugas-tugas yang berhubungan dengan kumpulan data jarang dimensi tinggi, seperti prediksi klik dan rekomendasi item.

**catatan**  
Implementasi Amazon SageMaker AI dari algoritma Factorization Machines hanya mempertimbangkan interaksi berpasangan (urutan ke-2) antar fitur.

**Topics**
+ [Antarmuka Input/Output untuk Algoritma Mesin Faktorisasi](#fm-inputoutput)
+ [Rekomendasi Instans EC2 untuk Algoritma Mesin Faktorisasi](#fm-instances)
+ [Mesin Faktorisasi Contoh Notebook](#fm-sample-notebooks)
+ [Bagaimana Mesin Faktorisasi Bekerja](fact-machines-howitworks.md)
+ [Mesin Faktorisasi Hyperparameters](fact-machines-hyperparameters.md)
+ [Menyetel Model Mesin Faktorisasi](fm-tuning.md)
+ [Format Respon Mesin Faktorisasi](fm-in-formats.md)

## Antarmuka Input/Output untuk Algoritma Mesin Faktorisasi
<a name="fm-inputoutput"></a>

Algoritma Factorization Machines dapat dijalankan baik dalam mode klasifikasi biner atau mode regresi. Dalam setiap mode, kumpulan data dapat diberikan ke saluran **uji** bersama dengan kumpulan data saluran kereta api. Skor tergantung pada mode yang digunakan. Dalam mode regresi, dataset pengujian dinilai menggunakan Root Mean Square Error (RMSE). Dalam mode klasifikasi biner, kumpulan data pengujian dinilai menggunakan Binary Cross Entropy (Log Loss), Akurasi (pada ambang = 0,5) dan Skor F1 (pada ambang = 0,5).

Untuk **pelatihan**, algoritma Mesin Faktorisasi saat ini hanya mendukung `recordIO-protobuf` format dengan `Float32` tensor. Karena kasus penggunaan mereka sebagian besar pada data yang jarang, `CSV` bukan kandidat yang baik. Pelatihan mode File dan Pipa didukung untuk protobuf yang dibungkus Recordio.

Untuk **inferensi**, algoritma Mesin Faktorisasi mendukung dan format. `application/json` `x-recordio-protobuf` 
+ Untuk masalah **klasifikasi biner**, algoritma memprediksi skor dan label. Label adalah angka dan bisa berupa `0` atau`1`. Skor adalah angka yang menunjukkan seberapa kuat algoritma percaya bahwa label seharusnya`1`. Algoritma menghitung skor terlebih dahulu dan kemudian mendapatkan label dari nilai skor. Jika skor lebih besar dari atau sama dengan 0,5, labelnya adalah`1`.
+ Untuk masalah **regresi**, hanya skor yang dikembalikan dan itu adalah nilai yang diprediksi. Misalnya, jika Mesin Faktorisasi digunakan untuk memprediksi peringkat film, skor adalah nilai peringkat yang diprediksi.

Silakan lihat [Mesin Faktorisasi Contoh Notebook](#fm-sample-notebooks) untuk detail lebih lanjut tentang format file pelatihan dan inferensi.

## Rekomendasi Instans EC2 untuk Algoritma Mesin Faktorisasi
<a name="fm-instances"></a>

Algoritma Amazon SageMaker AI Factorization Machines sangat skalabel dan dapat dilatih di seluruh instans terdistribusi. Kami merekomendasikan pelatihan dan inferensi dengan instance CPU untuk kumpulan data yang jarang dan padat. Dalam beberapa keadaan, pelatihan dengan satu atau lebih GPUs tentang data padat mungkin memberikan beberapa manfaat. Pelatihan dengan hanya GPUs tersedia pada data padat. Gunakan instance CPU untuk data yang jarang. Algoritma Mesin Faktorisasi mendukung instans P2, P3, G4dn, dan G5 untuk pelatihan dan inferensi.

## Mesin Faktorisasi Contoh Notebook
<a name="fm-sample-notebooks"></a>

[Untuk contoh notebook yang menggunakan algoritme Mesin Faktorisasi SageMaker AI untuk menganalisis gambar digit tulisan tangan dari nol hingga sembilan dalam kumpulan data MNIST, lihat Pengantar Mesin Faktorisasi dengan MNIST.](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/factorization_machines_mnist/factorization_machines_mnist.html) Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah Anda membuat instance notebook dan membukanya, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua sampel SageMaker AI. Contoh notebook yang menggunakan algoritma Mesin Faktorisasi terletak di bagian Pengantar Algoritma **Amazon**. Untuk membuka buku catatan, klik tab **Use** dan pilih **Create copy**.

# Bagaimana Mesin Faktorisasi Bekerja
<a name="fact-machines-howitworks"></a>

Tugas prediksi untuk model Mesin Faktorisasi adalah memperkirakan fungsi dari set fitur x i ke domain target. Domain ini bernilai nyata untuk regresi dan biner untuk klasifikasi. Model Mesin Faktorisasi diawasi dan memiliki dataset pelatihan (xi, y) yang tersedia. j Keuntungan yang disajikan model ini terletak pada cara menggunakan parametriisasi yang difaktorisasi untuk menangkap interaksi fitur berpasangan. Ini dapat direpresentasikan secara matematis sebagai berikut: 

![\[Gambar yang berisi persamaan untuk model Mesin Faktorisasi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/FM1.jpg)


 Tiga istilah dalam persamaan ini masing-masing sesuai dengan tiga komponen model: 
+ 0Istilah w mewakili bias global.
+ Istilah i linier w memodelkan kekuatan variabel i th.
+ Istilah faktorisasi <vi, v j > memodelkan interaksi berpasangan antara variabel i th dan j th.

Bias global dan istilah linier sama dengan model linier. Interaksi fitur berpasangan dimodelkan dalam suku ketiga sebagai produk dalam dari faktor-faktor terkait yang dipelajari untuk setiap fitur. Faktor yang dipelajari juga dapat dianggap sebagai vektor penyematan untuk setiap fitur. Misalnya, dalam tugas klasifikasi, jika sepasang fitur cenderung lebih sering terjadi bersamaan dalam sampel berlabel positif, maka produk bagian dalam dari faktor-faktor mereka akan besar. Dengan kata lain, vektor penyematan mereka akan dekat satu sama lain dalam kesamaan kosinus. Untuk informasi lebih lanjut tentang model Mesin Faktorisasi, lihat Mesin [Faktorisasi](https://www.ismll.uni-hildesheim.de/pub/pdfs/Rendle2010FM.pdf).

Untuk tugas regresi, model dilatih dengan meminimalkan kesalahan kuadrat antara prediksi model n dan nilai target y. n Ini dikenal sebagai kerugian kuadrat:

![\[Gambar yang berisi persamaan untuk kerugian kuadrat.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/FM2.jpg)


Untuk tugas klasifikasi, model dilatih dengan meminimalkan kehilangan entropi silang, juga dikenal sebagai kehilangan log: 

![\[Gambar yang berisi persamaan kehilangan log.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/FM3.jpg)


di mana: 

![\[Gambar yang berisi fungsi logistik dari nilai yang diprediksi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/FM4.jpg)


Untuk informasi selengkapnya tentang fungsi kerugian untuk klasifikasi, lihat [Fungsi kerugian untuk klasifikasi](https://en.wikipedia.org/wiki/Loss_functions_for_classification).

# Mesin Faktorisasi Hyperparameters
<a name="fact-machines-hyperparameters"></a>

Tabel berikut berisi hyperparameters untuk algoritma Factorization Machines. Ini adalah parameter yang ditetapkan oleh pengguna untuk memfasilitasi estimasi parameter model dari data. Hyperparameter yang diperlukan yang harus ditetapkan terdaftar terlebih dahulu, dalam urutan abjad. Hyperparameter opsional yang dapat diatur tercantum berikutnya, juga dalam urutan abjad.


| Nama Parameter | Deskripsi | 
| --- | --- | 
| feature\$1dim | Dimensi ruang fitur input. Ini bisa sangat tinggi dengan input yang jarang. **Diperlukan** Nilai yang valid: Bilangan bulat positif. Rentang nilai yang disarankan: [10000,10000000]  | 
| num\$1factors | Dimensionalitas faktorisasi. **Diperlukan** Nilai yang valid: Bilangan bulat positif. Rentang nilai yang disarankan: [2.000], 64 biasanya menghasilkan hasil yang baik dan merupakan titik awal yang baik.  | 
| predictor\$1type | Jenis prediktor. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Diperlukan** Nilai yang valid: String: `binary_classifier` atau `regressor`  | 
| bias\$1init\$1method | Metode inisialisasi untuk istilah bias: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Opsional** Nilai valid: `uniform`, `normal`, atau `constant` Nilai default: `normal`  | 
| bias\$1init\$1scale | Rentang untuk inisialisasi istilah bias. Berlaku jika `bias_init_method` diatur ke`uniform`.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: Tidak ada  | 
| bias\$1init\$1sigma | Standar deviasi untuk inisialisasi istilah bias. Berlaku jika `bias_init_method` diatur ke`normal`.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,01  | 
| bias\$1init\$1value | Nilai awal istilah bias. Berlaku jika `bias_init_method` diatur ke`constant`.  **Opsional** Nilai yang valid: Float. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: Tidak ada  | 
| bias\$1lr | Tingkat pembelajaran untuk istilah bias.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,1  | 
| bias\$1wd | Peluruhan berat untuk istilah bias.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,01  | 
| clip\$1gradient | Parameter pengoptimal kliping gradien. Klip gradien dengan memproyeksikan ke interval [-`clip_gradient`, \$1`clip_gradient`].  **Opsional** Nilai yang valid: Float Nilai default: Tidak ada  | 
| epochs | Jumlah zaman pelatihan untuk dijalankan.  **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 1  | 
| eps | Parameter Epsilon untuk menghindari pembagian dengan 0. **Opsional** Nilai yang valid: Float. Nilai yang disarankan: kecil. Nilai default: Tidak ada  | 
| factors\$1init\$1method | Metode inisialisasi untuk istilah faktorisasi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Opsional** Nilai yang valid:`uniform`,`normal`, atau`constant`. Nilai default: `normal`  | 
| factors\$1init\$1scale  | Rentang untuk inisialisasi istilah faktorisasi. Berlaku jika `factors_init_method` diatur ke`uniform`.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: Tidak ada  | 
| factors\$1init\$1sigma | Standar deviasi untuk inisialisasi istilah faktorisasi. Berlaku jika `factors_init_method` diatur ke`normal`.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,001  | 
| factors\$1init\$1value | Nilai awal istilah faktorisasi. Berlaku jika `factors_init_method` diatur ke`constant`.  **Opsional** Nilai yang valid: Float. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: Tidak ada  | 
| factors\$1lr | Tingkat pembelajaran untuk istilah faktorisasi.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,0001  | 
| factors\$1wd | Peluruhan berat untuk istilah faktorisasi.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,00001  | 
| linear\$1lr | Tingkat pembelajaran untuk istilah linier.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,001  | 
| linear\$1init\$1method | Metode inisialisasi untuk istilah linier: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Opsional** Nilai yang valid:`uniform`,`normal`, atau`constant`. Nilai default: `normal`  | 
| linear\$1init\$1scale | Rentang untuk inisialisasi istilah linier. Berlaku jika `linear_init_method` diatur ke`uniform`.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: Tidak ada  | 
| linear\$1init\$1sigma | Standar deviasi untuk inisialisasi istilah linier. Berlaku jika `linear_init_method` diatur ke`normal`.  **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,01  | 
| linear\$1init\$1value | Nilai awal istilah linier. Berlaku jika `linear_init_method` diatur ke *konstan*.  **Opsional** Nilai yang valid: Float. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: Tidak ada  | 
| linear\$1wd | Peluruhan berat untuk istilah linier. **Opsional** Nilai yang valid: Float non-negatif. Rentang nilai yang disarankan: [1e-8, 512]. Nilai default: 0,001  | 
| mini\$1batch\$1size | Ukuran mini-batch yang digunakan untuk pelatihan.  **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 1000  | 
| rescale\$1grad |  Parameter pengoptimal penskalaan ulang gradien. Jika diatur, kalikan gradien dengan `rescale_grad` sebelum memperbarui. Sering memilih menjadi 1.0/`batch_size`.  **Opsional** Nilai yang valid: Float Nilai default: Tidak ada  | 

# Menyetel Model Mesin Faktorisasi
<a name="fm-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Anda memilih metrik objektif dari metrik yang dihitung algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

Untuk informasi selengkapnya tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik yang Dihitung oleh Algoritma Mesin Faktorisasi
<a name="fm-metrics"></a>

Algoritma Mesin Faktorisasi memiliki klasifikasi biner dan tipe prediktor regresi. Jenis prediktor menentukan metrik mana yang dapat Anda gunakan untuk penyetelan model otomatis. Algoritma melaporkan metrik `test:rmse` regressor, yang dihitung selama pelatihan. Saat menyetel model untuk tugas regresi, pilih metrik ini sebagai tujuannya.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| test:rmse | Root Mean Square Error | Minimalkan | 

Algoritma Mesin Faktorisasi melaporkan tiga metrik klasifikasi biner, yang dihitung selama pelatihan. Saat menyetel model untuk tugas klasifikasi biner, pilih salah satunya sebagai tujuannya.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| test:binary\$1classification\$1accuracy | Akurasi | Maksimalkan | 
| test:binary\$1classification\$1cross\$1entropy | Entropi Lintas | Minimalkan | 
| test:binary\$1f\$1beta | Beta | Maksimalkan | 

## Mesin Factorisasi Tunable Hyperparameters
<a name="fm-tunable-hyperparameters"></a>

Anda dapat menyetel hiperparameter berikut untuk algoritma Mesin Faktorisasi. Parameter inisialisasi yang berisi istilah bias, linier, dan faktorisasi bergantung pada metode inisialisasi mereka. Ada tiga metode inisialisasi:`uniform`,`normal`, dan`constant`. Metode inisialisasi ini sendiri tidak dapat disetel. Parameter yang dapat disetel tergantung pada pilihan metode inisialisasi ini. Misalnya, jika metode inisialisasi adalah`uniform`, maka hanya `scale` parameter yang dapat disetel. Khususnya, jika`bias_init_method==uniform`, kemudian `bias_init_scale``linear_init_scale`, dan dapat `factors_init_scale` disetel. Demikian pula, jika metode inisialisasi adalah`normal`, maka hanya `sigma` parameter yang dapat disetel. Jika metode inisialisasi adalah`constant`, maka hanya `value` parameter yang dapat disetel. Dependensi ini tercantum dalam tabel berikut. 


| Nama Parameter | Jenis Parameter | Rentang yang Direkomendasikan | Dependensi | 
| --- | --- | --- | --- | 
| bias\$1init\$1scale | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method==seragam | 
| bias\$1init\$1sigma | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method== normal | 
| bias\$1init\$1value | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method== konstan | 
| bias\$1lr | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | Tidak ada | 
| bias\$1wd | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | Tidak ada | 
| epoch | IntegerParameterRange | MinValue: 1, MaxValue: 1000 | Tidak ada | 
| factors\$1init\$1scale | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method==seragam | 
| factors\$1init\$1sigma | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method== normal | 
| factors\$1init\$1value | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method== konstan | 
| factors\$1lr | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | Tidak ada | 
| factors\$1wd | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512] | Tidak ada | 
| linear\$1init\$1scale | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method==seragam | 
| linear\$1init\$1sigma | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method== normal | 
| linear\$1init\$1value | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | bias\$1init\$1method== konstan | 
| linear\$1lr | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | Tidak ada | 
| linear\$1wd | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512 | Tidak ada | 
| mini\$1batch\$1size | IntegerParameterRange | MinValue: 100, MaxValue: 10000 | Tidak ada | 

# Format Respon Mesin Faktorisasi
<a name="fm-in-formats"></a>

Amazon SageMaker AI menyediakan beberapa format respons untuk mendapatkan inferensi dari model Mesin Faktorisasi, seperti JSON, JSONLINES, dan RECORDIO, dengan struktur khusus untuk tugas klasifikasi dan regresi biner.

## Format Respons JSON
<a name="fm-json"></a>

Klasifikasi biner

```
let response =   {
    "predictions":    [
        {
            "score": 0.4,
            "predicted_label": 0
        } 
    ]
}
```

Regresi

```
let response =   {
    "predictions":    [
        {
            "score": 0.4
        } 
    ]
}
```

## Format Respons JSONLINES
<a name="fm-jsonlines"></a>

Klasifikasi biner

```
{"score": 0.4, "predicted_label": 0}
```

Regresi

```
{"score": 0.4}
```

## Format Respons RECORDIO
<a name="fm-recordio"></a>

Klasifikasi biner

```
[
    Record = {
        features = {},
        label = {
            'score’: {
                keys: [],
                values: [0.4]  # float32
            },
            'predicted_label': {
                keys: [],
                values: [0.0]  # float32
            }
        }
    }
]
```

Regresi

```
[
    Record = {
        features = {},
        label = {
            'score’: {
                keys: [],
                values: [0.4]  # float32
            }   
        }
    }
]
```