Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΡΡΠ±Π΅ΠΊΠ° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΠ’Π‘ ΠΠ°Π½ΠΊΠ°. ΠΡΠ»ΠΈ Π΄Π°Π½Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΎΡΠ΄Π΅ΠΌΡ. Π£ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π±ΡΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ MCC ΠΊΠΎΠ΄Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ "Π³ΡΡΠ·Π½Π°Ρ" ΡΡΡΠΎΠΊΠ° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΡΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΄Π°ΠΆ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΎΡΡΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ².
ΠΠ° Π²ΡΠ΅ΠΌΡ Ρ Π°ΠΊΠ°ΡΠΎΠ½Π° ΠΌΡ ΡΡΠΏΠ΅Π»ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π²ΡΡ ΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ Π΄Π»Ρ MCC/merchant_nm. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π±ΡΠ»ΠΈ Π²Π·ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ·Π»Π°ΠΉΠ½Ρ EASE, SLIM, MultiVAE. ΠΠ°Π»ΡΡΠ΅ ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ»ΠΈΡΡ Ρ ΡΠΎΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎ MCC/ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°ΠΌ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π» Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΉ Π±ΡΡΡΠΈΠ½Π³ (ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ).
ΠΠ°Π½Π½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ 80%/10%/10% Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ/Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ/ΡΠ΅ΡΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π’Π°ΠΊ ΠΌΡ ΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
ΠΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΉ Π±ΡΡΡΠΈΠ½Π³ ΠΎΠ±ΡΡΠ΅Π½ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°Π½Ρ ΠΏΠΎ ΡΠ΅ΡΡΡ. ΠΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠΈ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π½ΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΉ Π±ΡΡΡΠΈΠ½Π³. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°/mcc-ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ (ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ).
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² ΠΏΠ°ΠΏΠΊΡ Data Π΄Π°ΡΠ°ΡΠ΅ΡΡ train_1.csv, train_2.csv.
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΌΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ΅ΡΠ΅Π· docker. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π· ΡΠ΅ΡΠ΅Π· Dockerfile ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ
chmod +x docker.sh
./docker.sh
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ΄. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² Π½ΡΠΆΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΠΎΡΠΎΠΌ ΠΎΠ±ΡΡΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ
cd src
python3 process_data.py --item_col=mcc --nrows=1000000
python3 train_models.py --item_col=mcc
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠΈΠΌ Π΄Π»Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ²
python3 process_data.py --item_col=merchant --nrows=1500000
python3 train_models.py --item_col=merchant
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π² ΠΏΠ°ΠΏΠΊΠ΅ Data/artifacts ΠΏΠΎΡΠ²ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ c Π²Π΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ
python3 get_predictions.py --transaction_path=PATH1
ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π»ΡΡΡΠ΅ΠΉ MCC ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠ»ΠΎΠΆΠ΅Π½Ρ ΡΡΠ΄Π° Data/predictions.csv.gz.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ»Π»Π°Π±ΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ MultiVAE ΡΠΌΠ΅Π΅Ρ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠΉ, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΠΎΠ΅ API, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Ρ MCC-ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠΎΠ²Π΅ΡΡΠ°Π» ΠΏΠΎΠΊΡΠΏΠΊΠΈ. ΠΠ½ΡΡΡΠΈ Π΄ΠΎΠΊΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ
uvicorn app:app --host 0.0.0.0 --port 8000 --reload
Π ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ²Π΅ΡΡΠ°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°Ρ . 10 (litres) ΠΈ 61 - Π²Π½ΡΡΡΠ΅Π½ΠΈΠ΅ Π°ΠΉΠ΄ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ²
http://127.0.0.1:8000/merchant_recommendations/?q=10__18
ΠΠ»Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ:
http://127.0.0.1:8000/category_recommendations/?q=5411__5897
- ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ΅ΡΠ΅ SASRec
- ΠΠΎΠ΄Π±ΠΈΡΠ°ΡΡ Π³ΠΈΠΏΠ΅ΡΠΏΠ°ΡΠΌΠ΅ΡΡΡ Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΠ΅ΡΠ΅Π· Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΅ΠΎ