Proyek ini merupakan implementasi sistem rekomendasi resep makanan berbasis machine learning yang dibangun menggunakan TensorFlow Recommenders dan di-deploy menggunakan FastAPI. Proyek dikemas dalam container Docker untuk memudahkan proses deployment dan distribusi.
https://www.kaggle.com/datasets/pes12017000148/food-ingredients-and-recipe-dataset-with-images
pip install -r "requirements.txt"Jalankan file main.ipynb
Note
Pastikan menggunakan GPU atau komponen serupa untuk mempercepat waktu pelatihan dan pembangunan model
git clone https://github.com/username/nama-repo.gitdocker build -t food-recommender-app .docker run -p 7860:7860 food-recommender-appLayanan FastAPI akan tersedia di
http://localhost:7860
-
Data Preprocessing
Kolom
user_id,food_id,title, daningredient_strdikonversi menjadi tipe data string.Dataset dibagi menjadi data pelatihan (80%) dan data pengujian (20%) menggunakan train_test_split.
Dataset dikonversi menjadi
tf.data.Dataset, kemudian dibatch dan dicache untuk efisiensi pelatihan. -
Lookup dan Text Vectorization
StringLookup digunakan untuk mengubah nilai string seperti
user_iddantitlemenjadi indeks numerik.TextVectorization digunakan untuk mengubah
ingredient_strmenjadi token urutan integer, yang kemudian diolah oleh embedding layer dan LSTM. -
Arsitektur Model
a. UserModel
Model pengguna terdiri dari:
StringLookup untuk ID pengguna. Embedding layer untuk representasi vektor. Dense layer sebagai pemetaan non-linear.b. ItemModel
Model item menggabungkan dua sumber informasi:
Judul resep melalui embedding. Bahan resep melalui TextVectorization, embedding, dan Bi-LSTM. Output dari keduanya digabung dan diproses oleh Dense layer untuk menghasilkan embedding akhir.c. RecipeModel
Model utama yang:
Menghitung dot product dari embedding pengguna dan item. Menggunakan MeanSquaredError sebagai fungsi loss. Menggunakan RootMeanSquaredError sebagai metrik evaluasi. -
Pelatihan Model
Optimizer: Adam dengan learning rate 0.0005
Digunakan callback EarlyStopping untuk menghentikan pelatihan jika validasi RMSE tidak membaik setelah beberapa epoch.
-
Penyimpanan Model
Model disimpan dalam tiga bagian:
user_embedding_model menyimpan representasi pengguna.
item_embedding_model menyimpan representasi item.
recommender_model adalah model lengkap untuk pelatihan ulang atau evaluasi.