모델 평가 및 최적화 이해

Objective

After completing this lesson, you will be able to 결정 계수 메트릭을 사용하여 선형 회귀 모델의 성능을 평가합니다.

모델 평가

선형 회귀 모델을 평가하는 데 사용되는 모델 성능 메트릭은 결정 계수입니다. "R 제곱"으로 알려져 있으며, "R2" [ 1, 2 ] 로 표시됩니다.

R2는 기본적으로 독립 변수로부터 예측 가능한 응답 변수의 변동 비율입니다. 즉, R2 값이 클수록 더 많은 변동성이 모델에 의해 설명됩니다.

일반적으로 R2는 0부터 1까지 다양하지만 마이너스 값을 얻을 수 있는 경우가 있을 수 있습니다. 자세한 내용은 [1]을(를) 참조하십시오.

이 경우 R2점수 '0.75'를 달성한다.

Python
123456
#Computes the R2 score R2=hgr.score( test_hdf, key='ID', features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target') R2

출력:

0.7535287346593224

참조

[1] 결정 계수

[2] 결정 계수(결정 계수)

최적의 매개변수 검색으로 HGBT 모델 개선

HGBT 모델을 개선하기 위해 선형 회귀 오브젝트의 최적 매개변수 값 검색이 시작됩니다. ParamSearchCV는 crossover validation(CV) [1]을(를) 사용하여 지정된 매개변수 값에 대해 완전 또는 임의 검색을 수행합니다.

참조

[1] SAP algorithm hana_ml.algorithms.pal 패키지: ParamSearchCV

Python
123456789101112131415161718
from hana_ml.algorithms.pal.model_selection import ParamSearchCV hgbr=HybridGradientBoostingRegressor(n_estimators=50, subsample = 0.8, col_subsample_tree=0.7) ps_hgr3=ParamSearchCV(estimator=hgbr, search_strategy='grid', param_grid={ 'learning_rate': [0.05, 0.1, 0.025, 0.04, 0.01], 'max_depth': [4, 5, 6, 7, 8, 10], 'split_threshold': [0.1, 0.4, 0.7, 1], 'min_samples_leaf': [2,3,4,5,6], 'col_subsample_split': [0.2,0.4,0.6, 0.8] }, train_control={"fold_num": 10, "evaluation_metric": 'rmse'}, scoring='mae' ) ps_hgr3.set_scoring_metric('mae') ps_hgr3.set_resampling_method('cv') ps_hgr3.fit(data=train_hdf, features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target', key='ID')

최적화된 매개 변수 검사

최적화된 매개변수 이름(왼쪽에 표시됨)과 HybridGradientBoostingRegressor 매개변수 이름(오른쪽에 표시됨) 간의 매핑은 다음과 같이 제공됩니다.

  • MAX_DEPTH = max_depth
  • ETA = learning_rate
  • COL_SAMPLE_RATE_BYSPLIT = col_subsample_split
  • NODE_SIZE = min_samples_leaf
  • GAMMA = split_threshold
Python
1
ps_hgr3.estimator.selected_param_.collect()
 PARAM_NAMEINT_VALUEDOUBLE_VALUESTRING_VALUE
0MAX_DEPTH10.0NaN없음
1ETANaN0.1없음
2COL_SAMPLE_RATE_BYSPLITNaN0.6없음
3NODE_SIZE6.0NaN없음
4GAMMANaN0.1없음
Python
12
# Optimal parameter values selected hgbt_params = dict(n_estimators = 50, subsample = 0.8, col_subsample_tree=0.7, split_method = 'exact', fold_num=10, resampling_method = 'cv', evaluation_metric = 'rmse', ref_metric=['mae'], max_depth=10, learning_rate=0.1, col_subsample_split=0.6, min_samples_leaf=6, split_threshold=0.1)

모델 재훈련

모델 성능을 최대화하기 위해 새로 최적화된 알고리즘의 매개변수를 통합하려면 모델 재훈련이 필요합니다. 이러한 매개변수는 이전 섹션에서 가져온 것입니다.

Python
12345
%%time #retrain model with optimal parameters hgr_optimized = HybridGradientBoostingRegressor( **hgbt_params ) hgr_optimized.fit(train_hdf, features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target')

CPU 시간: 사용자 4.18ms, 시스템: 2.36ms, 총계: 6.55ms

벽 시간: 2.19초

출력:

<hana_ml.algorithms.pal.trees.HybridGradientBoostingRegessor at 0x7fe333c01e10>

모델 재훈련됨: 기능 중요도

기능 중요도는 응답 또는 종속 변수 [1]을(를) 예측할 때 기여도에 따라 입력 기능에 점수를 지정합니다.

기능에 대한 점수가 높을수록 대상 변수를 예측하기 위해 모델에 미치는 영향이 커집니다. 중요도 점수가 [0, 1] 범위 내에 있습니다.

모델 재훈련됨: 기능 중요도 평가

초기 "훈련된 모델"과 비교하여 가장 영향력있는 특징이 '0.34'의 중요도 값 감소와 함께 'MedInc'로 남아 있음을 관찰할 수 있습니다(이전 값은 '0.51'임). 이 기능은 블록 그룹의 중간 소득을 나타냅니다. [2].

흥미롭게도 '위도'와 '경도'는 각각 3위와 5위(초기 "모델 트레이닝됨")에서 두 번째와 세 번째로 영향력 있는 특징이 된다. 사실, 그들은 '0.10'의 가치를 넘어서 약 2 배 더 영향력이되었다.

향상된 모델은 이전에 생각했던 것보다 지리적 위치가 대상 변수에 더 강한 영향을 미친다는 것을 더 정확하게 강조할 수 있습니다. 'target' 변수는 California 지구 [2]의 'Median House Value'입니다.

Python
1
hgr_optimized.feature_importances_.sort('IMPORTANCE', desc='TRUE').collect()
 VARIABLE_NAMEIMPORTANCE
0MedInc0.340796
1경도0.216604
2위도0.153428
3AveOccup0.116022
4AveRooms0.097980
5가구 연령0.036293
6인구0.019592
7AveBedrms0.019286

참조

[1] SAP algorithm hana_ml.pal 패키지: HybridGradientBoostingRegressor

[2] 캘리포니아 하우징 데이터세트 내역

모델 재교육: 모델 평가

"모델 평가" 섹션에 설명된 대로 선형 회귀 모델의 성능을 평가하기 위해 일반적으로 R 제곱, R2로 표시되는 결정 계수가 사용됩니다[1, 2].

R2는 독립 변수로 설명되는 응답 변수의 변동 비율을 측정합니다. R2 값이 높을수록 모델에서 더 큰 변동 비율을 설명함을 나타냅니다.

R2 값은 일반적으로 0 ~ 1 범위이지만 경우에 따라 음수 값이 발생할 수 있습니다. 자세한 내용은 [1]을(를) 참조하십시오.

이 경우, 강화된 모델은 0.829의R2 점수를 달성하는데, 이는 0.079의 증가를 나타내는 초기 점수인 0.75의 향상이다.

Python
123456
#Computes the R2 score R2=hgr_optimized.score( test_hdf, key='ID', features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target') R2

출력:

0.7535287346593224

참조

[1] 결정 계수

[2] 결정 계수(결정 계수)