Perpustakaan model RDS SQLFlow menyediakan berbagai model yang sesuai untuk skenario berbeda. Anda dapat memilih model yang tepat berdasarkan jenis masalah yang ingin diselesaikan. Topik ini menjelaskan berbagai model dan algoritma mereka.
Ikhtisar Model
Model Klasifikasi
Model klasifikasi digunakan untuk menentukan kategori data baru dalam dataset yang mengandung beberapa kategori. Model ini membantu menjawab pertanyaan biner (ya atau tidak) serta pertanyaan klasifikasi multi-kelas (A, B, atau C). Untuk informasi lebih lanjut, lihat Model Klasifikasi.
Skenario
Klasifikasi gambar: Tugas seperti pengenalan digit tulisan tangan dan pengenalan objek.
Klasifikasi teks: Tugas seperti analisis sentimen dan identifikasi email spam.
Sistem rekomendasi: Prediksi niat pembelian pengguna di bidang e-commerce.
Diagnosis medis: Analisis informasi pasien untuk memprediksi risiko penyakit.
Model Regresi
Model regresi cocok untuk data dengan hubungan yang dapat dihitung. Model ini digunakan untuk memperkirakan hubungan antara data dan membuat prediksi untuk dataset baru berdasarkan hubungan tersebut. Untuk informasi lebih lanjut, lihat Model Regresi. Model regresi dibangun berdasarkan hubungan antara variabel input (fitur) dan variabel output (hasil).
Skenario
Ekonomi: Prediksi indikator ekonomi seperti harga rumah dan harga saham. Dalam skenario ini, regresi linier membantu memahami hubungan antara variabel secara efisien.
Kedokteran: Prediksi hasil kesehatan seperti tingkat glukosa darah berdasarkan gaya hidup dan informasi genetik.
Pemasaran: Analisis hubungan antara pengeluaran iklan dan pendapatan penjualan untuk mengoptimalkan strategi pemasaran.
Teknik: Prediksi performa produk dengan hasil yang digunakan untuk membangun model berdasarkan berbagai parameter.
Ilmu sosial: Analisis fenomena sosial seperti dampak tingkat pendidikan terhadap pendapatan.
Model Pengelompokan
Model pengelompokan digunakan untuk mengklasifikasikan data dalam dataset berdasarkan kesamaan tertentu dan menghasilkan model instance baru yang dapat digunakan dalam berbagai skenario. Untuk informasi lebih lanjut, lihat Model Pengelompokan. Model pengelompokan memberikan metode pembelajaran tanpa pengawasan untuk pembelajaran mesin (ML). Model ini mengklasifikasikan sampel berdasarkan kesamaan fitur. Sampel dalam kelompok yang sama mirip satu sama lain, sedangkan sampel dalam kelompok berbeda sangat berbeda. Model pengelompokan banyak digunakan dalam analitik data dan pengenalan pola karena kemampuan mereka mengidentifikasi pola potensial dalam data yang tidak berlabel.
Skenario
Klasifikasi pelanggan: Penjual menggunakan analisis pengelompokan untuk meneliti pola perilaku dan preferensi pengguna guna menerapkan strategi pemasaran presisi.
Pemrosesan gambar: Selama klasifikasi gambar dan pengenalan objek, piksel dengan fitur serupa diklasifikasikan ke dalam kategori yang sama melalui pengelompokan.
Pendeteksian anomali: Sampel yang tidak termasuk dalam kluster apa pun diidentifikasi untuk mendeteksi pencilan potensial, seperti serangan di bidang keamanan siber.
Pengelompokan dokumen: Banyak dokumen perlu diklasifikasikan berdasarkan topik atau konten untuk memudahkan pengambilan informasi dan pengaturan data.
Bioinformatika: Dalam analisis data ekspresi gen, peneliti menggunakan analisis kluster untuk mengidentifikasi kelompok gen yang serupa.
Model Klasifikasi
DNNClassifier
Pengenalan
Deep Neural Network Classifier (DNNClassifier) adalah API tingkat lanjut yang disediakan oleh TensorFlow untuk membangun model jaringan saraf dalam (DNN) guna melakukan prediksi klasifikasi biner atau multi-kelas. API ini menggunakan jaringan terhubung penuh multi-lapis untuk menangkap hubungan non-linear dalam data serta melatih dan mengoptimalkan bobot dan bias untuk meminimalkan loss antara output model dan kategori aktual.
Berikut adalah manfaat DNNClassifier:
Kemudahan penggunaan: DNNClassifier menyederhanakan pembuatan model pembelajaran mendalam sebagai API tingkat lanjut.
Modularitas: DNNClassifier dapat dikonfigurasi secara fleksibel, seperti jumlah dan ukuran lapisan tersembunyi.
Pelatihan paralel: DNNClassifier memungkinkan Anda menggunakan CPU multi-core atau GPU untuk mempercepat pelatihan.
Fitur input ganda: DNNClassifier mendukung kombinasi fitur numerik dan kategorikal.
Parameter
Parameter | Deskripsi |
model.hidden_units | Jumlah neuron pada lapisan tersembunyi model DNN. Misalnya, jika nilainya dalam rentang [128, 32], model tersebut berisi dua lapisan tersembunyi, dan jumlah neuron pada lapisan tersebut masing-masing adalah 128 dan 32. |
model.n_classes | Jumlah total kategori yang dapat diklasifikasikan oleh model (berlaku untuk model klasifikasi). Sebagai contoh, |
model.optimizer | Optimizer yang digunakan untuk pelatihan model. |
model.batch_norm | Menentukan apakah akan menggunakan batch_norm setelah setiap lapisan tersembunyi. Nilai valid:
|
model.dropout | Probabilitas dropout. Contoh nilai: 0.5. Nilai default: None. |
Contoh
### Pelatihan
SELECT * FROM iris.train TO TRAIN DNNClassifier WITH
model.n_classes = 3,
train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;
## Prediksi
SELECT * FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;XGBoost gbtree
Pengenalan
Extreme Gradient Boosting (XGBoost) adalah algoritma pohon boosting gradien yang efisien dan banyak digunakan untuk klasifikasi dan regresi. Model XGBoost gbtree menggunakan pohon keputusan sebagai pembelajar dasar.
Algoritma ini memiliki karakteristik berikut:
Kinerja tinggi: Dalam berbagai tugas klasifikasi, BoostedTreesClassifier dari XGBoost membantu mencapai akurasi lebih tinggi dibandingkan metode tradisional.
Adaptabilitas: XGBoost dapat mengevaluasi pentingnya fitur dan beradaptasi dengan distribusi data yang berbeda.
Interpretasi: XGBoost menganalisis pentingnya fitur dan memungkinkan Anda memahami bagaimana model membuat keputusan.
Pencegahan overfitting: Boosted Trees menggunakan teknik regularisasi untuk mencegah overfitting ketika pohon dilintasi.
Kemampuan menangani nilai yang hilang: Nilai yang hilang dalam sampel ditangani dengan tepat untuk menghindari masalah pra-pemrosesan.
Pelatihan paralel dan terdistribusi: Model dapat dilatih secara efisien pada dataset besar.
Contoh
## Digunakan untuk klasifikasi biner
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="binary:logistic", validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;
## Digunakan untuk klasifikasi multi-kelas
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="multi:softmax", num_class=3, validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;
## Digunakan untuk tugas regresi
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="reg:squarederror", validation.select="SELECT * FROM val_table"
LABEL target
INTO my_xgb_regression_model;GCN
Pengenalan
Graph Convolutional Network (GCN) adalah model pembelajaran mendalam yang dirancang khusus untuk memproses data berstruktur graf dengan menerapkan konvolusi di atas graf. GCN dapat menangkap hubungan kompleks antara node dan fitur struktural dalam graf. Kemampuan ini memungkinkan GCN untuk menganalisis data dengan struktur dan hubungan yang kompleks, seperti data dalam jaringan sosial, sistem rekomendasi, dan jaringan biologis. GCN menggunakan konvolusi graf dalam jaringan saraf konvolusional (CNN) dan memperbarui representasi setiap node dengan mengumpulkan informasi fitur dari node tetangga.
Skenario
Analisis jaringan sosial: GCN dapat digunakan untuk tugas seperti rekomendasi pengguna, prediksi hubungan, dan deteksi komunitas dalam jaringan sosial.
Klasifikasi node: GCN dapat mengklasifikasikan node atau entitas dalam graf pengetahuan atau struktur serupa dan memprediksi kategori mana yang dimiliki oleh node tertentu.
Segmentasi gambar: GCN dapat meningkatkan kinerja segmentasi gambar dan pengenalan objek dalam gambar yang terdiri dari piksel.
Model Regresi
DNNRegressor
Pengenalan
DNNRegressor adalah API tingkat lanjut yang disediakan oleh TensorFlow untuk tugas regresi dalam pembelajaran mendalam. DNNRegressor termasuk dalam modul TensorFlow Estimator dan dapat digunakan untuk memproses data terstruktur seperti data dalam tabel atau format CSV. DNNRegressor juga dapat mempelajari hubungan data non-linear yang kompleks untuk memprediksi output nilai kontinu seperti harga atau probabilitas.
Parameter
Parameter | Deskripsi |
n_classes | Jumlah total kategori yang dapat diklasifikasikan oleh model (berlaku untuk model klasifikasi). Sebagai contoh, |
optimizer | Optimizer yang digunakan untuk pelatihan model. |
sparse_combiner | Menentukan metode pemrosesan ketika input kolom kategori mengandung beberapa nilai yang identik, misalnya: |
Contoh
## Pelatihan
SELECT f9, target FROM housing.train
TO TRAIN DNNRegressor WITH model.hidden_units = [10, 20]
COLUMN EMBEDDING(CATEGORY_ID(f9, 1000), 2, "sum")
LABEL target
INTO housing.dnn_model;
## Prediksi
SELECT f9, target FROM housing.test
TO PREDICT housing.predict.class USING housing.dnn_model;RNNBasedTimeSeriesModel
Pengenalan
RNNBasedTimeSeriesModel, Recurrent Neural Network (RNN), adalah model prediksi berbasis deret waktu memori jangka pendek dan panjang (LSTM). Model ini memprediksi nilai masa depan menggunakan nilai masa lalu sebagai fitur. RNN adalah jaringan saraf yang dapat digunakan untuk memproses data sekuensial. Pada setiap langkah waktu, RNN tidak hanya menerima data untuk titik waktu saat ini tetapi juga mempertimbangkan data status untuk titik waktu sebelumnya. RNN cocok untuk memproses data deret waktu seperti harga saham, pembacaan suhu, dan bahasa alami.
Berikut adalah manfaat RNN:
Kemampuan memori: RNN dapat menyimpan informasi input sebelumnya, memungkinkannya menangkap dependensi jangka panjang dalam deret waktu.
Panjang input dinamis: RNN dapat menangani urutan input dengan panjang apa pun, yang penting untuk data deret waktu.
Pemetaan non-linear: RNN dapat membangun hubungan non-linear antara data input dan output, memungkinkannya menyelesaikan tugas prediksi kompleks.
Generasi sekuens: RNN dapat menghasilkan data deret waktu, seperti musik dan informasi teks.
Parameter
Parameter | Deskripsi |
model.stack_units | Jumlah lapisan LSTM dan ukuran setiap lapisan. Nilai default: [500, 500]. |
model.n_in | Jumlah titik waktu input. |
model.n_out | Jumlah titik waktu output. |
Contoh
## Pelatihan
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class
FROM iris.train
TO TRAIN sqlflow_models.RNNBasedTimeSeriesModel WITH
model.n_in=3,
model.stack_units = [10, 10],
model.n_out=2,
model.model_type="lstm",
validation.metrics= "MeanAbsoluteError,MeanSquaredError"
LABEL class
INTO sqlflow_models.my_dnn_regts_model_2;
## Prediksi
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class
FROM iris.test
TO PREDICT iris.predict_ts_2.class
USING sqlflow_models.my_dnn_regts_model_2;Model Pengelompokan
DeepEmbeddingClusterModel
Pengenalan
DeepEmbeddingClusterModel adalah model yang menggabungkan metode pembelajaran mendalam dan pengelompokan. Model ini digunakan untuk mempelajari representasi embedding dimensi rendah dari data dan melakukan pengelompokan dalam ruang embedding.
Berikut adalah manfaat DeepEmbeddingClusterModel:
Pembelajaran mendalam: DeepEmbeddingClusterModel menggunakan jaringan saraf dalam untuk ekstraksi fitur, mempelajari representasi data yang berguna, dan menangkap hubungan non-linear yang kompleks.
Representasi embedded: DeepEmbeddingClusterModel memproyeksikan data dimensi tinggi ke dalam ruang embedding dimensi rendah untuk menyederhanakan pengelompokan dan meningkatkan kinerja.
Kemampuan pengelompokan: DeepEmbeddingClusterModel melakukan pengelompokan langsung dalam ruang embedding untuk mengurangi jarak antara titik data dari jenis yang sama.
Kemampuan generalisasi: DeepEmbeddingClusterModel dapat memproses data yang bising dan kompleks karena keuntungan pembelajaran mendalam.
Skalabilitas: DeepEmbeddingClusterModel dapat memproses dataset besar dan secara efektif mengiterasi serta memperbarui data berdasarkan pembelajaran mendalam.
Parameter
Parameter | Deskripsi |
model.n_clusters | Jumlah kategori pengelompokan. Nilai default: 10. |
model.kmeans_init | Jumlah kali algoritma K-means dijalankan untuk mendapatkan titik pusat terbaik. Nilai default: 20. |
model.run_pretrain | Menentukan apakah akan melakukan pra-latihan. Nilai default: True. |
model.pretrain_dims | Dimensi setiap lapisan tersembunyi ketika autoencoder dilatih sebelumnya. Nilai default: [500, 500, 2000, 10]. |
model.pretrain_activation_func | Fungsi aktivasi untuk bagian autoencoder, nilai default: |
model.pretrain_batch_size | Ukuran batch untuk pelatihan autoencoder. Nilai default: 256. |
model.train_batch_size | Ukuran batch untuk pelatihan. Nilai default: 256. |
model.pretrain_epochs | Jumlah epoch pra-latihan. Nilai default: 10. |
model.pretrain_initializer | Metode inisialisasi untuk parameter autoencoder, nilai default: |
model.pretrain_lr | Tingkat pembelajaran pra-latihan. Nilai default: 1. |
model.train_lr | Tingkat pembelajaran pelatihan. Nilai default: 0.1. |
model.train_max_iters | Jumlah maksimum langkah iterasi pelatihan. Nilai default: 8000. |
model.update_interval | Jumlah langkah di mana distribusi yang diperlukan diperbarui. Nilai default: 100. |
model.tol | Toleransi. Nilai default: 0.001. |
Contoh
## Pelatihan
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.train
TO TRAIN sqlflow_models.DeepEmbeddingClusterModel
WITH
model.pretrain_dims = [10,10,3],
model.n_clusters = 3,
model.pretrain_epochs=5,
train.batch_size=10,
train.verbose=1
INTO sqlflow_models.my_clustering_model;
## Prediksi
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_clustering_model;