MCordingley\Regression\Algorithm\GradientDescent\MiniBatch::calculateGradient PHP 메소드

calculateGradient() 보호된 메소드

protected calculateGradient ( Observations $observations, array $coefficients ) : array
$observations MCordingley\Regression\Observations
$coefficients array
리턴 array
    protected function calculateGradient(Observations $observations, array $coefficients) : array
    {
        $gradient = array_fill(0, count($observations->getObservation(0)->getFeatures()), 0.0);
        $batchElementIndices = (array) array_rand(range(0, count($observations) - 1), $this->batchSize);
        foreach ($batchElementIndices as $index) {
            $observation = $observations->getObservation($index);
            $observationGradient = $this->gradient->gradient($coefficients, $observation->getFeatures(), $observation->getOutcome());
            foreach ($observationGradient as $i => $observationSlope) {
                $gradient[$i] += $observationSlope / $this->batchSize;
            }
        }
        return $gradient;
    }