File size: 4,361 Bytes
4cba5e1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# ๐ŸŒŠ 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.* ๐Ÿ‡ฎ๐Ÿ‡ฉ