Amazon ML challenge for predicting price from unstructured textual data and image_links. 📌 Overview
This project tackles price prediction using both textual and image data. We explore multiple architectures — from classical TF-IDF baselines to SBERT embeddings, image models (ResNet/EfficientNet), and powerful multimodal fusion approaches (Huber, XGBoost, RandomForest, and Ensemble methods). Integrating semantic text and visual cues with robust regression yields strong baselines for multimodal price prediction. Ensembles—especially stacked (XGB + Cat + LGB) achieve the best RMSE and lowest SMAPE, proving the strength of synergy over single-modality learning. The goal is to predict a product’s price given its description and image.
⚙️ Tech Stack
Language: Python 3.10+
Frameworks: TensorFlow, Scikit-learn, CatBoost, LightGBM, XGBoost
Embeddings: SBERT (sentence-transformers), TF-IDF (sklearn)
Pretrained Vision Models: EfficientNetB0 / ResNet50
Regression Models: Huber, RandomForest, XGBoost, Stacked Ensemble
Feature Encoders: Target Encoding, One-Hot Encoding
🏁 Conclusion
This project demonstrates:
How text and image features can be integrated for price regression.
Why non-linear ensemble models outperform linear baselines.
The power of stacked ensembling and robust encoding in real-world multimodal tasks.
Integration of textual (SBERT, TF-IDF) and visual (EfficientNet) features for regression.
Application of Huber, RandomForest, and Boosting Ensembles.
Importance of SMAPE for scale-independent error measurement.
Metric: SMAPE def smape(y_true, y_pred): y_true, y_pred = np.array(y_true), np.array(y_pred) denominator = (np.abs(y_true) + np.abs(y_pred)) / 2 diff = np.abs(y_pred - y_true) mask = denominator != 0 return np.mean(diff[mask] / denominator[mask]) * 100