부동산 회사에 막 고용된 데이터 과학자라고 가정.
주요 단계는 다음과 같다.
1. 큰 그림을 본다.
2. 데이터를 구한다.
3. 데이터로부터 통찰을 얻기 위해 탐색하고 시각화한다.
4. 머신러닝 알고리즘을 위해 데이터를 준비한다.
5. 모델을 선택하고 훈련시킨다.
6. 모델을 상세하게 조정한다.
7. 솔루션을 제시한다.
8. 시스템을 론칭하고 모니터링하고 유지 보수한다.
- 켈리포니아 주택 가격 데이터셋 사용.
1. 큰 그림 보기
- 풀어야 할 문제: 캘리포니아 인구조사 데이터를 사용해 캘리포니아 주택 가격 모델을 만드는 것
- 모델이 전체 시스템에서 어떻게 사용되는지 이해하는게 중요하다.
- 문제 정의
- 지도학습, 비지도학습, 강화학습 중에 어떤 경우에 해당하는가?
- 분류문제인가 회귀문제인가?
- 배치학습, 온라인학습 중 어떤 것을 사용해야 하는가?
- 성능측정 지표 선택
- 위 문제의 경우 회귀 문제이므로 RMSE를 사용한다.
2. 데이터 가져오기
- 수업 자료 코드를 통해 환경구축을 하고 데이터셋을 불러온 후 확인해 본다.(코랩 이용)
- 한 행은 각각의 지역을 나타낸다.
- ocean_proximity만 범주형 칼럼이다.
- 범주형 데이터 구성 확인 .value_counts()
- 숫자형 데이터 구성 확인 describe()
- 히스토그램으로 데이터 분포 살펴보기
- housing_median_age, median_house_value는 제을 오른쪽 꼬릿값이 크다. 이건 정상적인 데이터 분포가 아니다. 아마 조사할떄 특정 값 이상이면 하나의 값으로 묶었을 가능성이 크다. 이렇게 데이터를 전반적으로 살펴봐야한다.
3. 테스트 데이터 만들기
- 좋은 모델을 만들기 위해선 훈련에 사용되지 않고 모델평가만을 위해서 사용될 테스트 데이터셋을 따로 구분하는것이 필요하다. 테스트 데이터셋을 별도로 생성할 수도 있지만 프로젝트 초기의 경우 하나의 데이터셋을 훈련, 테스트용으로 분리하는 것이 일반적이다.
- 보통 train 80%, test 20%로 분할한다.
- 각 데이터셋의 id는 안전한 feature를 사용해야 한다.
- 직접 분할하는 방식을 사용해도 좋지만 scikit-learn에서 제공하는 train_test_split() 함수를 사용하는게 더 좋다.
- 계층적 샘플링(stratified sampling)
- 전체 데이터를 계층이라는 동질의 그룹으로 나누고, 테스트 데이터가 전체 데이터를 잘 대표하도록 각 계층에서 올바른 수의 샘플을 추출
- 계층적 샘플링을 위해 새로운 feature를 만든다.
- 구간별로 라벨링 해주기
- 사이킷런은 계층적 샘플링을 위한 도구를 이미 제공한다!
데이터 이해를 위한 탐색과 시각화
- 원래 데이터 손상시키지 않기 위해 카피본 만들기
- 지리적 데이터 시각화
- alpha 옵션을 주면 밀집된 지역을 더 강조할 수 있다.
- 더 다양한 정보 표시
- s: 원의 반지름 => 인구
- c: 색상 => 가격
- 상관관계 관찰하기(Correlations) 관찰하기
- Scatter matrix 확인하기
- 특성 조합들 실험
- 여러 특성(feature, attribute)들의 조합으로 새로운 특성을 정의해 볼 수 있음
- 예를 들자면, 가구당 방 개수, 침대방(bedroom)의 비율, 가구당 인원
- 데이터 탐색 과저은 보통 한번으로 끝나지 않고, 모델을 만들고 문제점을 분석한 뒤 다시 실행하게 된다.
머신러닝 알고리즘을 위한 데이터 준비
- 데이터 준비는 데이터 변환(data transformation)과정으로 볼 수 있다.
- 데이터 수동변환 vs 자동변환(함수 만들기)
- 데이터 자동변환의 장점들
- 새로운 데이터에 대한 변환을 손쉽게 재생산(reproduce)할 수 있다.
- 향후에 재사용(reuse)할 수 있는 라이브러리를 구축하게 된다.
- 실제 시스템에서 가공되지 않은 데이터(raw data)를 알고리즘에 쉽게 입력으로 사용할 수 있도록 해준다.
- 여러 데이터 변환 방법을 쉽게 시도해 볼 수 있다.
데이터 정제(Data Cleaning)
- 누락된 특성(missing value)을 다루는 방법들
- 해당 구역을 제거(행을 제거)
- 해당 특성을 제거(열을 제거)
- 어떤 값으로 채움(0, 평균, 중간값 등)
- 지우는 방법들(행을 삭제, 열을 삭제)
- 중간값으로 채우기
- scikit learn 이용하기
'프로그래머스 AI 데브코스 5기 > Machine Learning' 카테고리의 다른 글
Machine Learning 기초 - Linear Algebra, Matrix Calculus (0) | 2023.04.19 |
---|---|
End-to-End 머신러닝 프로젝트 - 2 (2) | 2023.04.19 |
기계학습 III (0) | 2023.04.16 |
기계학습 II (0) | 2023.04.15 |
기계학습 I (0) | 2023.04.15 |