생성형 인공지능 윤리 2 > Chapter 6. 데이터의 편향성을 개선한 인공지능

[활동1] 성별 예측 인공지능 개발하기

 1. 성별 예측 프로그램 데이터 분석하기

 1. 프로그래밍에 필요한 라이브러리를 불러옵니다.

 


 

 2. 사용할 데이터셋을 읽어옵니다.

 

- 해당 데이터셋은 원 데이터셋과 비교하여 데이터 편향성 문제를 논의하기 위해 임의로 여성 데이터의 약 90%를 삭제하였습니다.

 

 3. 데이터셋을 보여줍니다.

 

  - long_hair: 긴 머리(1: 길다, 0: 짧다) 

  - forehead_width_cm: 이마 너비 

  - forehead_height_cm: 이마 높이 

  - nose_wide: 넓은 코(1: 넓다, 0: 좁다) 

  - nose_long: 긴 코(1: 길다, 0: 짧다) 

  - lips_thin: 얇은 입술(1: 얇다, 0: 두껍다) 

  - distance_nose_to_lip_long: 코와 입술 사이 먼 거리(1: 멀다, 0: 가깝다)

  - gender: 성별(1: 남성, 0: 여성)

 4. 열 이름을 확인합니다.

 


 

 5. 데이터셋의 정보를 확인합니다.

- Non-Null Count를 통해 결측치의 유무를 확인할 수 있습니다. 여기서는 NULL인 값이 없으므로 결측치 처리를 하지 않아도 됩니다. 

- Dtype을 통해 데이터 타입을 확인할 수 있습니다.
 

 6. 데이터셋에서 수치형 데이터로 이루어진 열들의 통계를 확인합니다.

- count: 컬럼별 총 데이터수 

- mean / std: 컬럼별 데이터의 평균 / 표준편차 

- min / max: 컬럼별 데이터의 최솟값 / 최댓값 

- 25% / 50% / 75% : 백분위의 각 지점의 값
 

 7. 각 클래스에 속한 데이터 수를 확인합니다.

- gender=1이면 남성, 0이면 여성으로, 남성 데이터 2500개, 여성 데이터 251개로 데이터 편향성이 나타납니다. 

- 원 데이터셋에서 여성 데이터는 2501개로 이와 비교하여 데이터 편향성 문제를 논의하기 위해 임의로 여성 데이터의 약 90%를 삭제하였습니다.
 

 

 2. 성별 예측 프로그램 데이터 시각화하기

 1. 성별에 따른 데이터 수를 막대 그래프로 시각화합니다. 데이터 편향성이 나타나는지 확인합니다.

  

  

 2. 각 요소들의 상관관계를 히트맵으로 나타냅니다.

 

히트맵으로 표현했을 때, 상관계수의 절댓값이 1에 가까울수록 상관관계가 높게 나타납니다.

- annot=True: 각 셀에 값 표기 여부 

- linewidths: 셀 사이 선 두께 - cmap: 히트맵의 색


 3. 변수 간 관계를 산점도(pair plot)으로 나타냅니다.

 

- hue(gender)를 기준으로 그룹화하여 색을 다르게 표현합니다.


 


 3. 인공지능 모델 학습시키기

 1. 데이터셋을 예측해야 할 종속변수(성별)만 있는 데이터와, 성별을 제외한 나머지 데이터가 모두 남아있는 데이터, 두 부분으로 나눕니다.

 

- 인공지능 모델을 학습시키기에 앞서, 데이터셋을 두개로 나눕니다.

- 독립변수 X에는 gender 열을 삭제한 나머지 열들을 저장합니다. 

- 종속변수 Y에는 gender 열을 저장합니다. 

- X와 Y를 확인합니다.
 

 2. 데이터 셋을 훈련 데이터와 테스트 데이터로 분할합니다.

 

test_size=0.30: 이때 30%의 데이터가 테스트에 사용되고, 70%가 훈련에 사용됩니다.

 

 3. 랜덤 포레스트 분류 모델을 활용하여 학습시킵니다.

- 랜덤 포레스트의 개념: 여러 개의 의사결정트리를 만들고 그 결과를 결합함으로써 보다 정확하고 안정적인 예측을 제공하는 머신 러닝 알고리즘

 

- scikit-learn 라이브러리에서 RandomForestClassifier를 호출합니다. fit 메서드를 사용하여 랜덤 포레스트 분류 모델을 훈련시킵니다.

 

 4. 테스트 데이터로 성별을 예측합니다.

 


 


 4. 모델 성능 평가하기

 1. 인공지능 모델의 예측 정확도를 확인합니다.

 

- 정확도는 전체 표본 중 정확히 분류된 표본의 수를 의미합니다.

 

 2. 오차 행렬과 평가 지표를 통해 모델의 성능을 평가합니다.

 

- 오차 행렬이란 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리는지에 대해 보여주는 지표입니다.

 

1) TN: 예측값을 Negative 값인 0으로 예측하고, 실젯값 또한 Negative 값인 0으로 정답을 맞힌 경우

2) FP: 예측값을 Positive 값인 1으로 예측했는데 실젯값은 Negative 값인 0으로 틀린 경우 

3) FN: 예측값을 Negative 값인 0으로 예측했는데 실젯값은 Positive 값인 1로 틀린 경우 

4) TP: 예측값을 Positive 값인 1으로 예측하고, 실젯값 또한 Positive 값인 1로 정답을 맞힌 경우 

   - 오차 행렬을 활용한 평가지표에는 정확도, 정밀도, 재현율, F1점수가 있습니다. 모두 값이 클수록 좋습니다.

 

- 분류 평가지표는 예측한 결과와 실제 결과를 비교하여 각 클래스별로 정밀도, 재현율, F1점수 등의 지표를 계산합니다. 

- support: 실제 샘플 개수 

- macro avg: 단순 평균 

- weighted avg: 표본 개수로 가중 평균을 내서 계산하는 방법