# 예측 중 SHAP 데이터 집합 생성

예측을 실행할 때 SHAP importance 데이터 집합이 생성될 수 있습니다. 이러한 데이터 집합에서 SHAP 계산을 사용하면 어떤 기능이 예측 값에 가장 중요한 기여를 하는지 이해할 수 있습니다.

SHAP 데이터 집합에는 모델 교육에 사용되는 기능에 대한 행 수준 SHAP 계산이 포함되어 있습니다. 이러한 값은 해당 행의 다른 모든 기능을 고려하여 각 기능이 대상의 예측 값에 얼마나 기여하는지 나타냅니다.

예를 들어, SHAP 중요성은 특정 기능이 고객 이탈 가능성을 높이는지 여부와 해당 기능이 해당 결과에 얼마나 큰 영향을 미치는지 알려줄 수 있습니다.

예측을 실행하고 데이터 집합을 생성한 경우 SHAP 값을 Qlik Sense 응용 프로그램에 로드하고 예측 값과 함께 시각화할 수 있습니다. 자세한 내용은 [Qlik Sense 응용 프로그램에서 SHAP 값 시각화](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-values.htm) 및 [실제 응용 프로그램에서 SHAP 값 사용](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-applications.htm)를 참조하십시오.

이 도움말 항목은 ML 배포에 의한 예측 중 SHAP 데이터 집합 생성에 중점을 둡니다. 실험 교육 중에 표시되는 SHAP importance 차트에 대한 자세한 내용은 [실험 교육에서 SHAP importance 이해](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-importance.htm)를 참조하십시오.

정보 메모시계열 모델을 사용한 예측 중에는 SHAP 데이터 집합을 생성할 수 없습니다.

## SHAP 데이터 집합 생성에 사용할 수 있는 옵션

예측을 구성할 때 두 가지 형식으로 SHAP 데이터 집합을 생성하도록 선택할 수 있습니다. 두 옵션 모두 동일한 정보를 제공하지만 구조는 서로 다릅니다.

### SHAP

이는 SHAP 값이 각 기능에 대해 하나의 열로 분리된 데이터 집합입니다. 다중클래스 분류 모델에는 이 옵션을 사용할 수 없습니다.

### 좌표 SHAP

이는 모든 SHAP 값이 '기능' 열과 '값' 열이라는 두 개의 열에만 포함되도록 구성된 데이터 집합입니다. 이 옵션은 모든 모델 유형에 사용할 수 있습니다.

다중 클래스 모델의 데이터 집합은 이진 모델의 데이터 집합과 약간 다르게 작동합니다. 예측할 각 레코드의 경우 모델에서 예측할 수 있는 가능한 각 클래스의 SHAP 값이 포함된 새 행이 만들어집니다. 데이터 집합에는 SHAP 값이 나타내는 클래스를 식별하기 위한 추가 열도 만들어집니다.

예측 및 SHAP 값을 Qlik Sense 응용 프로그램에 로드하고 데이터 모델을 생성할 때, 좌표 SHAP 데이터 집합은 SHAP 데이터 집합보다 작업하기가 더 쉬울 수 있습니다.

### 예

다음 표에는 5가지 기능에 대해 교육된 회귀 모델에서 생성된 SHAP 및 좌표 SHAP 데이터 집합의 샘플이 포함되어 있습니다. 샘플에는 적용 데이터 집합의 두 레코드(두 개의 계정 ID에 해당)에 대한 SHAP 값이 포함되어 있습니다.

이 예에서는 데이터 구성 방식의 차이점을 강조 표시합니다.

SHAP dataset sample

| AccountID | AdditionalFeatureSpend\_SHAP | Churned\_SHAP | CurrentPeriodUsage\_SHAP | HasRenewed\_SHAP | NumberOfPenalties\_SHAP |
| --- | --- | --- | --- | --- | --- |
| aa16889 | 1.76830971241 | -0.58154511451721 | -1.106874704361 | -0.36080026626587 | 3.6597540378571 |
| aa33396 | 0.80359643697739 | -0.64805734157562 | 0.076582334935665 | 0.38967734575272 | -0.31007811427116 |

Coordinate SHAP dataset sample

| AccountID | automl\_feature | SHAP\_value |
| --- | --- | --- |
| aa16889 | AdditionalFeatureSpend | 1.76830971241 |
| aa16889 | Churned | -0.58154511451721 |
| aa16889 | CurrentPeriodUsage | -1.106874704361 |
| aa16889 | HasRenewed | -0.36080026626587 |
| aa16889 | NumberOfPenalties | 3.6597540378571 |
| aa33396 | AdditionalFeatureSpend | 0.80359643697739 |
| aa33396 | Churned | -0.64805734157562 |
| aa33396 | CurrentPeriodUsage | 0.076582334935665 |
| aa33396 | HasRenewed | 0.38967734575272 |
| aa33396 | NumberOfPenalties | -0.31007811427116 |

## SHAP 예측 값 해석

실험 교육 중에 표시되는 SHAP importance 차트의 값과 달리, SHAP 데이터 집합에는 방향성이 있는 행 수준 SHAP 계산이 포함되어 있습니다. 즉, 절대값이 아니라 양수 또는 음수가 될 수 있습니다. 응용 프로그램에서 값을 시각화할 때 사용 사례에 따라 절대값으로 집계하도록 선택할 수 있습니다.

레코드의 SHAP 값은 해당 레코드의 해당 예측 값과 관련하여 분석되어야 합니다. 모델 유형(이진 분류, 다중 클래스 분류 또는 회귀)에 따라 SHAP 값의 방향성은 약간 다르게 해석되어야 합니다.

### 분류 모델

이진 분류 모델의 경우 양수 SHAP 값이 크면 두 가지 가능한 결과 중 하나에 더 큰 영향이 있음을 나타내고, 음수 값이 높으면 다른 결과에 더 큰 영향이 있음을 나타냅니다. 응용 프로그램에서 데이터를 사용할 때 SHAP 값의 방향성으로 인해 필요한 분석이 허용되지 않을 수 있습니다. 이 문제를 해결하려면 SHAP 값의 방향을 반대로 하면 됩니다(예: 전체 열에 -1을 곱함). SHAP 방향 확인에 대한 자세한 내용은 [준비](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-values.htm#Preparat)을 참조하십시오.

다중 클래스 모델의 SHAP 데이터 집합은 다르게 구성됩니다. 예측할 각 레코드에는 해당 클래스에 해당하는 SHAP 값과 함께 가능한 각 클래스에 대한 별도의 행이 포함됩니다. 이 클래스는 'Predicted\_class' 열에 지정됩니다.

좌표 SHAP 데이터 집합에서 다중 클래스 모델 예측의 SHAP 값을 다음과 같이 해석합니다.

* 양수 SHAP 값이 높으면 해당 기능이 지정된 'Predicted\_class' 결과에 더 큰 영향을 미치고 있음을 나타냅니다.

* 음수 SHAP 값이 높으면 해당 기능이 'Predicted\_class'이 지정되지 않은 결과에 더 큰 영향을 미치고 있음을 나타냅니다.

#### 예제

다음 예에서는 이진 분류 모델 출력과 다중 클래스 분류 모델 출력 간의 데이터 집합 구조 차이를 보여 줍니다.

계정 ID당 하나의 행이 포함된 적용 데이터 집합로 시작한다고 가정해 보겠습니다. 모델이 교육되는 각 기능은 별도의 열로 표시됩니다.

단일 계정 ID 레코드는 다음과 같습니다.

Single record from a dataset on which predictions will be generated

| AccountID | AdditionalFeatureSpend | BaseFee | CurrentPeriodUsage | HasRenewed | NumberOfPenalties |
| --- | --- | --- | --- | --- | --- |
| aa16889 | 18 | 33.52 | 210.1 | yes | 4 |

Churned 필드의 결과를 예측하기 위해 이진 분류 모델을 교육시키는 경우 '예' 또는 '아니요'라는 두 가지 결과가 나올 수 있습니다. 위의 단일 계정 ID 레코드를 기반으로 이 레코드의 좌표 SHAP 데이터 집합은 다음과 같습니다.

Sample from coordinate SHAP dataset for binary classification model prediction

| AccountID | automl\_feature | SHAP\_value |
| --- | --- | --- |
| aa16889 | AdditionalFeatureSpend | -0.049129267835076 |
| aa16889 | BaseFee | -1.5363064624041 |
| aa16889 | CurrentPeriodUsage | 0.10787960191299 |
| aa16889 | HasRenewed | 1.2441783315923 |
| aa16889 | NumberOfPenalties | 2.3803616183224 |

위 표에는 단일 계정 ID에 대한 SHAP 값이 표시되어 있으며 기능별로 분류되어 있습니다. 각 기능에 대해 새 행이 만들어지고 각 기능에는 SHAP 값이 할당됩니다. 이러한 SHAP 값의 방향과 규모는 두 가지 가능한 결과와 관련하여 평가되어야 합니다. 이상적으로 SHAP 값이 높을수록 기능이 긍정적인 해석(이 경우 '예')으로 결과에 많은 영향을 미치게 됩니다. 이 표현이 반대로 바뀌면 SHAP 값의 방향을 반대로 바꿔(-1을 곱함) 분석을 더 쉽게 해석할 수 있습니다.

비교하기 위해, 범주형 PlanType 필드(4가지 가능한 결과 - 'Blue Plan', 'Green Plan', 'Purple Plan' 및 'Red Plan')를 예측하기 위해 다중 클래스 분류 모델을 학습한다고 가정해 보겠습니다. 첫 번째 테이블의 단일 계정 ID 레코드를 기반으로 이 레코드의 좌표 SHAP 데이터 집합은 다음과 같습니다.

Sample from coordinate SHAP dataset for multiclass classification model prediction

| AccountID | automl\_feature | Predicted\_class | SHAP\_value |
| --- | --- | --- | --- |
| aa16889 | AdditionalFeatureSpend | Blue Plan | 0.004155414339679 |
| aa16889 | AdditionalFeatureSpend | Green Plan | 0.0066376343942741 |
| aa16889 | AdditionalFeatureSpend | Purple Plan | -0.014411468558894 |
| aa16889 | AdditionalFeatureSpend | Red Plan | 0.003618419824941 |
| aa16889 | BaseFee | Blue Plan | 0.089301017079318 |
| aa16889 | BaseFee | Green Plan | 0.28876498452748 |
| aa16889 | BaseFee | Purple Plan | 0.055689421438434 |
| aa16889 | BaseFee | Red Plan | -0.43375542304524 |
| aa16889 | CurrentPeriodUsage | Blue Plan | -0.0040098954629816 |
| aa16889 | CurrentPeriodUsage | Green Plan | -0.27902537442842 |
| aa16889 | CurrentPeriodUsage | Purple Plan | -0.21871561841248 |
| aa16889 | CurrentPeriodUsage | Red Plan | 0.50175088830388 |
| aa16889 | HasRenewed | Blue Plan | -0.011878031228962 |
| aa16889 | HasRenewed | Green Plan | 0.036835618725654 |
| aa16889 | HasRenewed | Purple Plan | 0.13798314881109 |
| aa16889 | HasRenewed | Red Plan | -0.16294073630778 |
| aa16889 | NumberOfPenalties | Blue Plan | 0.20519095034486 |
| aa16889 | NumberOfPenalties | Green Plan | 0.0015682625647107 |
| aa16889 | NumberOfPenalties | Purple Plan | -0.084355421853302 |
| aa16889 | NumberOfPenalties | Red Plan | -0.12240379105627 |

위 표에서 단일 계정 ID는 20개의 별도 행으로 표시됩니다. 즉, 각 기능에 대한 행이 하나 있고, 대상에서 가능한 각 결과에 해당하는 SHAP 값에 대한 행이 있습니다. Predicted\_class 열은 예측할 수 있는 결과(클래스)를 나타내며, 반드시 예측 데이터 집합에 표시되는 실제 예측 결과일 필요는 없습니다. 궁극적으로 SHAP 값이 가장 높은 클래스가 레코드의 예측 값이 됩니다.

이 표의 SHAP 값은 지정된 기능(automl\_feature)이 지정된 클래스(Predicted\_class)일 수 있는 결과에 미치는 영향을 측정한 것입니다. 양수 값이 크면 기능이 지정된 클래스가 될 것으로 예측된 결과에 큰 영향을 미친다는 것을 나타내고, 음수 값이 크면 기능이 지정된 클래스가 아닐 것으로 예측되는 결과에 큰 영향을 미친다는 것을 나타냅니다.

### 회귀 모델

회귀 모델에서 생성된 SHAP 데이터 집합에서는 SHAP 값의 방향을 해석하기가 더 간단합니다.

* 양수 SHAP 값은 행에 대한 예측 값의 증가에 해당합니다.

* 음수 SHAP 값은 행에 대한 예측 값의 감소에 해당합니다.

## SHAP 값의 계산

SHAP 값은 다양한 알고리즘에 대해 계산됩니다. SHAP importance는 두 가지 고유한 방법을 사용하여 계산됩니다.

* 트리 SHAP: 트리 모델의 SHAP 값을 추정하는 빠르고 정확한 방법

* 선형 SHAP: 선형 모델에 대한 SHAP 값을 계산하는 방법

모델 유형 및 SHAP 계산 방법별로 사용할 수 있는 알고리즘

| 알고리즘 | 지원되는 모델 유형 | SHAP 계산 방법 |
| --- | --- | --- |
| 임의 포리스트 분류 | 이진 분류, 다중 클래스 분류 | 트리 SHAP |
| XGBoost 분류 | 이진 분류, 다중 클래스 분류 | 트리 SHAP |
| LightGBM 분류 | 이진 분류, 다중 클래스 분류 | 트리 SHAP |
| Catboost 분류 | 이진 분류, 다중 클래스 분류 | 트리 SHAP |
| 로지스틱 회귀 | 이진 분류, 다중 클래스 분류 | 선형 SHAP |
| Lasso 회귀 | 이진 분류, 다중 클래스 분류 | 선형 SHAP |
| Elastic Net 회귀 | 이진 분류, 다중 클래스 분류 | 선형 SHAP |
| 가우시안 나이브 베이즈(Gaussian Naive Bayes) | 이진 분류, 다중 클래스 분류 | SHAP 계산되지 않음 |
| Catboost 회귀 | 회귀 | 트리 SHAP |
| LightGBM 회귀 | 회귀 | 트리 SHAP |
| 선형 회귀 | 회귀 | 선형 SHAP |
| 임의 포리스트 회귀 | 회귀 | 트리 SHAP |
| SGD 회귀 | 회귀 | 선형 SHAP |
| XGBoost 회귀 | 회귀 | 트리 SHAP |