데이터 분석 트랙 46일차 25.04.17. [TIL]
[목차]
- 머신러닝 개요
- 머신러닝 전처리
- 머신러닝 개요
1. 정의
- 컴퓨터가 인간의 개입 없이(또는 최소한으로)데이터를 학습하여 패턴을 찾아내고, 새로운 데이터에 대해 예측이나 분류를 수행하는 기술
- 머신러닝의 3대 요소 : "데이터", "알고리즘(머신러닝의 모델)", "컴퓨팅 파워"
- [인공지능 : AI, 사람의 지능적 작업을 기계가 수행하게 하는 광범위 개념] >
[머신러닝 : 데이터에서 특징, 규칙을 학습 || AI 실현 방법 중 하나] >
[딥러닝 : 머신러닝 하위분야, 사람 뇌신경을 본 떠 만든 인공신경망을 여러 겹 쌓아 복잡한 정보 학습]
2. 머신러닝 vs 기초 통계 분석
구분 | 머신러닝 | 기초 통계 분석 |
목적 | - 패턴의 학습을 통한 예측 - “얼마나 잘?” # 정확도와 재현률 등에 초점 - 새롭게 들어오는 데이터와 관련 |
- 가설의 검증 및 추론 - “왜?” # 인과관계에 초점 - 기존에 쌓여있는 데이터와 관련 |
데이터 多 | - 데이터가 많을수록 학습에 유리 - 더 좋은 모델을 만들 수 있다. |
- 표본 수가 커질수록 정교한 추론 가능 - 가설은 사람이 세운다 - 데이터가 적어도 사람이 커버 가능 |
방법론 | A. 지도학습 - 분류(Classification) - 회귀(Regression) B. 비지도학습 - 군집화(Clustering) - 차원 축소 (Dimensionality Reduction) C. 강화 학습 |
A. “기초통계” - 데이터 위치 및 분포 B. “유의성 검정” - A/B테스트, 가설 검정(t-test, 다중검정 || 카이제곱검정, 독립성검정) C. “회귀 분석” - 단순/다중 선형 회귀 || 다항회귀, 스플라인 회귀 D. “상관 관계” - 피어슨 || 스피어만, 켄달 상관계수 |
핵심 | - 머신러닝, 통계 분석은 별개의 분석 기법이 아니다. # 즉, 서로 연관이 있는 분석의 기법들이며 상황에 따른 적절한 활용이 필요하다. # 기초 통계 분석에서 수행할 수 있는 방법들은 머신러닝에서도 가능하다! |
3. 머신러닝 [모델링] 프로세스
A. [데이터 수집]
- 정의 : 말 그대로 데이터를 수집하는 것!
- 웹 크롤링, 센서 측정, 설문조사, DB 추출 등 다양한 방법 존재
B. [전처리 (Preporcessing)] # 사용하려는 [모델] 혹은 [목적]에 따라 B.c.의 기법은 선택적으로 적용,
B.a. [결측치 처리] : 빈 칸을 평균, 최빈값으로 대신 채우거나, 필요시 빼고(삭제) 분석
B.b. [이상치 처리] : 대부분의 데이터 범위에서 심하게 벗어난 값을 해결
# [머신러닝 기법] > [이상치 처리] 기법을 활용가능.
B.c.1. [스케일링](표준화, 정규화) : 각각 다른 단위를 쓰는 데이터(cm, kg, m^2 등)를 비슷한 수준으로 맞춰주는 작업
B.c.2. [범주형 변환] : 글자로 된 정보를 숫자로 바꿔주는 과정 # 원-핫 인코딩, 레이블 인코딩
B.d. [모델링] : [지도학습]-[분류, 회귀], [비지도학습]-[클러스터링, 차원축소]
# 실제 모델 적용 전에 해야할 다양한 작업들 [차원축소(PCA), 이상탐지(Z-score, Isolation Forest) 등등을 수행. 머신러닝의 모델에 따른 별도의 전처리 작업을 거친다!]
C. [모델 학습] 및 [성능 평가(Evaluation)]
C.a. [모델 학습] : 앞선 전처리 작업을 통해 머신러닝 학습의 초기 설정값을 확인하고 학습을 시작, 가장 이상적인 결과값[성능]이 나오는 모델을 찾는다.
# 즉, 데이터를 가장 잘 설명하는 (컬럼, 속성)조합을 찾고 시각화(확인하기)한다.
# 지도학습에선 다음과 같은 평가지표가 있지만, 비지도학습은 가장 이상적인 레이블, 구분기준을 찾는 것이 목적! 그렇기에 평가지표는 없다. 다만, 모델 학습 초기 설정값에 참고할 지표가 있다.
C.b. [성능 평가 (Evaluation)]
- 분류 : Accuracy, Precision, Recall, F1=score, ROC-AUC 등으로 평가
- 회귀 : MAE, RMSE, R^2 등으로 평가
- 비지도(군집) : 실루엣 계수 등으로 평가
- 2. 머신러닝 전처리 [상세]
1. [도메인] 별 전처리 개요
# 각 [도메인]의 키 포인트를 확인 전처리를 해야할 경우 "살려야 할 부분"과 "변형해야 할 부분", "버려야할 부분", "분석 목적을 위해 새롭게 조합해야할 부분"을 파악하는 것이 중요.
1.1. [제조업]
- 사용 목적 : 기계 센서의 정상 및 오작동을 확인하는 것이 주요!
# 사용목적이 [이상탐지]라면, 제품의 [생산]과 관련한 부분의 데이터 혹은 컬럼을 살리고 나머지 데이터를 전처리(제거 혹은 결합하여 다른 컬럼으로 전환)
1.2. [금융]
- 사용 목적 : [이상 탐지](사기거래, 특정 종목의 급변) 혹은 "예측"(유실된 데이터 혹은 향후 데이터의 예측)이 주요 목표
1.3. [마케팅]
- 사용 목적 : "예측", "분류", "클러스터링" ||
ex. 필요 정보의 누락 혹은 미수집
특정 광고 중 상품의 노출/클릭 수가 월등히 높아 평균 왜곡
# 특정 커뮤니티의 단체활동('팬심', '분노', '유희' 등 다양한 원인)으로 인한 노출 및 클릭수의 이상
[고객 이탈 예측] 시 이탈 고객 비율이 매우 적은 경우
2. [결측치 처리]
- 처리 방법 : 결측치를 [삭제]하거나 [대체]한다. (평균, 중앙값, 최빈값, 예측모델[회귀/분류 모델])
- 삭제코드 : "df_drop = 데이터프레임 원본.dropna()"
- <대치코드 : 평균값, 중앙값, 최빈값> # 각 열 별로 평균값 및 중앙값으로 Nan이 대치된다.
<평균값>
df_mean = df.copy() # 원본 데이터를 먼저 복사하여 변형하여 사용할 데이터에 사용!
df_mean = df_mean.fillna(df_mena.mean(numeric_only=True))
<중앙값>
df_median = df.copy()
df_median = df_median.fillna(df_median.median(numeric_only=True))
<최빈값> # 각 열별로 최빈값이 1개가 아닐 수 있음. 그래서 iloc[0]으로 첫 행만 취한다.
df_mode = df.copy()
mode_values = df_mode.mode().iloc[0] # 첫 번째 행(가장 상위 mode)만 취함
df_mode = df_mode.fillna(mode_values)
3. [이상치 탐지 및 제거]
3.1. 탐지 방법
A. 통계적 기법(3σ Rule) # Z-score
- 데이터가 정규분포를 따른다고 가정하고, 평균에서 +-3σ(표준편차) 범위를 벗어나는 값을 이상치로 간주
- 직관적이고 간단하나, 정규성 가정이 틀릴 수 있음.
B. 박스플롯(Boxplot) 기준 # IQR
- 사위분수(IQR = Q3 - Q1)를 이용해 ‘Q1 - 1.5*IQR', 'Q3 + 1.5*IQR'를 벗어나는 데이터를 이상치로 간주
- 분포 특성에 영향을 적게 받는 장점
C. 머신러닝 기반
- 이상치 탐지 알고리즘(Isolatiion Forest, DBSCAN 등)
- 복합적 패턴을 고려할 수 있음.
3.2. 처리 방법
A. 이상치 단순 제거
B. 이상치 값을 조정(클리핑, Winsorizing 등)
C. 별도로 구분하여 모델에서 제외하거나, 다른 모델(이상치 예측 모델)로 활용