SAP HANA PAL로 회귀 모델 훈련

Objective

After completing this lesson, you will be able to 회귀를 위한 HGBT(Hybrid Gradient Boosting Tree) 알고리즘의 기능을 살펴봅니다.

주택 가격의 PAL 회귀 모델 훈련

SAP HANA용 Python 기계 학습 클라이언트(hana-ml)는 다음 항목에 대한 액세스를 제공합니다.

  • Predictive Analysis Library(PAL)의 모든 함수
  • Python의 Automated Predictive Library(APL) 함수

이 함수는 SAP HANA DataFrame과 함께 입력 데이터로 사용할 수 있습니다.

입력 데이터세트 준비 중

이 알고리즘은 입력 데이터세트를 훈련, 테스트, 유효성 확인이라는 세 개의 분리된 하위 세트로 무작위로 분할합니다. 이러한 하위 세트는 기계 학습 워크플로우를 실행하는 데 중요합니다.

입력 데이터세트에는 분할 알고리즘 [1]에 따라 이러한 파티션을 생성하기 위한 'ID' 열이 포함되어야 합니다. 'ID' 열이 명시적으로 지정되지 않은 경우 알고리즘은 DataFrame의 첫 번째 열에 'ID'가 있다고 가정합니다. 자세한 내용은 [1]을(를) 참조하십시오.

데이터세트에 'ID' 열을 삽입하는 방법은 다음과 같습니다.

Python
1
hdf_input = hdf.add_id(id_col='ID')
Python
1
hdf_input.head(5).collect()
출력:
 IDMedInc가구 연령AveRoomsAveBedrms인구AveOccup위도경도대상
011.2452.02.920.91396.04.6537.80-122.275.00
121.1652.02.430.941349.05.3937.87-122.255.00
237.8552.07.791.05517.02.4137.86-122.245.00
349.3952.07.510.951366.02.7537.85-122.245.00
457.8752.08.281.04947.02.6237.83-122.235.00

입력 데이터세트 분할

위의 각 하위 집합에 대해 최적 분할 백분율이 없습니다. 예측 프로젝트의 목표에 부합하는 분할 비율을 선택해야 합니다.

예를 들어, 공통 파티션 비율에는 다음이 포함됩니다.

  • 교육: 80%/테스트: 20%
  • 교육: 70%/테스트: 30%
  • 교육: 60%/테스트: 40%

이 경우 모델 훈련을 위한 데이터 양을 최대화해야 하며 강력한 모델 평가를 위해 충분한 데이터 포인트를 남겨 두어야 합니다. 따라서 제안되는 데이터 분할은 다음과 같습니다.

교육: 70%/테스트: 30%

분할 알고리즘의 입력 매개변수는 다음과 같습니다.

Python
12345678
# Partitioning the input data into train, test, validation sub-sets from hana_ml.algorithms.pal.partition import train_test_val_split regressdata_hdf=hdf_input.select('ID', 'MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude', 'Target') train_hdf, test_hdf, val_hdf = train_test_val_split(data=regressdata_hdf, id_column='ID', random_seed=2, partition_method='random', training_percentage = 0.7, testing_percentage = 0.3, validation_percentage = 0.0) print(regressdata_hdf.select_statement)

출력:

SELECT "ID", "MedInc", "HouseAge", "AveRooms", "AveBedrms", "Population", "AveOccup", "Latitude", "Longitude", "Target" FROM (SELECT CAST(ROW_NUMBER() OVER() AS INTEGER) + 0 AS "ID", * FROM (SELECT * FROM "ML_DEMO").california_housing") AS "DT_269"

HGBT(Hybrid Gradient Boosting Tree) 모델 훈련

PAL 하이브리드 그레이디언트 부스팅 트리(HGBT) 알고리즘 [1]은 혼합 기능 유형(연속 및 범주형)을 입력으로 지원하는 HANA 최적화 그레이디언트 부스팅 트리 구현입니다. 회귀와분류 시나리오를 지원합니다.

회귀에 대한 하이브리드 그레이디언트 부스팅 모델은 아래 표시된 훈련 하위 세트를 기반으로 훈련됩니다.

Code Snippet
123456789101112
HybridGradientBoostingRegressor %%time hgr = HybridGradientBoostingRegressor( n_estimators = 20, split_threshold=0.75, split_method = 'exact', learning_rate=0.3, max_depth=2, resampling_method = 'cv', fold_num=5, evaluation_metric = 'rmse', ref_metric=['mae'] ) hgr.fit(train_hdf, features=['ID', 'MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target')

CPU 시간: 사용자 4.81ms, sys: 408 μs, 총계: 5.22 ms

벽 시간: 633 ms

출력:

<hana_ml.algorithms.pal.trees.HybridGradientBoostingRegressor at 0x7f3333e9510>

참조

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

기능 중요도

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

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

모델의 기능 중요도를 확인하는 방법은 다음과 같습니다.

가장 영향력 있는 특징은 'MedInc'이며, 중요도 값은 '0.51'인 것으로 관측된다. 이 기능은 블록 그룹의 중간 소득을 나타냅니다. "블록 그룹은 미국이 사용하는 가장 작은 지리적 단위입니다. Census Bureau publishes sample data" [2].

더욱이 3위와 5위에서는 각각 '위도'와 '경도'의 특징을 찾을 수 있다. 각각의 중요도 값은 '0.09'와 '0.05'입니다.

Python
1
hgr.feature_importances_.sort('IMPORTANCE', desc='TRUE').collect()
 VARIABLE_NAMEIMPORTANCE
0MedInc0.513025
1ID0.230721
2위도0.097631
3AveOccup0.085743
4경도0.057718
5AveRooms0.011069
6가구 연령0.004093
7AveBedrms0.000000
8인구0.000000

참조

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

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