POSEIDON / Phase_4 /README.md
JullMol's picture
Initial commit: Uploading POSEIDON Pipeline (Phase 0 & Phase 4)
4cba5e1 verified
|
Raw
History Blame Contribute Delete
4.36 kB
# ๐ŸŒŠ POSEIDON: Phase 4
โšก Output Modeling & Conformal Prediction โšก
![Python](https://img.shields.io/badge/Python-3.10%2B-blue) ![LightGBM](https://img.shields.io/badge/LightGBM-4.0%2B-brightgreen) ![XGBoost](https://img.shields.io/badge/XGBoost-2.0%2B-blue) ![Hugging Face](https://img.shields.io/badge/Hugging%20Face-Ready-yellow)
Sistem berbasis **Machine Learning (Positive-Unlabeled Learning)** untuk memprioritaskan target patroli *IUU (Illegal, Unreported, and Unregulated) Fishing* menggunakan citra radar satelit (Sentinel-1 SAR) di wilayah WPP-711 (Laut Natuna Utara).
[Features](#-features) โ€ข [Installation](#-installation--usage) โ€ข [Architecture](#%EF%B8%8F-architecture) โ€ข [Contributors](#-contributors)
---
## ๐ŸŽฏ Overview
Bagian **Phase 4** dari *pipeline* analitik mutakhir **POSEIDON (Patrol Oriented SAR Enabled IUU Detection Over Indonesian Natuna)** berisi hasil akhir pemodelan AI untuk memberantas penangkapan ikan ilegal. Model ini mendeteksi anomali pada kapal-kapal "gelap" (tanpa sinyal AIS) dengan mengintegrasikan 18 fitur dari 4 dimensi:
- ๐Ÿ›ฐ๏ธ **Karakteristik Fisik Radar** - Intensitas, pantulan sinyal, dan estimasi panjang kapal.
- ๐Ÿ—บ๏ธ **Konteks Spasial & Regulasi** - Kedekatan dengan kawasan konservasi (MPA), batas ZEE, dan pos pelabuhan.
- ๐Ÿ“ก **Status Identitas AIS** - *Matching score* antara deteksi radar dan kapal terdaftar.
- โณ **Pola Temporal** - Histori kerawanan lokasi dan tingkat kepadatan area dengan aktivitas gelap.
Sistem ini didesain menggunakan metode **Hybrid nnPU (non-negative Positive-Unlabeled) Stacking (LightGBM + XGBoost)** dan dievaluasi menggunakan kerangka **Conformal Prediction** untuk memberikan jaminan keyakinan secara operasional (meminimalkan *False Alarms*).
---
## โœจ Features
### ๐Ÿง  Advanced AI Modeling
- **Positive-Unlabeled Learning (nnPU)** - Memanfaatkan data penindakan resmi (*Seizure*) sebagai label *Positive* dan deteksi sisa radar sebagai *Unlabeled*.
- **Hybrid Ensemble** - Menggabungkan keandalan **LightGBM** dan **XGBoost** ke dalam satu arsitektur *stacking*.
- **Conformal Calibration** - Mengkonversi keluaran skor mentah menjadi rentang probabilitas operasional yang ketat.
### ๐Ÿ“Š Comprehensive Datasets
- **150,000+ Detections** - Seluruh data deteksi satelit SAR yang telah diproses untuk proses training.
- **18 Engineered Features** - Pemrosesan mendalam secara spasial (*haversine distances*) dan temporal.
### โšก Ready for Hugging Face
- Model disiapkan menjadi 3 *Fold* untuk masing-masing LightGBM dan XGBoost guna menangani *variance*.
- Dataset disuguhkan dalam format `.parquet` yang sangat terkompresi.
---
## ๐Ÿ—๏ธ Architecture
| Komponen | Teknologi | Tanggung Jawab |
| --- | --- | --- |
| **Pipeline Data** | Pandas, GeoPandas, Numpy | Pemrosesan spasial, manipulasi atribut temporal |
| **Model ML** | LightGBM, XGBoost, Scikit-learn | *Positive-Unlabeled inference*, Metrik Evaluasi (AUPRC, AUC) |
| **Penyimpanan** | Hugging Face Hub, Parquet | Repository, efisiensi ukuran model *weights* |
---
## ๐Ÿš€ Installation & Usage
### 1. Download Repository
Karena folder ini menyimpan Model *Weights* dan Data pada **Fase 4 (Modeling & Export)**, Anda dapat me-*load*-nya dengan mudah.
```bash
# Clone repository ini (sesuaikan dengan link Hugging Face repo Anda nantinya)
git clone https://huggingface.co/JullMol/POSEIDON
cd POSEIDON/Phase_4
```
### 2. Menjalankan *Inference*
Gunakan *script* Python di bawah untuk memuat model dan membuat prediksi pada dataset baru:
```python
import lightgbm as lgb
import xgboost as xgb
import pandas as pd
# Load Dataset
dataset = pd.read_parquet('sar_labeled.parquet')
# Load Model LightGBM (Fold 0)
lgb_model = lgb.Booster(model_file='lgb_model_0.txt')
# Load Model XGBoost (Fold 0)
xgb_model = xgb.Booster(model_file='xgb_model_0.json')
# Tentukan fitur model sesuai pipeline POSEIDON
features = ['length_m', 'fishing_score', 'dist_to_eez_boundary_km', ...]
# Lakukan Prediksi
preds_lgb = lgb_model.predict(dataset[features])
print(preds_lgb)
```
---
## ๐Ÿ‘จโ€๐Ÿ’ป Contributors
Dipersembahkan oleh Tim Mahasiswa dari **Universitas Negeri Surabaya**:
- **Faishal Muflih Irfanu Tsaqib**
- **Daffa Ahmad Pangreksa**
- **Dimas Rafi Izzulhaq**
*Dibuat untuk mendukung penjagaan kedaulatan maritim dan kelestarian sumber daya laut Indonesia.* ๐Ÿ‡ฎ๐Ÿ‡ฉ