3.3.3
Transformasi Yeo-Johnson
<p><b>Transformasi Yeo-Johnson</b> merupakan perluasan dari transformasi Box-Cox yang menormalkan skewness sekaligus <em>dapat diterapkan pada data yang mengandung nol maupun bilangan negatif</em>.</p>
Definisi #
Untuk sebuah observasi (y) dan parameter daya (\lambda), transformasi Yeo-Johnson (T_\lambda(y)) didefinisikan sebagai berikut:
$$ T_\lambda(y)= \begin{cases} \dfrac{(y + 1)^\lambda - 1}{\lambda}, & y \ge 0,\ \lambda \ne 0,\\\\ \log(y + 1), & y \ge 0,\ \lambda = 0,\\\\ -\dfrac{(1 - y)^{2 - \lambda} - 1}{2 - \lambda}, & y < 0,\ \lambda \ne 2,\\\\ -\log(1 - y), & y < 0,\ \lambda = 2. \end{cases} $$- Jika (\lambda = 1) hasilnya sama seperti data awal.
- Nilai positif diperlakukan seperti transformasi Box-Cox pada (y + 1).
- Nilai negatif direfleksikan terhadap nol sehingga transformasi tetap monoton meskipun tanda berubah.
- Transformasi balik disediakan SciPy melalui
scipy.stats.yeojohnson_inverse.
Estimasi (\lambda) biasanya dilakukan dengan memaksimumkan log-likelihood (MLE) dari data yang telah ditransformasikan. Fungsi yeojohnson_normmax pada SciPy mengembalikan estimasi ini.
I. Yeo dan R. A. Johnson, “A New Family of Power Transformations to Improve Normality or Symmetry”, Biometrika 87(4), 2000.
Contoh penggunaan #
| |

| |

Setelah transformasi, histogram menjadi jauh lebih simetris. Karena kita menyimpan nilai (\lambda), parameter tersebut dapat dipakai kembali untuk data validasi atau pengujian:
| |
Tips praktis #
- Lakukan standarisasi tambahan (
StandardScaler,RobustScaler, dsb.) bila model membutuhkan fitur yang terpusat dan ter-skala. - Hitung (\lambda) hanya dengan data pelatihan kemudian terapkan ke seluruh split lain agar tidak terjadi kebocoran informasi.
- Jika ekor distribusi masih berat, kombinasikan dengan skala robust untuk mengurangi pengaruh outlier.
Transformasi Yeo-Johnson dapat menjadi pengganti langsung Box-Cox pada pipeline praproses yang tidak dapat menjamin seluruh nilai positif.