

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 훈련 전 데이터 편향
<a name="clarify-detect-data-bias"></a>

알고리즘 편향, 차별, 공정성 및 관련 주제는 법률, 정책 및 컴퓨터 과학과 같은 여러 분야에서 연구되어 왔습니다. 컴퓨터 시스템이 특정 개인 또는 개인 집단에 차별적인 경우 이는 편향된 것으로 간주될 수 있습니다. 이러한 애플리케이션을 구동하는 기계 학습 모델은 데이터를 통해 학습하며, 이 데이터는 차이 또는 기타 내재된 편향을 반영할 수 있습니다. 예를 들어, 훈련 데이터가 다양한 인구 집단을 충분히 반영하지 못하거나 편향된 레이블을 포함하고 있을 수 있습니다. 이러한 편향을 나타내는 데이터세트로 훈련된 기계 학습 모델은 결국 이러한 편향을 학습한 다음 예측 시 같은 편향을 재현하거나 심지어 악화시킬 가능성도 있습니다. 기계 학습 분야는 ML 수명 주기의 각 단계에서 편향을 탐지하고 측정하여 이를 해결할 수 있는 기회를 제공합니다. Amazon SageMaker Clarify를 사용하면 모델 훈련에 사용되는 데이터가 편향을 인코딩하는지 여부를 확인할 수 있습니다.

훈련 전과 훈련 후에 편향을 측정하고, 추론을 위해 엔드포인트에 모델을 배포한 후 기준과 비교하면서 모니터링하는 것이 가능합니다. 훈련 전 편향 지표는 데이터를 모델 훈련 용도로 사용하기 전에 원시 데이터의 편향을 감지하고 측정하도록 설계되었습니다. 이 때 사용되는 지표는 모델 출력에 의존하지 않으므로 모델에 구애받지 않습니다. 그러나 공정성의 개념은 여러 가지가 있기 때문에 고유한 편향의 측정값이 필요합니다. Amazon SageMaker Clarify는 다양한 공정성 기준을 정량화할 수 있는 편향 지표를 제공합니다.

편향 지표에 대한 추가 정보는 [Learn How Amazon SageMaker Clarify Helps Detect Bias](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias) 및 [Fairness Measures for Machine Learning in Finance](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)를 참조하세요.

## 편향과 공정성과 관련한 Amazon SageMaker Clarify 용어
<a name="clarify-bias-and-fairness-terms"></a>

Amazon SageMaker Clarify는 편향과 공정성을 논의하기 위해 다음과 같은 용어를 사용합니다.

**기능**  
관찰 대상인 현상의 측정 가능한 개별 속성 또는 특성을 테이블 형식에 맞는 열에 포함시킨 데이터를 말합니다.

**레이블**  
기계 학습 모델의 훈련 대상이 되는 특징을 말합니다. 이를 관찰된 레이블 또는 관찰된 결과라고 합니다.****

**예측 레이블**  
모델에 의해 예측된 레이블을 말합니다. 예측된 결과라고도 합니다.**

**샘플**  
특징 값과 레이블 값으로 설명되는 관찰된 객체로서, 테이블 형식 데이터를 위한 행에 포함됩니다.

**데이터세트**  
여러 샘플이 모인 데이터를 말합니다.

**편향**  
연령이나 소득 계층과 같은 다양한 그룹에 걸쳐 발생하게 되는 훈련 데이터 또는 모델 예측 행동 상의 불균형을 말합니다. 편향은 모델 학습에 사용된 데이터 또는 알고리즘으로 인해 발생할 수 있습니다. 예를 들어 ML 모델이 주로 중년 개인의 데이터를 기반으로 훈련되는 경우, 청년층과 노년층을 대상으로 예측을 수행할 때는 정확도가 떨어질 수 있습니다.

**편향 지표**  
잠재적 편향의 수준을 나타내는 수치값을 반환하는 함수를 말합니다.

**편향 리포트**  
주어진 데이터세트 또는 데이터세트와 모델의 조합에 대한 편향 지표를 모은 자료를 말합니다.

**긍정적인 레이블 값**  
샘플에서 관찰 대상 인구 집단에 유리하게 나타난 레이블 값을 말합니다. 즉, 샘플에서 긍정적인 결과가 확인되었다고 지정하는 것입니다.**

**부정적인 레이블 값**  
샘플에서 관찰 대상 인구 집단에 불리하게 나타난 레이블 값을 말합니다. 즉, 샘플에서 부정적인 결과가 확인되었다고 지정하는 것입니다.**

**그룹 변수**  
조건부 인구통계학적 차이(CDD) 측정을 위한 부분군을 형성하는 데 사용되는 데이터세트의 범주형 열을 말합니다. 심슨의 역설과 관련하여 이 CDD 지표에만 필요합니다.

**패싯**  
편향이 측정되는 대상과 관련된 속성을 포함하고 있는 열 또는 특징을 말합니다.

**패싯 값**  
편향에 의한 유리함 또는 불리함이 발생할 수 있는 속성의 특징 값을 말합니다.

**예측 확률**  
모델이 수행한 예측에 따라 샘플이 긍정적이거나 부정적인 결과를 가질 확률을 말합니다.

## 샘플 노트북
<a name="clarify-data-bias-sample-notebooks"></a>

Amazon SageMaker Clarify는 편향 감지와 관련하여 다음과 같은 샘플 노트북을 제공합니다.
+ [Explainability and bias detection with Amazon SageMaker Clarify](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html) – SageMaker Clarify를 사용하여 편향을 감지하고 특성 속성을 통해 모델 예측을 설명하기 위한 처리 작업을 생성합니다.

이 노트북은 Amazon SageMaker Studio에서만 실행이 검증되었습니다. Amazon SageMaker Studio에서 노트북을 여는 방법에 대한 지침이 필요한 경우, [Amazon SageMaker Studio Classic 노트북 만들기 또는 열기](notebooks-create-open.md)섹션을 참조하세요. 커널을 선택하라는 메시지가 표시되면, **Python 3(데이터 과학)**를 선택합니다.

**Topics**
+ [편향과 공정성과 관련한 Amazon SageMaker Clarify 용어](#clarify-bias-and-fairness-terms)
+ [샘플 노트북](#clarify-data-bias-sample-notebooks)
+ [훈련 전 편향 지표](clarify-measure-data-bias.md)
+ [SageMaker Studio에서 훈련 전 데이터의 편향에 대한 보고서 생성](clarify-data-bias-reports-ui.md)

# 훈련 전 편향 지표
<a name="clarify-measure-data-bias"></a>

ML 모델의 편향 측정은 편향 완화를 위해 필요한 첫 번째 단계입니다. 편향에 대한 각각의 측정값은 공정성에 대한 서로 다른 개념에 해당합니다. 공정성에 대한 개념을 단순하게 고려하더라도 다양한 상황에서 서로 다른 측정값이 적용될 수 있습니다. 예를 들어, 연령대와 관련한 공정성 문제에서, 단순화를 위해 중년 및 나머지 연령대가 2개의 관련 인구 집단(이를 패싯이라고 함)이라고 가정해 보겠습니다.** 대출에 관한 ML 모델이라면, 중소기업 대출이 두 인구 집단 모두에 동일한 수만큼 승인되기를 원할 수 있습니다. 또는 구직 지원자를 처리할 때 각 인구 집단에서 고용된 구성원 수가 같아야 하는 경우가 생길 수 있습니다. 그러나 이 접근법에서는 두 연령대 모두가 같은 수만큼 해당 직장에 지원할 것이라고 가정될 여지가 있으므로, 지원자 수에 조건을 적용하는 것이 좋습니다. 더 나아가, 동일한 인원 수가 지원하는지 여부가 아니라 적격 지원자의 수가 같은지 여부를 고려하는 것이 필요할 수도 있습니다. 또는 두 연령대 모두에서 적격 지원자의 합격률이 같은지 여부 또는 지원자 불합격률이 같은지 여부, 또는 둘 다를 기준으로 공정성을 고려할 수도 있습니다. 관심 속성에 대해 서로 비율이 다른 데이터가 포함된 데이터세트를 사용하는 경우도 있을 수 있습니다. 이러한 불균형으로 인해 선택한 편향 측정값이 혼동될 가능성이 있습니다. 모델이 패싯을 분류할 때 대상마다 정확성이 다르게 나타날 가능성도 있습니다. 따라서 적용 분야와 상황에 개념적으로 적합한 편향 측정법을 선택해야 합니다.

편향 지표에 대해 설명하기 위해 다음 표기법을 사용합니다. 여기서 설명하는 개념적 모델은 바이너리 분류를 위한 것으로, 이 모델에서는 해당 샘플 공간에서 가능한 이벤트의 결과가 두 종류뿐인 것으로 레이블이 지정되며, 이를 양수(값 1)및 음수(값 0)라고 합니다. 이 프레임워크는 일반적으로 간단한 방법을 통해 멀티카테고리 분류로 확장하거나 필요 시에는 연속형 출력 값을 가지는 경우에도 활용될 수 있습니다. 바이너리 분류를 수행하는 경우, 유리한 패싯 *a*와 불리한 패싯 *d*에 대해 원시 데이터세트에 기록된 결과에 양수 및 음수 레이블이 할당됩니다. 이러한 레이블 y는 ML 수명 주기의 훈련 또는 추론 단계를 거치면서 기계 학습 모델에 의해 할당되는 예측된 레이블 y'와 구분짓기 위해 관찰된 레이블이라고 부릅니다.**** 이들 레이블은 각각의 패싯 결과에 대한 확률 분포 Pa(y)와 Pd(y)를 정의하는 데 사용됩니다.
+ 레이블 
  + y는 훈련 데이터세트에서의 이벤트 결과에 대해 관찰된 n개의 레이블을 나타냅니다.
  + y'는 훈련된 모델이 데이터세트에서 관찰한 n개의 레이블에 대해 예측된 레이블을 나타냅니다.
+ 결과:
  + 샘플에 대한 긍정적인 결과(값 1)(예: 신청 승인)
    + n(1)은 긍정적인 결과(승인)에 대해 관찰된 레이블의 수입니다.
    + n'(1)은 긍정적인 결과(승인)에 대해 예측된 레이블의 수입니다.
  + 샘플에 대한 부정적인 결과(값 0)(예: 신청 거부).
    + n(0)은 부정적인 결과(거부)에 대해 관찰된 레이블의 수입니다.
    + n'(0)은 부정적인 결과(거부)에 대해 예측된 레이블의 수입니다.
+ 패싯 값:
  + 패싯 *a* - 유리하게 편향되는 인구 집단을 정의하는 특징 값입니다.
    + na은 유리한 패싯 값에 대해 관찰된 레이블의 수입니다: na = na(1) \$1 na(0) 패싯값 *a*에 대해 관찰된 양수 및 음수 레이블의 합계.
    + n’a은 유리한 패싯 값에 대해 예측된 레이블의 수입니다: n’a = n’a(1) \$1 n’a(0) 패싯값 *a*에 대해 예측된 양수 및 음수 결과 레이블의 합계. 참고로 an' = na입니다.
  + 패싯 *d* - 불리하게 편향되는 인구 집단을 정의하는 특징 값입니다.
    + nd은 불리한 패싯 값에 대해 관찰된 레이블의 수입니다: nd = nd(1) \$1 nd(0) 패싯값 *d*에 대해 관찰된 양수 및 음수 레이블의 합계.
    + n’d은 불리한 패싯 값에 대해 예측된 레이블의 수입니다: n’d = n’d(1) \$1 n’d(0) 패싯값 *d*에 대해 예측된 양수 및 음수 결과 레이블의 합계. 참고로 dn' = nd입니다.
+ 레이블이 지정된 패싯 데이터 결과의 결과값에 대한 확률 분포:
  + Pa(y)는 패싯 *a*에 대해 관찰된 레이블의 확률 분포입니다. 바이너리 레이블이 지정된 데이터의 경우, 이 분포는 전체 수에 대해 긍정적인 결과로 레이블이 지정된 패싯 *a*의 샘플 수의 비율인 Pa(y1) = na(1)/ na과 전체 수에 대해 부정적인 결과가 나온 샘플 수의 비율인 Pa(y0) = na(0)/ na에 의해 제공됩니다.
  + Pd(y)는 패싯 *d*에 대해 관찰된 레이블의 확률 분포입니다. 바이너리 레이블이 지정된 데이터의 경우, 이 분포는 전체 수에 대해 긍정적인 결과로 레이블이 지정된 패싯 *d*의 샘플 수인 Pd(y1) = nd(1)/ nd과 전체 수에 대해 부정적인 결과가 나온 샘플 수의 비율인 Pd(y0) = nd(0)/ nd에 의해 제공됩니다.

인구통계학적 차이에 의해 편향된 데이터를 기반으로 훈련된 모델은 이를 학습하고 심지어 악화시킬 수도 있습니다. SageMaker Clarify는 데이터를 기반으로 모델을 훈련시키는 데 리소스를 소비하기 전에 데이터의 편향을 식별할 수 있도록 훈련 전에 원시 데이터세트에서 계산이 가능한 데이터 편향 지표를 제공합니다. 모든 훈련 전 지표는 모델 출력에 의존하지 않아서 모든 모델에 대해 유효하므로 모델에 구애받지 않게 됩니다. 첫 번째 편향 지표는 패싯 불균형을 조사하지만 결과는 조사하지 않습니다. 이는 훈련 데이터가 응용 분야에서 원하는 방향대로 다양한 패싯을 어느 정도까지 반영하고 있는지를 결정합니다. 나머지 편향 지표는 데이터의 패싯 *a*와 *d*에 대한 결과 레이블의 분포를 다양한 방식으로 비교합니다. 지표의 범위가 음수 값보다 큰 경우 음의 편향을 감지할 수 있습니다. 다음 표에는 빠른 지침을 위한 치트 시트와 훈련 전 편향 지표에 대한 링크가 포함되어 있습니다.

훈련 전 편향 지표


| 편향 지표 | 설명 | 예시 질문 | 지표 값의 해석 | 
| --- | --- | --- | --- | 
| [클래스 불균형(CI)](clarify-bias-metric-class-imbalance.md) | 서로 다른 패싯 값 사이의 멤버 수 불균형을 측정합니다. |  중년 연령층 이외의 인구 집단에 대한 데이터가 충분하지 않아 연령에 따른 편향이 발생할 수 있나요?  |  정규화된 범위: [-1,\$11] 해석: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [레이블 비율의 차이(DPL)](clarify-data-bias-metric-true-label-imbalance.md) | 여러 패싯 값 사이에서 긍정적인 결과의 불균형을 측정합니다. | 데이터 내 패싯 값의 편향된 레이블 지정으로 인해 ML 예측에 연령에 따른 편향이 발생할 수 있나요? |  정규화된 바이너리 및 멀티카테고리 패싯 레이블의 범위: [-1, \$11] 연속형 레이블의 범위: (-∞, \$1∞) 해석: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [쿨백-라이블러 발산(KL)](clarify-data-bias-metric-kl-divergence.md) | 여러 패싯의 결과 분포가 서로 엔트로피적으로 얼마나 발산되는지 측정합니다. | 인구 집단별로 대출 신청 결과에 대한 분포가 얼마나 다른가요? |  바이너리, 멀티카테고리, 연속형의 범위: [0, \$1∞) 해석: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [젠슨-섀넌 발산(JS)](clarify-data-bias-metric-jensen-shannon-divergence.md)  | 여러 패싯의 결과 분포가 서로 엔트로피적으로 얼마나 발산되는지 측정합니다. | 인구 집단별로 대출 신청 결과에 대한 분포가 얼마나 다른가요? |  바이너리, 멀티카테고리, 연속형의 범위: [0, \$1∞) 해석: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Lp-norm(LP)](clarify-data-bias-metric-lp-norm.md)  | 데이터세트 내의 다양한 패싯과 관련된 결과의 서로 다른 인구통계학적 분포 간의 p-norm 차이를 측정합니다. | 인구 집단별로 대출 신청 결과에 대한 분포가 얼마나 다른가요? |  바이너리, 멀티카테고리, 연속형의 범위: [0, \$1∞) 해석: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [총 변동 거리(TVD)](clarify-data-bias-metric-total-variation-distance.md)  | 데이터세트 내의 다양한 패싯과 관련된 결과의 서로 다른 인구통계학적 분포 간의 L1-norm 차이의 절반을 측정합니다. | 인구 집단별로 대출 신청 결과에 대한 분포가 얼마나 다른가요? |  바이너리, 멀티카테고리, 연속형 결과의 범위: [0, \$1∞) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [콜모고로프-스미르노프(KS)](clarify-data-bias-metric-kolmogorov-smirnov.md)  | 데이터세트 내의 서로 다른 패싯에 대한 분포에서 결과 간의 최대 발산 정도를 측정합니다. | 인구 집단별 대학 지원 결과값의 차이가 가장 큰 결과는 무엇입니까? | 바이너리, 멀티카테고리 및 연속형 결과의 KS 값 범위: [0,\$11][\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html) | 
| [조건부 인구통계학적 차이(CDD)](clarify-data-bias-metric-cddl.md)  | 전체적으로 서로 다른 패싯 간의 결과 차이를 측정하지만 부분군별로도 측정합니다. | 일부 그룹의 대학 입시 결과에서 불합격 비율이 합격 비율보다 더 높은가요? |  CDD의 범위: [-1, \$11] [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 

편향 지표에 대한 자세한 내용은 [Fairness Measures for Machine Learning in Finance](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)를 참조하세요.

**Topics**
+ [클래스 불균형(CI)](clarify-bias-metric-class-imbalance.md)
+ [레이블 비율의 차이(DPL)](clarify-data-bias-metric-true-label-imbalance.md)
+ [쿨백-라이블러 발산(KL)](clarify-data-bias-metric-kl-divergence.md)
+ [젠슨-섀넌 발산(JS)](clarify-data-bias-metric-jensen-shannon-divergence.md)
+ [Lp-norm(LP)](clarify-data-bias-metric-lp-norm.md)
+ [총 변동 거리(TVD)](clarify-data-bias-metric-total-variation-distance.md)
+ [콜모고로프-스미르노프(KS)](clarify-data-bias-metric-kolmogorov-smirnov.md)
+ [조건부 인구통계학적 차이(CDD)](clarify-data-bias-metric-cddl.md)

# 클래스 불균형(CI)
<a name="clarify-bias-metric-class-imbalance"></a>

클래스 불균형(CI) 편향은 데이터세트의 다른 패싯 *a*에 비해 패싯값 *d*에 훈련 샘플의 수가 상대적으로 적을 때 발생합니다. 이는 모델이 작은 패싯을 희생하면서 큰 패싯을 우선적으로 적합시킴에 따라 패싯 *d*의 훈련 오차가 더 커질 수 있기 때문입니다. 또한 모델은 크기가 작은 데이터세트를 과적합시킬 위험이 높으며, 이로 인해 패싯 *d*의 테스트 오차가 더 커질 수도 있습니다. 기계 학습 모델을 주로 중년 개인의 데이터(패싯 a)를 기반으로 훈련시키는 경우를 가정해보면, 청년층과 노년층을 대상으로 예측했을 때(패싯 d)는 정확도가 떨어질 수 있습니다.

(정규화된) 패싯 불균형 측정의 공식:

        CI = (na - nd)/(na \$1 nd)

여기서 na은 패싯 *a*의 멤버 수이고 nd은 패싯 *d*의 멤버 수입니다. 값의 범위는 [-1, 1] 간격입니다.
+ 양수 CI 값은 패싯 *a*의 데이터세트에 훈련 샘플이 더 많음을 나타내고, 값이 1이면 해당 데이터에 패싯 *a*의 멤버만이 포함되어 있음을 나타냅니다.
+  CI 값이 0에 가까울수록 패싯 간의 멤버 분포가 비교적 균등하다는 것을 나타내고, 값이 0이면 패싯 간의 분할이 완전히 같다는 것과 해당 훈련 데이터에 있는 샘플의 분포가 균형 잡혀 있다는 것을 나타냅니다.
+ 음수 CI 값은 패싯 *d*의 데이터세트에 훈련 샘플이 더 많음을 나타내고, 값이 -1이면 해당 데이터에 패싯 *d*의 멤버만이 포함되어 있음을 나타냅니다.
+ 양쪽 극한 값인 -1 또는 1에 가까운 CI 값은 매우 불균형하며 편향된 예측을 수행할 위험성이 상당히 높습니다.

여러 패싯 사이에 심각한 패싯 불균형이 있는 것으로 확인되면, 모델을 학습시키기 전에 해당 샘플을 재조정하는 것이 좋습니다.

# 레이블 비율의 차이(DPL)
<a name="clarify-data-bias-metric-true-label-imbalance"></a>

레이블 비율의 차이(DPL)는 훈련 데이터세트에서 패싯 *d*에 대한 긍정적인 레이블이 있는 관찰 결과의 비율과 패싯 *a*의 긍정적인 레이블이 있는 관찰 결과의 비율을 서로 비교합니다. 예를 들어, 이는 금융 대출을 승인받은 중년 개인(패싯 *a*)과 기타 연령 그룹(패싯 *d*)의 비율을 비교하는 데 사용될 수 있습니다. 기계 학습 모델은 훈련 데이터상 결정을 최대한 비슷하게 모방하려고 시도합니다. 따라서 DPL이 높은 데이터세트에서 훈련된 기계 학습 모델은 향후의 예측 시 동일한 불균형을 그대로 반영할 가능성이 높습니다.

레이블 비율의 차이에 대한 공식은 다음과 같습니다.

        DPL = (qa - qd)

위치:
+ qa = na(1)/na은 관찰된 레이블 값이 1인 패싯 *a*의 비율입니다. 대출 승인을 받은 중년 인구 집단의 비율을 예로 들 수 있습니다. 여기서 na(1)은 패싯 *a*에서 긍정적인 결과를 얻은 멤버의 수를 나타내고 na은 패싯 *a*의 멤버 수를 나타냅니다.
+ qd = nd(1)/nd은 관찰된 레이블 값이 1인 패싯 *d*의 비율입니다. 대출 승인을 받은 중년 인구 집단 이외의 사람들의 비율을 예로 들 수 있습니다. 여기서 nd(1)은 패싯 *d*에서 긍정적인 결과를 얻은 멤버의 수를 나타내고 nd은 패싯 *d*의 멤버 수를 나타냅니다.

DPL이 0에 충분히 가까우면 인구통계학적 평등이 달성되었다고 볼 수 있습니다.**

바이너리 및 멀티카테고리 패싯 레이블의 경우 DPL 값의 범위는 (-1, 1) 간격입니다. 연속형 레이블의 경우 레이블을 이진수로 축소하도록 임계값을 설정합니다.
+ 양수인 DPL 값은 패싯 *a*가 패싯 *d*에 비해 긍정적인 결과의 비율이 상대적으로 높다는 것을 나타냅니다.
+ DPL 값이 0에 가까울수록 패싯 간에 긍정적인 결과의 비율이 비교적 균등함을 나타내고, 값이 0이면 인구통계학적 평등이 완벽함을 나타냅니다.
+ 음수인 DPL 값은 패싯 *d*가 패싯 *a*에 비해 긍정적인 결과의 비율이 상대적으로 높다는 것을 나타냅니다.

높은 정도의 DPL이 문제가 되는지 여부는 매번 상황에 따라 달라집니다. 문제가 되는 경우라면, 높은 정도의 DPL은 데이터에 근본적인 문제가 있다는 신호일 수 있습니다. 예를 들어, DPL이 높은 데이터세트는 연령 기반 인구 집단에 대한 과거의 편향이나 편견을 반영하고 있을 수 있으며, 이는 모델을 학습시키기에 바람직하지 않은 데이터입니다.

# 쿨백-라이블러 발산(KL)
<a name="clarify-data-bias-metric-kl-divergence"></a>

쿨백-라이블러 발산(Kullback-Leibler, KL)은 패싯 *a*의 관찰된 레이블 분포인 Pa(y)가 패싯 *d*의 분포 Pd(y)와 얼마나 다른지를 측정합니다. 이는 Pd(y)에 대한 Pa(y)의 상대 엔트로피라고도 하며, Pa(y)에서 Pd(y)로 이동할 때 손실되는 정보의 양을 정량화하는 역할을 합니다.

쿨백-라이블러 발산의 공식은 다음과 같습니다.

        KL(Pa \$1\$1 Pd) = ∑yPa(y)\$1log[Pa(y)/Pd(y)]

이는 확률 Pa(y)와 Pd(y)사이의 로그 차이에 대한 기대치를 의미하며, 여기서의 기대치는 확률 Pa(y)에 의해 가중치가 부여됩니다. 이 거리는 비대칭이고 삼각 부등식을 만족하지 않기 때문에 해당 분포 간의 실제 거리로 간주되지 않습니다. 해당 구현에서는 자연 로그를 사용하여 KL을 nats 단위로 계산됩니다. 다른 로그 베이스를 사용하면 비례적인 결과가 나오지만, 단위는 달라집니다. 예를 들어, 베이스 2를 사용하면 KL은 비트 단위로 계산됩니다.

예를 들어, 대출 신청자 그룹의 승인률은 30%(패싯 *d*)이고 다른 신청자 그룹의 승인률(패싯 *a*)은 80%라고 가정해 보겠습니다. 쿨백-라이블러 공식은 패싯 *a*와 패싯 *d*의 레이블 분포 차이를 다음과 같이 계산합니다.

        KL = 0.8\$1ln(0.8/0.3) \$1 0.2\$1ln(0.2/0.7) = 0.53

이 예제에서는 레이블이 바이너리이기 때문에 공식에는 두 개의 항이 존재합니다. 이 측정값은 바이너리 레이블 외에도 여러 레이블에 적용할 수 있습니다. 예를 들어 대학 입시 시나리오에서 지원자에게 yi = \$1y0, y1, y2\$1 = \$1rejected, waitlisted, accepted\$1라는 세 가지 범주 레이블 중 하나를 할당할 수 있다고 가정해 보겠습니다.

바이너리, 멀티카테고리 및 연속형 결과에 대한 KL 지표의 값 범위는 [0, \$1∞)입니다.
+ 값이 0에 가까울수록 결과가 여러 패싯에서 비슷하게 분포되어 있음을 의미합니다.
+ 양수 값은 레이블 분포가 서로 발산된다는 것을 의미하며, 양수 값이 커질수록 발산의 정도도 커집니다.

# 젠슨-섀넌 발산(JS)
<a name="clarify-data-bias-metric-jensen-shannon-divergence"></a>

젠슨-섀넌 발산(Jensen-Shannon, JS)은 여러 패싯의 레이블 분포가 서로 엔트로피적으로 얼마나 발산되는지 측정합니다. 이는 쿨백-라이블러 발산을 기반으로 하지만, 대칭적입니다.

젠슨-섀넌 발산의 공식은 다음과 같습니다.

        JS = ½\$1[KL(Pa \$1\$1 P) \$1 KL(Pd \$1\$1 P)]

P = ½( Pa \$1 Pd )인 경우, 패싯 *a*와 패싯 *d*에 걸친 평균 레이블 분포입니다.

바이너리, 멀티카테고리, 연속형 결과에 대한 JS 값의 범위는 [0, ln(2))입니다.
+ 값이 0에 가까우면 여러 레이블의 분포가 서로 비슷함을 의미합니다.
+ 양수 값은 레이블 분포가 서로 발산된다는 것을 의미하며, 양수 값이 커질수록 발산의 정도도 커집니다.

이 지표는 여러 패싯에 걸쳐 레이블 중 하나에 커다란 발산이 생기는지 여부를 나타냅니다.

# Lp-norm(LP)
<a name="clarify-data-bias-metric-lp-norm"></a>

Lp-norm(LP)은 훈련 데이터세트에서 관찰된 레이블의 패싯 분포 사이의 p-norm 거리를 측정합니다. 이 지표는 음수가 아니므로 역 편향을 감지할 수 없습니다.

Lp-norm의 공식은 다음과 같습니다.

        Lp(Pa, Pd) = ( ∑y\$1\$1Pa - Pd\$1\$1p)1/p

여기서 점 x와 점 y 사이의 p-norm 거리는 다음과 같이 정의됩니다.

        Lp(x, y) = (\$1x1-y1\$1p \$1 \$1x2-y2\$1p \$1 … \$1\$1xn-yn\$1p)1/p 

2-norm은 유클리드 norm입니다. 대학 입시 멀티카테고리 시나리오에서 yi = \$1y0, y1, y2\$1 = \$1accepted, waitlisted, rejected\$1와 같이 세 가지 범주로 구성된 결과 분포가 있다고 가정해 보겠습니다. 패싯 *a*와 패싯 *d*의 결과 개수 차이에 대한 제곱합을 구합니다. 결과값의 유클리드 거리는 다음과 같이 계산됩니다.

        L2(Pa, Pd) = [(na(0) - nd(0))2 \$1 (na(1) - nd(1))2 \$1 (na(2) - nd(2))2]1/2

위치: 
+ na(i)는 패싯 *a*의 i번째 범주형 결과의 수입니다.예를 들어 na(0)은 패싯 *a*의 승인 건수입니다.
+ nd(i)는 패싯 *d*의 i번째 범주형 결과의 수입니다.예를 들어 nd(2)는 패싯 *d*의 거부 건수입니다.

  바이너리, 멀티카테고리, 연속형 결과에 대한 LP 값의 범위는 [0, √2]입니다.이때,
  + 값이 0에 가까우면 여러 레이블의 분포가 서로 비슷함을 의미합니다.
  + 양수 값은 레이블 분포가 서로 발산된다는 것을 의미하며, 양수 값이 커질수록 발산의 정도도 커집니다.

# 총 변동 거리(TVD)
<a name="clarify-data-bias-metric-total-variation-distance"></a>

총 변동 거리(TVD) 데이터 편향 지표는 L1-norm의 절반입니다. TVD는 패싯 *a*와 *d*의 레이블 결과에 대한 확률 분포 간에 가능한 최대치의 차이에 해당합니다. L1-norm은 한 문자열을 다른 문자열로 변경하는 데 필요한 최소 대체 문자 수를 결정하여 두 바이너리 데이터 문자열을 비교하는 데 사용되는 지표인 해밍(Hamming) 거리입니다. 문자열이 서로 복사되는 경우, 이는 복사 시 발생한 오류의 개수를 결정합니다. 편향을 감지해야 하는 상황에서, TVD는 패싯 *a*의 결과를 패싯 *d*의 결과와 일치시키기 위해 변경되어야 하는 문자 수를 정량화합니다.

총 변동 거리를 구하는 공식은 다음과 같습니다.

        TVD = ½\$1L1(Pa, Pd)

예를 들어 대학 입시 멀티카테고리 시나리오에서 yi = \$1y0, y1, y2\$1 = \$1accepted, waitlisted, rejected\$1의 세 가지 범주로 구성된 결과 분포가 있다고 가정해 보겠습니다. TVD를 계산하려면 패싯 *a*와 패싯 *d* 각각의 결과 사이에서 발생한 개수 차이를 구합니다. 결과는 다음과 같습니다.

        L1(Pa, Pd) = \$1na(0) - nd(0)\$1 \$1 \$1na(1) - nd(1)\$1 \$1 \$1na(2) - nd(2)\$1

위치: 
+ na(i)는 패싯 *a*의 i번째 범주형 결과의 수입니다.예를 들어 na(0)은 패싯 *a*의 승인 건수입니다.
+ nd(i)는 패싯 d의 i번째 범주형 결과의 수입니다.예를 들어 nd(2)는 패싯 *d*의 거부 건수입니다.

  바이너리, 멀티카테고리, 연속형 결과에 대한 TVD 값의 범위는 [0, 1)입니다.이때,
  + 값이 0에 가까우면 여러 레이블의 분포가 서로 비슷함을 의미합니다.
  + 양수 값은 레이블 분포가 서로 발산된다는 것을 의미하며, 양수 값이 커질수록 발산의 정도도 커집니다.

# 콜모고로프-스미르노프(KS)
<a name="clarify-data-bias-metric-kolmogorov-smirnov"></a>

콜모고로프-스미르노프(Kolmogorov-Smirnov, KS) 편향 지표는 데이터세트의 패싯 *a*와 패싯 *d*에 대한 분포에서 레이블 간에 발생하는 최대 발산값과 같습니다. SageMaker Clarify에서 구현되는 2표본 KS 테스트는 가장 불균형한 레이블을 찾아냄으로써 레이블 불균형의 다른 측정값을 보완합니다.

콜모고로프-스미르노프 지표를 구하는 공식은 다음과 같습니다.

        KS = max(\$1Pa(y) - Pd(y)\$1)

예를 들어, 어떤 대학입시 지원자 그룹(패싯 *a*)에서 불합격, 대기명단, 합격 비율이 각각 40%, 40%, 20%이고, 다른 지원자 그룹(패싯 *d*)에서의 해당 비율은 20%, 10%, 70%라고 가정해 보겠습니다. 이 경우 콜모고로프-스미르노프 편향 지표는 다음과 같습니다.

KS = max(\$10.4-0.2\$1, \$10.4-0.1\$1, \$10.2-0.7\$1) = 0.5

이는 패싯 분포 간의 최대 발산값이 0.5이고 이는 합격 비율에서 발생한다는 것을 의미합니다. 레이블이 카디널리티 3의 멀티클래스이기 때문에 해당 방정식에는 세 개의 항이 존재합니다.

바이너리, 멀티카테고리, 연속형 결과에 대한 LP 값의 범위는 [0, \$11]입니다.이때,
+ 값이 0에 가까우면 모든 결과 범주에서 레이블이 패싯 간에 균등하게 분포되어 있음을 나타냅니다. 대출을 신청한 두 패싯 모두에서 승인 비율이 50%, 거부 비율이 50%로 나타난 경우를 예로 들 수 있습니다.
+ 값이 1에 가까우면 한 가지 결과에 대한 레이블이 하나의 패싯에 몰려 있다는 것을 나타냅니다. 패싯 *a*는 100%의 승인 결과를 얻었고 패싯 *d*는 승인 건수가 하나도 없는 경우를 예로 들 수 있습니다.
+ 간헐적인 값은 레이블 불균형 최대치의 상대적인 정도를 나타냅니다.

# 조건부 인구통계학적 차이(CDD)
<a name="clarify-data-bias-metric-cddl"></a>

인구통계학적 차이(Demographic Disparity, DD) 지표는 데이터세트 내 어떤 패싯의 결과에서 거부 건수가 승인 건수보다 상대적으로 많은지 여부를 결정합니다. 데이터세트를 구성하는 2개의 패싯(예: 남성과 여성)이 있는 바이너리 사례의 경우, 불리한 패싯에는 패싯 *d*라는 레이블이 지정되고 유리한 패싯에는 패싯 *a*라는 레이블이 지정됩니다. 예를 들어 대학 입시의 경우, 만약 여성 지원자가 불합격 지원자의 46%를 차지하면서 합격한 지원자의 32%만을 차지한다면, 불합격자 가운데 여성의 비율이 합격자에서의 비율을 초과하기 때문에 인구통계학적 차이가 존재한다고 간주할 수 있습니다.** 이 경우에서 여성 지원자에게는 패싯 *d* 레이블이 지정됩니다. 만약 남성 지원자의 경우 불합격 지원자 54%와 합격 지원자 68%로 구성되어 있다면, 불합격 비율이 합격 비율보다 작기 때문에 이 패싯에서는 인구통계학적 차이가 없는 것으로 간주됩니다. 이 경우에서 남성 지원자에게는 패싯 *a* 레이블이 지정됩니다.

덜 유리한 패싯 *d*에서의 인구통계학적 차이를 구하는 공식은 다음과 같습니다.

        DDd = nd(0)/n(0) - nd(1)/n(1) = PdR(y0) - PdA(y1) 

위치: 
+ n(0) = na(0) \$1 nd(0)은 데이터세트에서 유리한 패싯 *a*와 불리한 패싯 *d*에 대해 나타난 불합격 결과의 총 건수입니다.
+ n(1) = na(1) \$1 nd(1)은 데이터세트에서 유리한 패싯 *a*와 불리한 패싯 *d*에 대해 나타난 합격 결과의 총 건수입니다.
+ PdR(y0)은 패싯 *d*에서 불합격한 결과(값 0)의 비율입니다.
+ PdA(y1)은 패싯 *d*에서 합격한 결과(값 1)의 비율입니다.

대학 입시의 예시에서 여성에 대한 인구통계학적 차이는 DDd = 0.46 - 0.32 = 0.14가 됩니다. 남성의 경우에는 DDa = 0.54 - 0.68 = - 0.14입니다.

심슨의 역설을 배제할 수 있으려면 데이터세트 상의 부분군 계층을 정의하는 속성에 대해 DD 조건을 부여하는 조건부 인구통계학적 차이(CDD) 지표가 필요합니다. 재군집화를 적용하며 덜 유리한 패싯에 대한 명백한 인구통계학적 차이의 원인을 파악하는 것이 가능해집니다. 한때 버클리대학교 입시에서 남성이 여성보다 전반적으로 더 높은 비율로 합격했던 것이 전형적인 사례입니다. DD 계산 예제에서 이 사례에 대한 통계치가 사용되었습니다. 그러나 학과별 부분군을 조사하자, 조건을 학과별로 적용했을 때는 여성이 남성보다 입학률이 더 높은 것으로 나타났습니다. 여성이 남성보다 상대적으로 경쟁률이 낮은 학과에 지원했다는 것이 이에 대한 설명이었습니다. 부분군별로 경쟁률을 살펴본 결과 실제로 경쟁률이 낮은 학과에서 여성이 남성보다 더 높은 비율로 합격했던 것으로 나타났습니다.

CDD 지표는 데이터세트의 속성에 의해 정의된 부분군에서 확인된 모든 차이를 평균화함으로써 단일 측정값을 제공합니다. 이 값은 각 부분군에 대한 인구통계학적 차이의 가중 평균치(DDi)로서 정의되며, 여기서 각 부분군 차이에 대한 가중치는 포함하고 있는 관측치의 수에 따라 비례적으로 부여됩니다. 이 경우 조건부 인구통계학적 차이를 구하는 공식은 다음과 같습니다.

        CDD = (1/n)\$1∑ini \$1DDi 

위치: 
+ ∑ini = n은 총 관측치의 수에 해당하고 ni은 각 부분군에 대한 관측치 수입니다.
+ DDi = ni(0)/n(0) - ni(1)/n(1) = PiR(y0) - PiA(y1)은 i번째 부분군에 대한 인구통계학적 차이입니다.

부분군에 대한 인구통계학적 차이(DDi)는 각 부분군에서 불합격한 결과의 비율과 합격한 결과의 비율 간에 나타나는 차이입니다.

전체 데이터세트 DDd 또는 그 조건화된 부분군인 DDi에서의 바이너리 결과값에 대한 DD 값의 범위는 [-1, \$11]입니다.
+ \$11: 패싯 *a* 또는 부분군에서 불합격자가 없고 패싯 *d* 또는 부분군에서 합격자가 없는 경우
+ 양수 값은 패싯 *d* 또는 부분군의 데이터세트에서 합격한 결과보다 불합격한 결과가 더 많았기 때문에 인구통계학적 차이가 존재한다는 것을 나타냅니다. 이 값이 높을수록 해당 패싯은 덜 유리해지고 차이는 더 벌어지게 됩니다.
+ 음수 값은 패싯 *d* 또는 부분군의 데이터세트에서 불합격한 결과보다 합격한 결과가 더 많았기 때문에 인구통계학적 차이가 존재하지 않는다는 것을 나타냅니다. 이 값이 낮을수록 해당 패싯은 더 유리해집니다.
+ -1: 패싯 *d* 또는 부분군에서 불합격자가 없고 패싯 *a* 또는 부분군에서 합격자가 없는 경우

별도의 조건을 지정하지 않으면 DPL이 0인 경우에만 CDD가 0이 될 수 있습니다.

이 지표는 유럽연합과 영국의 차별금지법 및 법리학에서 규정하는 직접 및 간접 차별과 객관적 정당화의 개념을 탐색하는 데 있어 유용합니다. 자세한 내용은 [Why Fairness Cannot Be Automated](https://arxiv.org/abs/2005.05906)를 참조하세요. 이 논문에는 버클리대학교 입시 사례의 관련 데이터와 분석도 함께 포함되어 있으며, 해당 자료는 학과별 입학률 부분군을 조건화하는 것이 심슨의 역설을 어떻게 구체화하는지 보여줍니다.

# SageMaker Studio에서 훈련 전 데이터의 편향에 대한 보고서 생성
<a name="clarify-data-bias-reports-ui"></a>

SageMaker Clarify는 Amazon SageMaker Data Wrangler와 통합되어 있으므로 사용자가 코드를 직접 작성하지 않아도 데이터를 준비하는 단계에서 편향을 식별하는 것이 가능합니다. Data Wrangler는 Amazon SageMaker Studio에서 데이터 가져오기, 준비, 변환, 특징화, 분석을 수행할 수 있는 엔드 투 엔드 솔루션을 제공합니다. Data Wrangler 데이터 준비 워크플로에 대한 개요는 [Amazon SageMaker Data Wrangler로 ML 데이터 준비하기](data-wrangler.md)를 참조하세요.

사용자가 성별이나 연령과 같은 관심 속성을 지정하면 SageMaker Clarify는 알고리즘 세트를 실행하여 해당 속성에 편향이 있는지 여부를 감지합니다. 알고리즘 실행이 완료된 후 SageMaker Clarify는 편향 발생의 가능한 원인 및 심각도에 대한 설명이 포함된 시각적 보고서를 제공해주므로 사용자는 이를 완화하기 위한 단계를 계획할 수 있습니다. 다른 연령대에 비해 특정 연령대에 대해서는 사업자 대출 사례가 거의 없는 금융 데이터세트를 예로 들면, SageMaker AI는 여기에 불균형 플래그를 지정하여 모델이 해당 연령대에 불리하게 작동하는 상황을 방지할 수 있도록 합니다.

**데이터 편향을 분석하고 보고하는 방법**

Data Wrangler를 시작하려면 [Data Wrangler 시작하기](data-wrangler-getting-started.md)를 참조하세요.

1. Amazon SageMaker Studio Classic의 왼쪽 패널에 있는 **홈**(![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/icons/house.png)) 메뉴에서 **데이터** 노드로 이동한 다음 **Data Wrangler**를 선택합니다. 그러면 Studio Classic에서 **Data Wrangler 랜딩 페이지**가 열립니다.

1. **\$1 데이터 가져오기** 버튼을 클릭하여 새 흐름을 생성합니다.

1. 플로우 페이지의 **가져오기** 탭에서 Amazon S3를 선택하고, Amazon S3 버킷으로 이동하여 해당 데이터세트를 찾은 다음, **가져오기**를 선택합니다.

1. 데이터를 가져오고 나면, **데이터 흐름** 탭에 있는 플로우 그래프에서 **데이터 유형** 노드 오른쪽에 있는 **\$1** 기호를 선택합니다.

1. **분석 추가**를 선택합니다.

1. **분석 생성** 페이지에 있는 **분석 유형** 항목에서 **편향 보고서**를 선택합니다.

1. 보고서 **이름**, 예측할 열과 값/임계값 여부, 편향을 분석할 열(해당 패싯)과 값/임계값 여부를 입력하여 편향 보고서를 구성합니다.

1. 원하는 편향 지표를 선택하여 편향 보고서 구성을 계속하세요.  
![\[편향 지표를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/clarify-data-wrangler-configure-bias-metrics.png)

1. **편향 검사하기**를 선택하여 편향 보고서를 생성하고 확인합니다. 아래로 스크롤하여 전체 보고서를 봅니다.  
![\[편향 보고서를 생성하고 확인합니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/clarify-data-wrangler-create-bias-report.png)

1. 각 편향 지표 설명의 오른쪽에 있는 화살표를 선택하면 지표 값의 중요도를 해석하는 데 도움이 되는 문서를 볼 수 있습니다.

1. 바이어스 지표 값의 테이블 요약을 보려면 **테이블** 토글을 선택하세요. 보고서를 저장하려면 페이지의 오른쪽 아래 모서리에 있는 **저장**을 선택합니다. **데이터 흐름** 탭에 나와 있는 플로우 그래프에서 보고서를 확인할 수 있습니다. 보고서를 두 번 클릭하여 엽니다.