GithubHelp home page GithubHelp logo

6th-solution-data-battle-kemenkeu-ri's Introduction

Data Battle Kemenkeu RI - Penerimaan Negara II - Manajemen Risiko Layanan Kepabeanan

Kemenkeu Logo

Konteks Kompetisi

Konteks kompetisi ini berkisar pada manajemen risiko dalam layanan kepabeanan guna mengamankan penerimaan negara dari sektor bea dan cukai. Manajemen risiko yang efisien sangat penting untuk penyelenggaraan layanan kepabeanan. Pembagian barang impor menjadi merah untuk risiko tinggi hingga hijau untuk risiko rendah diyakini dapat meningkatkan efektivitas dan efisiensi proses pemeriksaan barang yang masuk ke dalam daerah pabean. Kemampuan yang memadai dalam mengelompokkan dan/atau mengklasifikasikan transaksi impor ke dalam kategori risiko sangat diperlukan dalam proses bisnis ini. Kegagalan dalam menerapkan metode yang tepat untuk mengelompokkan dan/atau mengklasifikasikan transaksi impor dapat berdampak pada rendahnya tingkat efektivitas dan efisiensi proses pemeriksaan barang. Pada kasus ini, peserta diminta untuk mengembangkan model klasifikasi berdasarkan data historis yang diberikan, kemudian menerapkan model yang telah dilatih untuk mengklasifikasikan dataset yang telah diberikan. Penilaian dilakukan dengan mengukur tingkat akurasi hasil prediksi dibandingkan dengan nilai aktual. Pemenang dipilih dari peserta dengan nilai prediksi yang memiliki tingkat akurasi paling tinggi.

Fitur Data

Field Definisi
DocsDate Tanggal Dokumen Impor
HSCODE Kode Sistem Harmonis, 4 digit. Definisi Umum, Pengenalan
CountryOfOrigin Negara Asal Barang
Using_Intermediaries Apakah kegiatan impor dilakukan secara mandiri oleh Wajib Pajak atau dengan bantuan pihak ketiga (PPJK). 1 = Menggunakan Intermediaries, 0 = Tidak menggunakan Intermediaries
Using_TradeAgreement Apakah kegiatan impor memanfaatkan fasilitas perjanjian perdagangan antar negara. 1 = Menggunakan Trade Agreement, 0 = Tidak menggunakan Trade Agreement
CustChannel Jalur Impor dari DJBC (Direktorat Jenderal Bea dan Cukai)
ImportDuty Penerimaan Pajak dari kegiatan Impor

Pendekatan yang saya lakukan

Disini pada awalnya saya sudah mencoba untuk melakukan modeling dengan xgboost+hyperparameter optuna, tetapi disini pendekatan yang digunakan masih sangatlah sederhana dengan hanya melakukan preprocessing seperti encode fitur kategorik tanpa mencoba menggali insight untuk menambah fitur baru (as simple as that 😁). The result? Well, ini sudah bagus untuk menjadi baseline dimana didapatkan hasil public score sbg berikut: 0.90982. More surprising when see that the private score lebih bagus, dengan acc -> 0.91038, But yah dengan score acc seperti itu, di leaderboard saya masih terseok seok dengan rank 30an πŸ˜“, at the end of competition with score like that we can only ranked 50th++ hehe.

Feature Engineering

Setelah membaca baca beberapa case tentang ekonomi dsb, saya mendapatkan ide untuk mencreate beberapa fitur baru berdasarkan dari fitur yang telah disediakan oleh panitia penyelenggara. Adapun workflow yang saya lakukan adalah sbg berikut.

[

Feature Engineering

Pertanyaanya Apakah dengan fitur seperti itu dan modeling yang sama score yang didapat increase? Oh tentu saja, disini nilai acc naik di angka 0.92579. Perlahan rank juga naik ke 20an (😊senyum bangga wkwk), di acc score 0.92 ini saya belum menambah fitur engineering untuk HSCODE dengan mengenerate HSCODE_Category dan Industry_Category. Setelah melakukan beberapa trial n error menggunakan beberapa teknik ensembling, voting dll didapat stacking menjadi pendekatan terbaik dimana disaat melakukan stacking hanya dengan model baseline XGBOOST dan LGBM nilai acc juga meningkat dengan score 0.94262. Akhirnya setelah memutuskan untuk melakukan modeling dengan pendekatan stacking, saya mencoba untuk melakukan hyperparameter pada setiap algoritma baik XGBOOST, LGBM dan meta classifier Logit. Hasilnya? Alhamdulillah lagi lagi memuaskan disini dengan score 0.94836 (yah altough naiknya ga signifikan).
[IDEA HSCODE]
Hari berganti hari.... 🧨DUARRR, disini saya mencoba menggali informasi lebih lanjut dengan menonton video course dari KEMENKEU learning center-PKN STAN, dan mendapatkan ide dari klasifikasi HSCODE dari wikipedia -> https://en.wikipedia.org/wiki/Harmonized_System. Saya mencoba untuk submit...dannnn Alhamdulillah lagi lagi score increase di 0.95296 , btw ini h-2 finish compe (honestly saya udah seneng dengan hasil tsb sampe saya ss wkwkwk)

Rank 14

Dihari ini juga saya mencoba untuk mencoba tujuh baseline model berbasis tree dan boosting, mulai dari ExtraTree, GBT, AdaBoost, LightGBM, Decision Tree, Random Forest, serta HistGradBoost. Disini ternyata 4 model teratas yang didapat adalah ExtraTree, RandomForest, Xgboost, LGBM. So, dengan trial tsb saya memutuskan untuk menambah model stacking saya dengan 2 algoritma teratas yaitu ExtraTree dan RandomForest. Hasilnya? skarang ga naik wkwkwk πŸ˜‚, nilai masih sama di angka 0.95an

Feature Selection

Last Day....Hari ini sebenarnya lebih ke eksplorasi lebih lanjut saja mengenai data karena untuk modeling saya rasa sudah stuck disitu situ saja, kalaupun increase tidak bisa signifikan. Disini saya memutuskan untuk tidak menggunakan seluruh fitur ke fase modeling, hal yang dilakukan tentu saja melakuka feature selection, disini saya ada mencoba menggunakan beberapa teknik Wrapper seperti Recursive Feature Elimination serta filtering dengan corr analysis serta Information Gain (Entropy), pada akhirnya disaat melakukan trial n error pendekatan terbaik jatuh ke teknik SHAP (SHapley Additive exPlanations), untuk visualisasinya seperti berikut.

Shap

Dimana 8 fitur terpenting disini Using_intermediaries, HSCODE, CountryOfOrigin, Valuta_CIF, Trade_duration, CIF, Category serta Day. Setelah proses model selection tsb, Alhamdulillah finally score increase lagi kali ini di angka 0.96693. Di leaderboard juga merengsek naik ke top 10.

top10

Oiya untuk penjelasan lebih lanjut mengenai shap bisa dibaca disini:

Modeling

Untuk modeling yang dilakukan sebenarnya disini saya sudah banyak melakukan exploring berbagai model mulai dari yang sederhana dengan linear model sampai yang sedikit "heavy" seperti MLP. Seiring berjalanya waktu dan berbagai trial&error yang dilakukan model terbaik datang dari boosting & tree based model. Saya juga mencoba memanfaatkan library LazyPredict dan mendapatkan hasil yang sama yaitu model terbaik untuk data ini adalah menggunakan pendekatan boosting&tree. Di submission awal awal saya sempat untuk melakukan submit dengan model tertinggi yaitu XGBOOST saja tetapi hasil akurasinya juga tidak begitu baik, akhirnya di submission berikutnya saya mencoba untuk menggunakan teknik ensembling seperti Voting dan Stacking, setelah beberapa kali mencoba melakukan submit lagi hasil dari algoritma ensemble stacking memiliki akurasi yang lebih baik dibanding pendekatan voting. Long story short akhirnya saya memutuskan untuk melakukan modeling dengna melakukan ensemble stacking 4 model dengan performa terbaik yaitu ExtraTree Classifier, RandomForest Classifier, XGBClassifier, serta LGBMClassifier dengan dikombinasikan oleh meta classifiernya adalah Logistic Regression. (oiya disini saya juga memanfaatkan package optuna untuk melakukan hyperparameter tuning di setiap base modelnya)

top10

Simple code
stacking_model = StackingClassifier(
    estimators=[('etc', etc_model), ('rfc', rf_model), ('xgb', xgb_model), ('lgb', lgb_model)],
    final_estimator=LogisticRegression(**logit_params),
    stack_method='auto', 
)

Performance Evaluation

top10

Classification Report:
              precision    recall  f1-score   support

           0       0.97      0.99      0.98     83999
           1       0.86      0.70      0.77      4084
           2       0.86      0.70      0.77      3910

    accuracy                           0.97     91993
   macro avg       0.90      0.80      0.84     91993
weighted avg       0.96      0.97      0.96     91993

Dari classification report tersebut kita dapat melihat evaluasi model klasifikasi yang telah dibangun dimana Model memiliki tingkat presisi (precision) tinggi untuk kelas 0 (97%), tetapi lebih rendah untuk kelas 1 (86%) dan kelas 2 (86%). Lalu untuk tingkat recall (sensitivitas) model tinggi untuk kelas 0 (99%), tetapi lebih rendah untuk kelas 1 (70%) dan kelas 2 (70%). Hal yang sama tentunya juga di F1-score yang mengukur keseimbangan antara precision dan recall. Kinerja F1-score lebih rendah untuk kelas 1 (77%) dan kelas 2 (77%) dibandingkan kelas 0 yang menyentuh (98%). Hal ini tentunya didasarkan dari ketidakseimbangan kelas yang dimiliki, terlihat pada kolom support dimana instance aktual dari setiap kelas dalam test data, kelas 0 jauh lebih banyak dibanding dua kelas lain. And then finally didapat akurasi dari keseluruhan model yang telah dibangun adalah 97%. πŸ’

Private Leaderboard, apa kabar??!! 😁

top10

Alhamdulillah Improve...
Sekian yaakk yang makasih yang udah baca baca. Semoga bermanfaat Aamiin... πŸ™

6th-solution-data-battle-kemenkeu-ri's People

Contributors

ridwenddev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.