교육/멋쟁이사자처럼 AI School 7기

TIL 24. 머신러닝 Feature Engineering

삶은돼지고기 2022. 11. 8. 21:25
728x90

사이킷런은
분류 모델의 점수 -> 정확도 반환
회귀 모델의 점수 -> R2, 결정계수를 반환

과대적합일 경우 모델을 덜 복잡하게 만든다
과소적합일 경우 모델을 더 복잡하게 만든다

# 상대경로는 현재 경로를 기준으로 하는 경로 예) ./ 현재경로를 의미 ../ 상위 경로를 의미
# 절대경로는 전체 경로를 다 지정하는 경로 예) 윈도우 C: 부터 시작하는 경로.
# 현재 경로에서 ./ 쓰는 것과 아무것도 안 쓰는것과 같은 위치를 나타냄
절대경로를 사용하면 다른 사람의 컴퓨터에서 동작하지 않기 때문에 되도록이면 상대경로를 사용하는 것을 권장

- log를 취해주면 한쪽에 몰려있고, 뾰족한 분포가 좀 더 완만하고, 정규분포에 가까운 모습이 됨
- 마이너스 값에 로그를 취하고 싶다면?
    - 가장 작은 값이 1이 되도록 전체 값에 더해줌

 정규분포가 왜 좋은 것인가
 - 머신러닝, 딥러닝에서 대체로 더 좋은 성능을 냄
 - 값을 볼 때 한쪽에 치우치고 뾰족하다면 특성을 제대로 학습하기가 어려움
 - 정규분포로 되어 있다면 특성을 고르게 학습할 수 있음

 np.exp는 지수함수
- np.log 를 이용하여 로그를 취했던 값을 다시 원래대로 복원
- log 를 취할 때는 1을 더하고 로그를 취했는데 지수함수를 적용할 때는 반대로 지수함수를 취하고 1을 뺌

< 점수가 높아야 좋은 측정 지표의 예시 >

- 정확도를 기반으로 하는 분류의 측정지표인 Accuracy
- 회귀 모델에서 독립변수가 종속변수를 얼마나 잘 설명했는지 보여주는 결정계수 (r2 score)

< 점수가 낮아야 좋은 측정 지표의 예시 >

- 에러 기반의 측정 지표인 MAE, MSE, RMSE 등

< 1에 가까울수록 좋은 측정 지표 >

- R square score
- 예측값과 실제값이 같으면 1, 최대값이 1인데 클수록 좋음


 범주형 변수의 encoding 방법 2가지
- One-hot encoding => pd.get_dummies() : 순서가 없는 데이터에 인코딩
- Ordinal encoding => category 데이터타입으로 변경하면 ordinal encoding 가능
 ->순서가 있는 데이터에 인코딩

Ordinal encoding
- 각 레벨을 단순히 정수로 변환하는 방법이다.
- 레이블 인코딩 (Label encoding)이라고도 한다.
- 5개의 레벨이 있는 범주형 변수는 각 레벨이 0~4까지의 수치로 바뀐다.


 이상치

- Feature에서 일반적인 값 분포에서 벗어나는 경우를 의미
- 데이터 수집 과정이나 조작 과정에서 잘못 생겨났을 수도 있고, 예외적으로 수치가 뛰어오르는 경우도 있다.
- 데이터 해석이나 머신러닝 모델의 학습 방해
- 제거 / 적절한 값으로 변환 필요

 희소값

- Categorical Feature에서 Frequency가 낮은 값
- 결측치나 이상치처럼 측정 과정이나 데이터 처리 과정에서 실수로 생겨날 수 있는 값은 아님
- 희소값에 대해 one-hot-encoding을 하게 되면 overfitting 발생 가능
- 너무 희소한 행렬 생성 -> 계산에 많은 자원이 필요