| 51 | } |
| 52 | |
| 53 | float Variance(const LeafStat& stats, int output) { |
| 54 | if (stats.weight_sum() == 0) { |
| 55 | return 0; |
| 56 | } |
| 57 | const float e_x = |
| 58 | stats.regression().mean_output().value(output).float_value() / |
| 59 | stats.weight_sum(); |
| 60 | const auto e_x2 = |
| 61 | stats.regression().mean_output_squares().value(output).float_value() / |
| 62 | stats.weight_sum(); |
| 63 | return e_x2 - e_x * e_x; |
| 64 | } |
| 65 | |
| 66 | float TotalVariance(const LeafStat& stats) { |
| 67 | float sum = 0; |
no test coverage detected