#1 개발환경 준비
■ 파이썬 코딩환경
- 아나콘다
- 가상환경 만들기
- > conda create -n boostcourse python=3.8
- 가상환경 활성화/비활성화
- > conda activate boostcourse
- > conda deactivate
- 의존 라이브러리 설치하기
- > 폴더 이동: cd 'boostcourse tabular class' (여기선 cd boostcourse ai224 codes)
- > pip 업그레이드: python -m pip install --upgrade pip(path 안된 건가 싶었음)
- > requirments.txt 참고하여 라이브러리 설치: pip install -r requirements-window.txt
- 주피터 노트북 실행
- > cd notebook
- > jupyter notebook
■ 실습 자료 다운로드
- README.md에 실습 자료의 구조가 설명되있음
- > 근데 강의에 다 나와있음
#2-1 정형 데이터란?
■ 정형 데이터의 정의
- structure data / tabular data / 트리에 있는, 테이블로 표현 가능한 데이터
- 엑셀 파일 형식이나 관계형 데이터베이스 테이블에 담을 수 있는 데이터: 행과 열로 표현
- > 하나의 행은 하나의 데이터 인스턴스를 나타냄
- > 각 열은 데이터의 피처(feature)를 나타냄
- 비정형 데이터 : 이미지, 비디오, 음성, 자연어 등의 정제되지 않은 데이터
- > 하나의 데이터 인스턴스 표현: 흑백(2차원), 컬러(rgb 포함 3차원) 필요
■ 정형 데이터의 중요성
- 대세는 비정형 데이터? 이미지, 음성, 자연어 (다양한 가치 창출)
- 범용적인 데이터 (사람, 기업, 현상, 사회의 많은 부분들이 정형데이터로 기록)
- > 가장 기본적인 데이터
- > 분야를 막론하고 많은 데이터가 정형데이터로 존재
- 즉, 필수
- > (예: 생환 비행기 통계에서 총알이 많이 박힌 곳에 철판을 덛대는게 아니라 반대로 해야 생존 확률 올라감. 반대에 박힌 비행기들은 생환 X)
■ 데이터 및 문제 이해
- aggregation? time series? 아니면 both?
■ 평가지표 이해
- 경진대회, 프로젝트 등 평가지표 선정 중요
- > 목적에 맞게 선정해야 모델 성능 제대로 평가
- > 평가지표를 기준으로 모델 성능 강화
- 분류, 회귀 평가지표 소개
- > 분류(Classificaton): 예측해야 할 대상의 개수가 정해져 있는 문제
- # (예: 이미지에서 개, 고양이 분류 / 신용카드 거래가 사기인지 정상인지)
- > 회귀(Regression): 예측해야할 대상이 연속적인 숫자인 문제
- # (예: 일기 예보 상 내일의 기온 예측, 주어진 데이터에서 집값 예측)
- > 평가지표(Evaluation Metric): 분류, 회귀 머신러닝 문제의 성능 평가 지표
- Confusion Matrix : 모델의 예측값 (Prediction)과 실제값을 비교하기 위한 표.
- > 분류 문제의 평가지표를 개선할 수 있음
- > TP와 TN은 실제값 맞게 예측 / FP와 FN은 실제값 다르게 예측
- > Accuracy (정확도) : (TP + TN) / (TP + FN + TN + FP)
- # 전체 데이터 중 모델이 바르게 분류한 비율
- # 불균형한 데이터 (imbalanced data)에 사용하기엔 부적절
- # 100명 중 1명의 암환자
- # 100명 모두 암이 없다고 예측하면 정확도는 99%지만 실제 암환자는 예측 X
- > Precision (정밀도): TP / (TP + FP)
- # 실제 값이 Negative인 데이터를 Positive로 판단하면 안 될 때 사용하는 지표
- # 예시: 스팸 메일 분류(일반 메일을 잘못 분류)
- > Recall (재현율): TP / (TP + FN)
- # 실제 값이 Positive인 데이터를 Negative로 판단하면 안 될 때 사용하는 지표
- # 예시: 악성 종양 판단
- > ROC (Receiver Operating Characteristic): P 또는 N 해당하는 T를 찾는 것
- # 정답이 1인 케이스에 대해 1로 잘 예측하는 비율 (TPR)을 Y축
- @ True Postive Ratio 수식: TP/(TP+FN)
- # 정답이 1인 케이스에 대해 잘못 예측한 비율 (FPR)을 X축
- @ False Positive Ratio 수식: FP/(FP+TN)
- # 모델의 임계값 (Cutoff Value)를 변경시켜 가며 그린 곡선을 나타냄
- # AUC (Area Under Curve): ROC 곡선 면적 표시
- @ ROC 곡선의 아래 영역
- @ 0~1 사이의 값을 가짐
- @ 1에 가까울수록 모델이 잘 예측 (완벽하면 범위를 꽉 채움)
- @ 머신러닝 모델에서 최소 AUC 0.5 이상은 나와야 의미 있음
- # 정답이 1인 케이스에 대해 1로 잘 예측하는 비율 (TPR)을 Y축
#2-2 탐색적 자료 분석
■ EDA (Exploratory Data Analysis, 탐색적 데이터 분석)
- 데이터를 탐색하고 가설을 세우고 증명하는 과정
- 다양한 시각을 통해 데이터를 이해, 특징을 찾아내는 과정
- > 특징들을 시각화, 통계량으로 표현
- > 데이터 특징과 문제를 직관적으로 이해
- 데이터를 이해하고 문제를 해결하는 과정에서 데이터를 통해 고민하는 모든 과정
- > 분석 결과물은 데이터 이해도에 따라 달라질 수 있음
■ EDA 과정
- EDA 순서 (가설 세우기-가설 검정-적용-EDA-반복)
- 1) Data에 대한 가설 혹은 의문
- 2) 시각화 혹은 통계량, 모델링을 통한 가설 검정
- 3) 위의 결론을 통해 다시 새로운 가설 혹은 문제 해결
- EDA 과정은 일반화가 어려우며 정해진 답은 없음
- > 데이터마다 도메인과 변수들이 다르고 그 안의 내용 역시 천차만별
- EDA 시작 (개요가 없다면 너무 비효율적이기 때문)
- > 개별 변수의 분표 (Variation)
- > 변수 간의 분포와 관계(Covariation)
- EDA Titanic Data
- > 당시 배가 침몰할 당시 상황을 상상해 보며 데이터적 상상력과 함께 데이터를 이해
■ EDA 쇼핑 데이터
- 문제 이해 및 가설 세우기
- > 가설을 확인하면서 데이터의 특성을 파악(데이터 이해)
- Description을 활용한 Feature 추출 방법은 NLP 도메인에 속하는 기술
#3-1 정형 데이터 전처리
■ 데이터 전처리
- 머신러닝 모델에 데이터를 입력하기 위해 데이터를 처리하는 과정
- > EDA에 따라 달라지는 데이터 전처리
- > 모델, 목적에 따라 달라지는 데이터 전처리
- 방법론
- > 연속형, 범주형 처리
- > 결측치 처리, 이상치 처리
■ 연속형 데이터 전처리
- Scaling: 데이터의 단위 혹은 분포를 변경
- > 선형기반의 모델(선형회귀, 딥러닝 등)인 경우 변수들 간의 스케일을 맞추는 것이 필수
- > 잘못할 시 계수값에 다른 모델 해석적인 측면에서 문제 발생, 모델 성능에 영향 줌
- Scale
- > Min Max Scaling: 현재 값에서 Minimum 값을 빼고, Max 값과 Min 값의 차이로 나눔
- > Standard Scaling: 현재 값에서 평균값을 빼고, 표준 편차로 나눔
- > Robust Scaling: 현재 값에서 중위 값을 빼고, IQR로 나눔 (이상치의 영역 덜 받음)
- Scale + Distribution
- > Log transformation: 정규 분포에 가까운 분포를 만들어낼 수 있음
- > Quantile transformation : 값을 유니폼 하거나 정규분포로 바꿔줌
- # Log transformation과 차이점: 어떠한 분포가 들어와도 변환 가능
- > Transformation을 사용함으로 인해 특정 Feature와 Target과의 관계를 더욱 직접적으로 변환
- Binning
- > 연속형 변수 → 범주형 변수로 변형
- > 연속형 변수 중간중간 유의미하지 않은 정보들이 Overfitting을 발생할 수 있음
- > 선형 모델을 사용할 때 해석 용이
■ 범주형 데이터 전처리
- 카테고리를 가지는 데이터
- 보통 문자열로 되어 있어 머신러닝 모델의 입력 데이터로 직접 사용할 수 없음.
- > 수치형 변수로 인코딩 (Encoding)해주는 과정이 필요
- 인코딩 방법:
- 1) One Hot Encoding
- > 해당 값이 존재하는 경우에는 1, 그렇지 않은 경우에는 0으로 지정
- > 장점: 변수의 의미가 명확
- > 단점: 변수의 종류가 많아질수록 변수 개수가 종류만큼 늘어나게 되고 Parse 한 행렬이 만들어지게 됨 (차원의 저주)
- 2) Label Encoding
- > 컬럼의 수는 한 개로 유지하면서 각각의 종이 다른 값을 가지게 의미를 부여
- > 단점: 숫자의 순서가 특징으로 여겨질 수 있습니다.
- 3) Frequency Encoding
- > 해당 변수의 값이 몇 번 등장하는지 빈도수 측정해 변숫값으로 사용하는 방식
- > 장점: 값에 의미가 있는 범주형 데이터로 만들 수 있음
- > 단점: 다른 종류의 변수가 같은 Target 변숫값을 가질 수 있음
- 4) Target Encoding
- > 각각의 변수 종류가 가지는 Target 변수의 평균으로 인코딩
- > 예) "개"는 사료 비용 평균값 2000원 ((1000 + 1500 + 3500)/3 )
- > 장점: 값의 의미가 Target 변수와 직접적으로 연관됨(overfitting 가능성)
- > 단점: 1, 3, 4, 5 ID처럼 다른 종이 같은 Target Encoding을 가질 수 있음
- # 새로운 종에 대해 인코딩 불가
- 5) Embedding (Entity Embedding)
- > description과 같은 text 데이터는 기존의 인코딩으로는 수치화 어려움
- > Word2Vec과 같은 모델을 이용해 Text 데이터를 low-level로 임베딩하는 방법
#3-2 정형 데이터 전처리_결측치, 이상치
■ 결측치 처리
- Rule
- > Rule의 경우 결측치 pattern을 찾아서 전처리
- Random (Univariate)
- > 제거
- # 모델이 사용할 데이터 줄어듦 (충분히 많아야 함)
- # 예측해야 할 테스트 데이터에 결측치가 있을 경우 제거 불가
- # 전체 데이터에서 해당 변수의 결측치 비율이 높다면 변수를 제거
- Univariate 결측치 해소
- > 평균값 삽입, 중윗값 삽입, 상수값 삽입
- # 쉬운 방법이지만 결측치 많을 경우 높은 확률로 문제 발생 (분포 망가질 수 있음)
- Multivariate 결측치 해소
- > 회귀분석: 머신러닝 모델을 활용해 주변 변수들을 기반으로 결측치의 값을 예측하는 방법
- > KNN nearest: 존재하는 데이터 중 결측치를 가진 샘플과 가장 유사한 샘플의 값을 이용하는 방법
- * 실제 발생 결측치 처리: 변수 간의 의미를 보고 합리적으로 채움(통계량으로 채우는 방식 상위호환)
■ 이상치 처리
- 다른 데이터보다 아주 작은 값이나 아주 큰 값
- 이상치는 조심스럽게 처리해야 하며, 모델의 성능에 큰 영향을 끼칠 수 있음
- 선형 모델의 경우 제대로 학습 X
- 트리 모델의 경우 선형 모델보다 이상치 영향 적음
- > 모델의 성능 보고 이상치 처리 여부 결정
- 이상치 탐색
- 1) Z-Score
- 2) IQR
- 이상치 처리 관점 (목적에 따라 다르게 접근)
- > 정성적인 측면
- # 이상치 발생 이유
- # 이상치의 의미
- > 성능적인 측면
- # Train Test Distribution: 테스트 데이터에 대한 모델의 예측력 떨어짐
'AI 배우기 > 정형데이터' 카테고리의 다른 글
[부스트코스] 쇼핑데이터를 활용한 머신러닝_모델 학습 (0) | 2023.07.26 |
---|