Пример #1
0
 /**
  * @param array $coefficients
  * @param array $features
  * @param float $outcome
  * @return array
  */
 public function gradient(array $coefficients, array $features, float $outcome) : array
 {
     $gradient = [];
     $baseGradient = $this->gradient->gradient($coefficients, $features, $outcome);
     for ($i = 0; $i < count($baseGradient); $i++) {
         $penalty = $i || !$this->ignoreFirst ? $this->lambda * pow(abs($coefficients[$i]), $this->level - 1) : 0.0;
         $gradient[] = $baseGradient[$i] + $penalty;
     }
     return $gradient;
 }