수업 목표
- 예측 모델링에 필요한 전체 프로세스를 이해해 봅시다.
1. 데이터 수집
- 데이터 분석가는 이미 존재하는 데이터를 SQL 혹은 Python을 통해 추출하고 리포팅, 머신러닝을 통한 예측을 담당
- Data Source
- OLTP Database: OnLine Transaction Processing 은 온라인 뱅킹,쇼핑, 주문 입력 등 동시에 발생하는 다수의 트랜잭션(데이터베이스 작업의 단위) 처리 유형
- Enterprise Applications: 회사 내 데이터 (ex 고객 관계 데이터, 제품 마케팅 세일즈)
- Third - Party: Google Analytics와 같은 외부소스에서 수집되는 데이터
- Web/Log: 사용자의 로그데이터
- Data Lake: 원시 형태의 다양한 유형의 데이터를 저장
- Data Warehouse: 보다 구조화된 형태로 정제된 데이터를 저장
- Data Marts: 회사의 금융, 마케팅, 영업 부서와 같이 특정 조직의 목적을 위해 가공된 데이터
- BI/Analytics: business Intelligence(BI)는 의사결정에 사용될 데이터를 수집하고 분석하는 프로세스
- 실제 데이터 수집
- 회사 내 데이터가 존재한다면
- SQL 혹은 Python 을 통해 데이터 마트를 생성
- 회사 내 Data가 없다면 → 데이터 수집 필요
- 방법1: CSV, EXCEL 파일 다운로드
- 방법2: API를 이용한 데이터 수집
- 방법3: Data Crawling
2. 탐색적 데이터 분석(EDA)
: 탐색적 데이터 분석(Exploratory Data Analysis, EDA)는 데이터 시각화, 기술통계 등의 방법을 통해 데이터를 이해하고 탐구하는 과정
1) 기술통계를 통한 EDA
- tips.describe(include='all') -> 기술통계 확인 가능, 옵션을 통해 범주형 데이터도 확인 가능
2) 시각화를 통한 EDA
1. countplot: 범주형 자료의 빈도 수 시각화
![]() |
2. barplot: 범주형 자료의 시각화
![]() |
3. boxplot: 수치형 & 범주형 자료의 시각화
![]() |
4. histogram: 수치형 자료 빈도 시각화
![]() |
5. scatterplot: 수치형끼리 자료의 시각화
![]() |
6. pairplot: 전체 변수에 대한 시각화
![]() |
3. 데이터 전처리
1) 이상치(Outlier) : 이상치란 보통 관측된 데이터 범위에서 많이 벗어난 아주 작은 값 혹은 큰 값
- Extreme Studentized Deviation(ESD) 이용한 이상치 발견
- 데이터가 정규분포를 따른다고 가정할 때, 평균에서 표준편차의 3배 이상 떨어진 값
- 모든 데이터가 정규 분포를 따르지 않을 수 있기 때문에 다음 상황에서는 제한됨
- 데이터가 크게 비대칭일 때( → Log변환 등을 노려볼 수 있음)
- 샘플 크기가 작을 경우
- IQR(Inter Quantile Range)를 이용한 이상치 발견
- ESD와 동일하게 데이터가 비대칭적이거나 샘플사이즈가 작은 경우 제한됨
- Q1(25%), Q2(50%, 중위수), Q3(75%)
- IQR = Q3 - Q1
- 상한 이상치 = Q3 + 1.5 * IQR / 하한 이상치 = Q1 - 1.5 * IQR
- 이상치 발견 방법
ESD를 이용한 처리![]() |
IQR을 이용한 처리(box plot)![]() |
조건필터링을 통한 삭제 (a.k.a. boolean Indexing) ![]() |
- 이상치는 주관적인 값이므로 도메인과 비즈니스 맥락에 따라 처리 방법이 달라진다.
- 데이터 삭제시 품질은 좋아질 수 있지만 정보 손실을 동반하기 때문에 이상치 처리에 주의가 필요
2) 결측치(Missing Value) : 존재하지 않는 데이터
- 수치형 데이터
- 평균값 대치 : 대표적인 대치 방법
- 중앙값 대치 : 데이터에 이상치가 많아 평균 값이 대표성이 없다면 중앙 값을 이용 (이상치는 평균값을 흔들리게 함)
- 범주형 데이터
- 최빈값 대치
- 사용 함수
간단한 삭제 & 대치
|
알고리즘을 이용
|
3) 범주형 데이터 전처리 - 인코딩(Encoding)
- 레이블 인코딩(Label Encoding) : 문자열 범주형 값을 고유한 숫자로 할당
- 1등급 -> 0 / 2등급 -> 1 / 3등급 -> 2
- 장점 : 모델이 처리하기 쉬운 수치형으로 데이터 변환
- 단점 : 실제로는 그렇지 않은데, 순서간 크기에 의미가 부여되어 모델이 잘못 해석할 수 있음
- 사용 함수 : sklearn.preprocessing.LabelEncoder
- 원-핫 인코딩(One-Hot Encoding) : 각 범주를 이진 형식으로 변환하는 기법
- 빨강 -> [1, 0, 0] / 파랑 -> [0, 1, 0] / 초록 -> [0, 0, 1]
- 장점 : 각 범주가 독립적으로 표현되어, 순서의 중요도를 잘못 학습하는 것을 방지, 명목형 데이터에 권장
- 단점 : 범주 개수가 많을 경우 차원이 크게 증가(차원의 저주), 모델의 복잡도를 증가, 과적합 유발
- 사용함수 : pd.get_dummies / sklearn.preprocessing.OneHotEncoder
4) 수치형 데이터 전처리 - 스케일링(Scaling)
- 표준화(Standardization) : 각 데이터에 평균을 빼고 표준편차를 나누어 평균을 0, 표준편차를 1로 조정하는 방법
- 이상치가 있거나 분포가 치우쳐져 있을 때 유용
- 모든 특성의 스케일을 동일하게 맞춤, 많은 알고리즘에서 좋은 성능
- 데이터의 최소-최대 값이 정해지지 않음
- 사용함수 : sklearn.preprocessing.StandardScaler
- 정규화(Nomalization) : 데이터를 0과 1 사이 값으로 조정(최소값 0, 최대값 1)
- 모든 특성의 스케일을 동일하게 맞춤
- 최대-최소 범위가 명확
- 이상치에 영향을 많이 받을 수 있음(반대로 말하면 이상치가 없을 때 유용)
- 사용함수 : sklearn.preprocessing.MinMaxScaler
- 로버스트 스케일링(Robust Scaling) : 중앙값과 IQR을 사용하여 스케일링
- 이상치의 영향에 덜 민감
- 표준화와 정규화에 비해 덜 사용됨
- 사용함수 : sklearn.preprocessing.RoburtScaler
5. 데이터 분리
- 과대적합(Overfitting) 이란 데이터를 너무 과도하게 학습한 나머지 해당 문제만 잘 맞추고 새로운 데이터를 제대로 예측 혹은 분류하지 못하는 현상
- 모형이 지나치게 복잡할 때 : 과대적합이 될 수 있음
- 모형이 지나치게 단순할 때 : 과소적합이 될 수 있음
- 과적합의 원인
- 모델의 복잡도
- 데이터 양이 충분하지 않음
- 학습 반복이 많음(딥러닝의 경우)
- 데이터 불균형(정상환자-암환자 비율이 95:5)
- 테스트 데이터의 분리 - 과적합 해결
- 학습 데이터(Train Data) : 모델을 학습(fit)하기 위한 데이터
- 테스트 데이터(Test Data) : 모델을 평가하기 위한 데이터
6. 교차 검증과 GridSearch
- 교차검증(Cross Validation)이란 데이터 셋을 여러 개의 하위 집합으로 나누어 돌아가면서 검증 데이터로 사용하는 방법
- K-Fold Validation
- 정의: Train Data를 K개의 하위 집합으로 나누어 모델을 학습시키고 모델을 최적화 하는 방법
- 이때 K는 분할의 갯수
- Split 1: 학습용(Fold 2~5), 검증용(Fold1)
- Split 2: 학습용(Fold1, 3~5), 검증용(Fold2)
- Split 5까지 반복 후 최종 평가
- 데이터가 부족할 경우 유용(반복 학습)
- GridSearchCV : 하이퍼파라미터 자동 적용
전체 데이터 프로세스
'내일배움캠프_QAQC 트랙 1기 > 강의 요약' 카테고리의 다른 글
[내일배움캠프] 머신러닝의 이해와 라이브러리 활용 심화 2주차 (0) | 2025.02.21 |
---|---|
[내일배움캠프] 머신러닝의 이해와 라이브러리 활용 기초 (2) | 2025.02.18 |
[내일배움캠프] 통계학 기초 3주차 (3) | 2025.01.21 |
[내일배움캠프] 통계학 기초 2주차 (3) | 2025.01.17 |
[내일배움캠프] 통계학 기초 1주차 (2) | 2025.01.16 |