|
--- |
|
library_name: transformers |
|
license: apache-2.0 |
|
tags: |
|
- PartAI |
|
- time-series-forecasting |
|
- Classification |
|
- Foundation-Models |
|
base_model: |
|
- google/timesfm-2.0-500m-pytorch |
|
--- |
|
|
|
# Model Detail |
|
|
|
FlaMinGo is a foundation model for time-series classification, fine-tuned on extensive **Persian financial datasets**. Developed by [Part AI](https://partdp.ai/), it extends Google's [TimesFM](https://github.com/google-research/timesfm) model by **adding classification capability**, enabling it to handle both forecasting and classification tasks. |
|
|
|
# How to use |
|
|
|
To perform inference on your dataset, follow these steps: |
|
|
|
1. Clone our repository |
|
2. Install the required dependencies. Ensure you are using **Python 3.11**: |
|
|
|
``` |
|
cd FlaMinGo-timesfm |
|
pip install --upgrade pip |
|
pip install timesfm[torch] |
|
pip install -e . |
|
|
|
``` |
|
|
|
3. Download the TimeSFM model weights: |
|
|
|
- [TimeSFM 200M Model Weights](https://huggingface.co/google/timesfm-1.0-200m-pytorch/tree/main) |
|
- [TimeSFM 500M Model Weights](https://huggingface.co/google/timesfm-2.0-500m-pytorch/tree/main) |
|
|
|
## Configuration |
|
|
|
Before running the model, set up the necessary configurations in the `.env` file located in the repository. The following environment variables must be configured: |
|
|
|
- `MODEL_PATH`: Path to the TimeSFM model |
|
- `SAVE_MODEL_PATH`: Path to save the fine-tuned model for the classification task |
|
- `TRAIN_FILE_PATH`: Path to the training dataset |
|
- `TEST_FILE_PATH`: Path to the test dataset |
|
- `USE_GPU`: Use GPU or CPU |
|
- `NUM_LAYERS`: Number of layers in the TimeSFM model (chosen based on the TimeSFM model size: 200M or 500M) |
|
- `TARGET_COL_NAME`: Target column index in the dataset |
|
|
|
|
|
Example `.env` file: |
|
|
|
``` |
|
MODEL_PATH=/app/weights/torch_model.ckpt |
|
SAVE_MODEL_PATH=timesfm_classification_model.pth |
|
TRAIN_FILE_PATH=/app/dataset/ECG200_TRAIN |
|
TEST_FILE_PATH=/app/dataset/ECG200_TEST |
|
USE_GPU=cpu |
|
NUM_LAYERS=20 |
|
TARGET_COL_NAME=0 |
|
``` |
|
|
|
## Fine-Tuning the Model |
|
|
|
To fine-tune the TimesFM model on your dataset, navigate to the `experiments/torch_classification_timesfm` directory in FlaMinGo repo and run the following command: |
|
|
|
``` |
|
python run_timesfm_classification.py |
|
``` |
|
This script will load the dataset, fine-tune the model, and save the fine-tuned model to the path specified in `SAVE_MODEL_PATH`. |
|
|
|
Alternatively, you can use the `notebooks/finetune_timesfm_torch_classification.ipynb` Jupyter notebook to fine-tune the model and perform inference interactively. |
|
|
|
## Notes |
|
|
|
- Ensure that the dataset paths (`TRAIN_FILE_PATH` and `TEST_FILE_PATH`) are correctly specified in the .env file. |
|
- If using a GPU, set `USE_GPU=gpu` in the `.env` file and ensure that CUDA is properly installed. |
|
- The number of layers (`NUM_LAYERS`) should match the TimesFM size (200M or 500M). |
|
- Ensure that the training and testing datasets are in `.csv` format. |
|
|
|
|
|
# Evaluation |
|
|
|
FlaMinGo, available in two versions (FlaMinGo-200M and FlaMinGo-500M), was evaluated against three popular time-series classification models (MOMENT, TimesNet, and GPT4TS) on multiple datasets from the UCR collection. |
|
|
|
|
|
| **Dataset** | **FlaMinGo (Timesfm-200M)** | **FlaMinGo (Timesfm-500M)** | **MOMENT** | **TimesNet** | **GPT4TS** | |
|
|----------------------------------------|:--------------------------------:|:--------------------------------:|:----------:|:------------:|-----------:| |
|
| Ham | 69.5 | 63.8 | 58.1 | 68.6 | **78.1** | |
|
| InsectWingbeatSound | **62.1** | 54.4 | 60.7 | 52.9 | 59.8 | |
|
| ECG5000 | 94 | 91.6 | **94.2** | 58.4 | 58.4 | |
|
| ECG200 | **90** | 87 | 76 | 83 | 79 | |
|
| BirdChicken | **85** | 75 | 85 | 45 | 55 | |
|
| Adiac | 62.9 | 22.3 | **68.8** | 56.5 | 59.8 | |
|
| ProximalPhalanxOutlineAgeGroup | 82.4 | 80.5 | 86.3 | **86.8** | 83.9 | |
|
| Trace | 92 | 76 | **100** | 76 | 71 | |
|
| wafer | 99.5 | 98.5 | **99.7** | 98.9 | 99.4 | |
|
| CBF | **99.4** | 90.1 | 96 | 76.1 | 83 | |
|
| ElectricDevices | **70** | 64 | 64.6 | 55.2 | 50.6 | |
|
| MoteStrain | **80** | 74.6 | 77.4 | 70 | 68.1 | |
|
| TwoLeadECG | **90.1** | 80.1 | 84.7 | 63.3 | 65.8 | |
|
| ShapeletSim | 89.4 | 63.3 | **96.1** | 50 | 48.9 | |
|
| Cricket_Z | **76.7** | 61.5 | 73.1 | 45.9 | 39.7 | |
|
| Strawberry | 92.2 | 86.6 | **95.1** | 94.6 | 93.5 | |
|
| FordA | 93.1 | 81.3 | **93.6** | 91.3 | 91.4 | |
|
| Symbols | 87.6 | 81.8 | **93.6** | 86.4 | 69.4 | |
|
| MiddlePhalanxTW | **63.7** | 63.4 | 53.2 | 50.6 | 57.1 | |
|
| yoga | 77.5 | 73.6 | **83.4** | 67.2 | 69.1 | |
|
| Meat | **93.3** | 93.3 | 91.7 | 43.3 | 66.7 | |
|
| MedicalImages | 71.7 | 58.2 | **76.2** | 57.1 | 49.6 | |
|
| DistalPhalanxTW | **77.5** | 77 | 61.2 | 60.4 | 61.9 | |
|
| ProximalPhalanxOutlineCorrect | 81.1 | 79.7 | 85.6 | **86.9** | 80.1 | |
|
| Herring | **59.4** | 59.4 | 59.4 | 53.1 | 57.8 | |
|
| ToeSegmentation2 | 86.2 | 73.1 | **91.5** | 73.1 | 73.1 | |
|
| OSULeaf | **79** | 57 | 78.5 | 39.7 | 23.1 | |
|
| **Average Accuracy** | **81.6** | 73.2 | 80.1 | 66.1 | 68.2 | |
|
|
|
Our results show that FlaMinGo achieves competitive performance across diverse time-series classification tasks. It outperforms existing models in **13** classification tasks and achieves the **highest overall average accuracy** among all models. In most other cases, it delivers results comparable to the best-performing models. Since FlaMinGo has been fine-tuned on Persian financial data to improve forecasting capability, we also compared its forecasting performance against TimeSFM on crypto-related datasets we gathered. This evaluation provides insights into how fine-tuning affects the model's ability to predict financial trends. |
|
|
|
| **Dataset** | **MSE (pretrained)** | **MAE (pretrained)** | **MSE (fine-tuned)** | **MAE (fine-tuned)** | |
|
|----------------------------------------|:--------------------------------:|:--------------------------------:|:----------:|:------------:| |
|
| Crypto-1 | 1.93E-06 | 1.76E-04 | **1.24E-06** | **0.000144** | |
|
| Crypto-2 | 4.31E-06 | 2.43E-04 | **3.66E-06** | **0.000218** | |
|
| Crypto-3 | 7.36E-06 | 3.31E-04 | **6.54E-06** | **0.000307** | |
|
| Crypto-4 | 6.71 | 0.3 | **5.92** | **0.28** | |
|
| Crypto-5 | 7.26E-07 | 1.08E-04 | **6.68E-07** | **0.0001** | |
|
| Crypto-6 | 54028.91 | 29.82 | **40619.24** | **25.42** | |
|
| Crypto-7 | 0.19 | 0.0499 | **0.18** | **0.0458** | |
|
| Crypto-8 | 0.00181 | 0.00543 | **0.00168** | **0.00515** | |
|
| **Average Improvement** | | | **MSE: 14.88%** | **MAE: 9.74%** | |
|
|
|
|
|
|
|
|
|
These results demonstrate the effectiveness of fine-tuning on Persian financial data, improving the model’s adaptability to structured time-series patterns. **It is also worth noting** that the fine-tuned model was evaluated on cryptocurrency datasets, which pose greater complexity, achieving a **14.88% improvement in MSE** and a **9.74% improvement in MAE**, further showcasing its enhanced predictive performance. |
|
## Contact us |
|
|
|
If you have any questions regarding this model, you can reach us via the [community](https://huggingface.co/PartAI/FlaMinGo-timesfm/discussions) on Hugging Face. |