Normalizacja danych – PHP-ML

balance-865089_1920Normalizacja to proces skalowania pojedynczych próbek w celu otrzymania małego, specyficznego przedziału. Przykładowo przekształcamy dane wejściowe w taki sposób, aby mieściły się w przedziale [-1, 1] lub [0, 1].

Normalizacja to po prostu metoda uzyskania wszystkich danych na tej samej skali: jeżeli wartości różnych danych są szalenie różne, może to mieć negatywny efekt na zdolność uczenia się (w zależności od wybranej metody). Zapewnienie znormalizowanych danych pozwoli dobrze wyważyć wartości i zabezpieczy przed nieoczekiwanymi efektami.

W bibliotece PHP-ML zaimplementowałem dwie metody normalizacji:

Norma L1

Matematyczne wyjaśnienie: http://mathworld.wolfram.com/L1-Norm.html

use Phpml\Preprocessing\Normalizer;

$samples = [
    [1, -1, 2],
    [2, 0, 0],
    [0, 1, -1],
];

$normalizer = new Normalizer(Normalizer::NORM_L1);
$normalizer->preprocess($samples);

Dane po przetworzeniu:

$samples = [
   [0.25, -0.25, 0.5],
   [1.0, 0.0, 0.0],
   [0.0, 0.5, -0.5],
];

 

Norma L2

Matematyczne wyjaśnienie: http://mathworld.wolfram.com/L2-Norm.html

use Phpml\Preprocessing\Normalizer;

$samples = [
    [1, -1, 2],
    [2, 0, 0],
    [0, 1, -1],
];

$normalizer = new Normalizer();
$normalizer->preprocess($samples);

Dane po przetworzeniu:

$samples = [
  [0.4, -0.4, 0.81],
  [1.0, 0.0, 0.0],
  [0.0, 0.7, -0.7],
];

 

L1 vs L2

Różnice pomiędzy normą L1 i L2, opisane bardziej dokładnie: http://www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/



Więcej w PHP
Uzupełnianie brakujących wartości – PHP-ML

Z różnych powodów, wiele zestawów danych ze świata rzeczywistego, zawiera brakujących wartości, często oznaczone jako puste pola, nulle lub inne...

Zamknij