Walmart 관련 데이터 기반 판매액 예측 모델 구축
1. Walmart data Preproocessing
> 데이터 전처리 구조 확인
> 데이터 셋 업로드
> 데이터셋 불러오기
데이터 업로드하자마자 ML Studio에서 데이터를 다 분석했기 때문에
학습을(Run) 시키지 않고 바로 시각화(Visualize) 가능
> 데이터셋에서 원하는 컬럼만 선택
Markdown 컬럼 부분에는 Null 값이 너무 많음
해당 컬럼을 제외하고 분석하기 위한 사전 조작 필요
> Select Columns 모듈 추가
> Select Columns 모듈 추가
> Run & Select Colums in Dataset의 모듈의 Visualize 확인
> 데이터 Join
features.csv 와 train.csv 데이터를
'지점' 및 '날짜' 기준으로 Join
> Join Data 모듈 추가
가공된 Feature 데이터와 Train 데이터를 각각
Join Data 모듈의 Input 포인터에 연결
> Join Data 의 Column Selector 클릭하여
왼쪽 및 오른쪽의 각 Key 컬럼을 동일하게 설정: Store, Date
> Run & Visualize 하여 Join 확인
but, 키 컬럼이 두번이나 중복되어 들어갔다
중복된 키 컬럼 해제 하고 다시 run
=
> 데이터 Join
조인완료된 데이터에 stores.csv 데이터를 '지점' 기준으로 Join
> Join Data 모듈 추가 및 데이터셋 연결
Join 키 컬럼을 왼쪽, 오른쪽 모두 동일하게 Store 값으로 지정
> Run 후 Visualize 확인!
💡 데이터를 분석하는 입장에서 컬럼명을 통일하는 것이 분석에 좋다.
> Edit Metadata 모듈 추가
> Edit Metadata '컬럼 셀렉터'에서 모든 컬럼 선택 후,
> 'Selected Columns'에서 선택된 컬럼의 순서대로
'New column names'칸에 새 컬럼명 작성
> Run 후 Visualize 확인!
> 문제 해결: 데이터 타입
지점, 부서 컬럼이 숫자 데이터 타입으로 인식된다.
구별자로 사용된 '숫자'들이 연산되지 않도록,
지점 부서 매장 유형을 맹목적인 숫자로 인식하지 못하게 구별자로만 사용할 수 있게
데이터 타입 변경 필요
> Edit Metadata 모듈 추가
1. Column Selector로 수정하고자 하는 컬럼 선택
2. Categorical 에 해당하는 값을 : Make Categorial 로 수정
> Run 후 Visualize 확인!
> 또 다른 문제
소비자물가지수와 실업률 컬럼이 모두 숫자가 아닌
'문자열' 데이터 타입으로 인식되고 있다.
> Edit Metadata 모듈 추가
1. Column Selector로 수정하고자 하는 컬럼 선택
2. Data Type 값을 : Floating Point 로 수정
> Run 후 Visualize 확인!
데이터 전처리 과정:
정확한 예측을 가능하게 하는 데이터 셋으로 준비하는 과정
2. Walmart data Split and Train Model
💡Split Data의 Random Seed💡
일반적으로 Split 데이터 비율: 7:3 8:2 의 비율로 사용한다
그런데 일반적으로 데이터가 순차적으로 나열되어있기 때문에 그대로 split을 하면
편향된 데이터로 학습이 되거나 테스트가 되는 문제 발생
그래서 Split을 할 때 데이터를 랜덤으로 섞게 하는데,
여기서, 데이터를 섞어도 계속 편향된 자료가 될 수도 있지 않을까?
이게 데이터 분포에 따른 것인지 알고리즘에 의한 것인지 확실하지 않다는 문제가 발생
따라서,
똑같은 분포로 섞이게 하는 것이 중요 : Random Seed (랜덤으로 흔드는 힘을 조절)
섞었는데도 아직 데이터가 편향되어 있다면 Random Seed를 조정하는 것이 필요하다
이제 알고리즘을 적용하여 학습시키고 테스트해보자!
알고자 하는 값: 판매액을 Train Model에서 컬럼으로 지정
Run! 학습을 시키자
> Run & Score Model 시각화 확인
실제값(판매액)과 예측값(Scored Labels)의 차이가 크다.
잠깐, 이러한 차이를 총 8만개의 테스트 셋을 모두 살펴보며
확인해야하는걸까?
따라서,
이러한 확인을 대신해 주는 모델을 추가한다.
> Evaluate -Evaluate Model 추가
> Run & Evaluate Model 시각화 확인
에러값에 대한 메트릭스 확인할 수 있다.
이때, 왜 제곱값도 있을까?
에러값이 너무 작은 경우 그 차이가
미비해보이기 때문에 수치를 제대로 확인하기 위함.
> 모델의 예측력을 높이기 위해서 이러한 에러값 수치를 줄이기 위해 고민해야 한다.
> 또 다른 알고리즘을 적용해서 Linear와 Decision Forest 회귀 알고리즘을 Evalutaion Model에서 확인해보자
* 계속 리마인드: Train Model이 입력받는 첫 번째 칸은 알고리즘, 두번째 칸은 학습용 데이터
Split Data 의 왼쪽 Output은 학습용, 오른쪽 Output은 테이터용 데이터
Score Model이 입력받는 첫 번째 칸은 학습 완료된 모델, 두번째 칸은 테스트용 데이터
'자기발전소 > # Machine Learning' 카테고리의 다른 글
Azure ML Studio 실습: Titanic Mortality Rate (0) | 2020.12.26 |
---|---|
OCR(Optical Character Recognition) 실습 (0) | 2020.12.24 |
Face Recognition 실습 (0) | 2020.12.24 |
Computer Vision API 실습: Object Detection (0) | 2020.12.24 |
Cognitive Services (0) | 2020.12.24 |