2017-12-29 39 views
1

회귀 분석을 위해 ML 패키지를 사용하고 있으며 데이터에 대해 좋은 결과를 얻습니다. 내가 지금 여기의 예에서 제안하는 일을하고있어, 지금과 같이 한 번에 여러 측정을 얻으려고 :다중 회귀 측정 지표를 한 번에 가져 오기

val evaluator = new RegressionEvaluator() 
    .setLabelCol("label") 
    .setPredictionCol("prediction") 
    .setMetricName("rmse") 
val rmse = evaluator.evaluate(predictions) 

: https://spark.apache.org/docs/2.1.0/ml-classification-regression.html

기본적으로 예제 코드는 이것이다 이것은 나에게 괜찮 내 테스트 데이터에 대한 RMSE를 제공하지만, 나 또한 내가 이렇게 여기에 문서를 보았다 MSE, MAE, MAPE, R² 및 Q² 에 관심이 있어요 :

https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/ml/evaluation/RegressionEvaluator.html#metricName%28%29

어디서 RMSE, MSE, MAE 및 R²를 얻을 수 있는지 알 수 있지만 예제 코드가 필요하다고 제안 할 때 데이터 행을 한 번만 처리하고 5 번이 아닌 한꺼번에 계산할 수는 없습니다 그렇게하려면.

어떻게이 단일 단계 계산을 수행 할 수 있습니까?

그런 다음 MAPE 및 Q²가 누락되었습니다. 계산 된 값을 4 개 계산하는 동안 이상적으로 계산할 수있는 방법은 무엇입니까? RegressionEvaluator에 대한 소스 코드를 보면 감사

답변

0

, 나는 그것이, 지금 MultivariateStatisticalSummary

의 사용을 통해 한 번에 모든 통계를 계산하는 RegressionMetrics 개체를 만드는에서 더보고에 의해 구현되는 것을 발견 Q²는 유효성 검증 세트에서 단지 R²라는 것을 이해할 수 있었기 때문에 원래의 코드는 제가 다룰 수있었습니다. MultivariateStatisticalSummary에게 주어진

그러나 MAPE에 대한

, 두 용어는 충분하지 않았다, 그래서 나는이 같은 새로운 추가했다 :

if (observation != 0) 
    math.abs(observation - prediction)/observation 
else 
    0 

을 그리고 MAPE는 이것이다 :

def meanAbsolutePercentageError: Double = { 
    summary.mean(2) 
} 

이제는 모든 메트릭스가 필요하고, MultivariateStatisticalSummary을 사용하기 때문에 데이터 세트가 한 번만 처리된다고 확신합니다.