Metadata-Version: 2.4
Name: binboost
Version: 0.1.1
Summary: Gradient Boosting Berbasis Aturan Logika Adaptif untuk Fitur Biner
Author: BinBoost Authors
License: MIT
Keywords: gradient boosting,logical rules,binary features,interpretable machine learning
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.21.0
Requires-Dist: pandas>=1.3.0
Dynamic: author
Dynamic: license-file
Dynamic: requires-python

# BinBoost

**Gradient Boosting Berbasis Aturan Logika Adaptif untuk Fitur Biner**

BinBoost adalah algoritma klasifikasi gradient boosting yang membangun ensemble aturan logika murni (AND, OR, XOR) dengan binarisasi fitur numerik adaptif berbasis gradien pada setiap iterasi boosting. Setiap weak learner berupa aturan yang dapat dibaca langsung oleh manusia tanpa memerlukan alat bantu penjelasan pasca-pelatihan.

## Kebaruan Utama

- **Binarisasi adaptif berbasis gradien**: nilai ambang batas fitur numerik dicari per iterasi untuk memaksimalkan korelasi dengan gradien saat ini
- **Ensemble aturan logika murni**: tidak ada pohon keputusan, setiap weak learner adalah aturan seperti `(A AND B)` atau `(C OR D)`

## Instalasi

```bash
pip install binboost
```

## Penggunaan Dasar

```python
import numpy as np
from binboost import BinBoost

X = np.array([[1, 0, 1], [0, 1, 0], [1, 1, 0], [0, 0, 1]], dtype=float)
y = np.array([1, 0, 1, 0])

model = BinBoost(n_estimators=50, learning_rate=0.1, max_rule_length=2)
model.fit(X, y)

print(model.predict(X))
print(model.predict_proba(X))
print(model.rules_)

import pandas as pd
print(pd.DataFrame(model.rule_summary_))
```

## Hyperparameter Utama

| Parameter | Bawaan | Keterangan |
|---|---|---|
| `n_estimators` | 100 | Jumlah iterasi boosting |
| `learning_rate` | 0.1 | Faktor penyusutan tiap aturan |
| `loss` | `'logistic'` | Fungsi loss: `'logistic'`, `'focal'`, `'poly'` |
| `max_rule_length` | 2 | Jumlah maksimum fitur dalam satu aturan |
| `operators` | `['AND','OR']` | Operator logika yang digunakan |
| `beam_width` | 5 | Lebar beam search |
| `binarize_strategy` | `'gradient'` | Strategi binarisasi: `'gradient'`, `'quantile'`, `'uniform'`, `'kmeans'` |
| `subsample` | 0.8 | Fraksi data per iterasi |
| `feature_selection_threshold` | 0.01 | Ambang batas seleksi fitur berbasis gradien |

## Fitur yang Didukung

- Fitur biner (0/1): langsung diproses
- Fitur numerik (int/float): dibinarisasi otomatis
- Fitur kategorikal 3+ kelas: wajib OneHotEncode terlebih dahulu

```python
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(sparse_output=False, drop='first')
X_encoded = enc.fit_transform(X[['kolom_kategorikal']])
```

BinBoost secara otomatis mendeteksi kelompok fitur OneHotEncoding dan mencegah aturan yang tidak masuk akal seperti `(Warna_Merah AND Warna_Biru)`.

## Atribut Setelah Pelatihan

```python
model.rules_               # daftar teks aturan
model.rule_weights_        # bobot setiap aturan
model.feature_importances_ # skor kepentingan fitur
model.train_score_         # loss per iterasi
model.rule_summary_        # ringkasan lengkap atau konversi ke DataFrame
model.n_rules_             # jumlah aturan aktif
model.feature_usage_       # frekuensi penggunaan tiap fitur
```

## Lisensi

MIT
