2023. 11. 12. 20:27ㆍ데이터분석 스터디
머신러닝 모델을 만들기 앞서 그 과정을 크게 살펴보면 전처리 - 모델 만들기 - 예측 및 성능 평가 과정으로 이뤄진다.
데이터셋은 adult_csv파일을 이용하였고 데이터를 불러왔다.
우리가 만들 모델은 소득 예측 모델이다.
모델을 만들기 전 예측 변수와 타겟 변수를 지정해야하는데
타겟 변수는 종속변수 y로 이해하고 예측 변수는 독립변수 x로 이해할 수 있다.
이 데이터셋에서 파란색으로 표시된 income이 타겟 변수 나머지 핑크색 변수들이 예측 변수이다.
노락색으로 표시된 ' fnlwgt'변수는 가중치를 나타내는 변수이므로 분석에 큰 영향을 주지 못하므로 제거해주었다.
[원핫 인코딩]
get_dummies 함수를 사용
원핫 인코딩은 문자형 데이터를 숫자형 데이터로 변환시키는 것이다.
예시1을 통해 살펴보면
좌측 상단 라벨 인코딩된 0,3,4 인덱스에 사과가 채워진 것을 확인할 수 있다.
이 때 데이터 타입은 object이다.
좌측 하단 원핫 인코딩된 표를 살펴보면 귤, 바나나, 사과 컬럼으로 분할되었고, 사과 컬럼 0,3,4 인덱스에 0이 아닌 1이 채워진 것을 확인 가능하다.
이 때 데이터 타입은 unit8이다.
예시를 벗어나 소득 예측 모델의 변수 성별컬럼을 워핫 인코딩한 결과이다.
전체 데이터를 원핫인코딩 한 결과이다.
3번째 줄 코드를 보면 df=pd.get_dummies(df)를 적은 것을 볼 수 있다.
그리고 결과를 보면 빨간테두리는 원핫인코딩이 되지 않았고, 파란색 테두리는 원핫인코딩이 진행 되었다.
조금 더 자세히 살펴보기위해 원핫인코딩이 되기 전과 후의 타입을 비교하였다.
원핫인코딩 전에 타입을 살펴보면 빨간색 점이 찍힌 것들은 int64 타입인 것을 확인 가능했고 나머지는 Object형태로 이뤄졌었다.
이를 통해 전체 컬럼을 get_dummies해줘도 int형은 원핫인코딩이 진행되지 않고 object형태만 원핫인코딩이 진행되는 것을 확인 가능하다.
따라서 원핫인코디은 문자형 데이터를 0과1의 형태인 숫자 형태로 변환한다는 것을 확인 가능하다.
그렇다면 원핫인코딩을 할수록 데이터프레임 형태는 복잡해지는데 왜 해야하는 것일까?
이유는 컴퓨터가 이해하기 쉽기 때문이다.
encoding은 압축이라고 생각하면 되는데 0과 1만을 이해하는 컴퓨터가 쉽게 이해하도록 하는 것이라고 볼 수 있다.
학습 데이터와 테스트 데이터른 나누는 이유는 더 신뢰할 수 있는 모델을 만들기 위해서다.
예를 들어
A라는 학생은 테스트 데이터를 만들지 않고 모델을 생성했다면, B라는 학생은 학습 데이터와 테스트 데이터를 만들어 모델을 생성했다.
수학 점수를 예시로 들어보면
A학생의 모델은 쎈수학 연습문제만 풀어본 모델이다.
그렇다면 이 모델은 단지 연습문제의 답만을 외워 학습한 모델일 것이고 실제 수능 시험을 보면 새로운 형태의 문제를 풀지 못할 것이다.
반면,
B학생은 쎈 연습문제는 물론 실제 수능 시험에서도 문제를 풀어본 모델이다.
그렇다면 B학생의 모델이 연습문제에서느 어느정도 실력이었는지 그리고 새로운 유형이 나오는 수능문제에서도 어느정도 퍼포먼스를 냈는지 알 수 있는 것이다.
아주 정확한 예시인지는 모르겠지만 이런 비슷한 맥락에서 학습데이터와 테스트데이터를 나눈다고 설명할 수 있다.
모델로 의사결정 나무 모델을 설정했고, 모델을 만들고 학습시켰다.
의사결정나무에 표현된 사각형을 노드라고 표현하며 그 안에는 데이터에 대한 정보가 들어있다.
의사결정나무 구조의 예시로 꼬리물기를 들 수 있다.
사람이라는 객체는 남성과 여성으로 나눠지고 남성은 키를 기준으로 나눠질 수 있다.
이렇게 계속해서 예, 아니오 형식으로 질문을 던지는 것이라고 이해할 수 있다.
질문의 개수를 결정하는 함수는 max_depth를 사용하며 이 과정을 '나무의 깊이'를 정한다고 표현할 수 있다.
위 그림에서 나무의 깊이는 최상단에 한개의 노드를 가진 층을 제외하고 3층
즉, 나무의 깊이는 3이라고 말한다.
위의 개념을 바탕으로, 나무의 깊이가 깊어질수록 복잡한 모델일 것이고. 깊이가 얕아질수록 단순한 모델이라고 이해할 수 있다.
성능을 평가하기 위해 정확도(accuracy_score), 정밀도(precision), 재현율=민감도(recall),f1_score를 사용했다.
정밀도 : 예측이 참인 것 중 실제도 참인 것의 비율
재현율 : 실제 참인 것 중 예측도 참인 것의 비율
정확도 공식 : TP+TN / TP+FN+FP+TN
정밀도 공식 : TP / TP+FP
재현율 공식 : TP / TP+FN
f1_score : 정밀도와 재현율의 조화 평균. 정밀도와 재현율이 비슷할 수록 f1 score도 높아진다.
0~1의 값을 가지며, 일반적으로 f1_score가 높을수록 분류기 성능이 좋닥 말한다.
f1_score 공식 : 2 * precision * recall / precision + recall
'데이터분석 스터디' 카테고리의 다른 글
데이터분석 스터디 세번째 (0) | 2023.11.12 |
---|---|
데이터 분석 스터디 두번째 (1) | 2023.11.12 |