본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Machine Learning

Azure ML Studio 실습: Walmart 판매액 예측 모델

by iamlucia 2020. 12. 28.


Walmart 관련 데이터 기반 판매액 예측 모델 구축

 

1. Walmart data Preproocessing 

 

> 데이터 전처리 구조 확인

우리가 알고자 하는 것 Label = 판매량

 

 

> 데이터 셋 업로드

 

DATASETS > +NEW > Local File 업로드 선택 
업로드 완료 확인 

 

 

 

> 데이터셋 불러오기 

 

Saved Datasets > My Datasets 

 

데이터 업로드하자마자 ML Studio에서 데이터를 다 분석했기 때문에
학습을(Run) 시키지 않고 바로 시각화(Visualize) 가능

 

 

> 데이터셋에서 원하는 컬럼만 선택

 

 

Markdown 컬럼 부분에는 Null 값이 너무 많음

해당 컬럼을 제외하고 분석하기 위한 사전 조작 필요

 

 

> Select Columns 모듈 추가 

Data Transformation > Manupulation > Select Columns in Dataset 

 

> 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 확인! 

조인 완료되어 Type Size와 같이 Store데이터에있던 컬럼도 확인 가능

 

 

 

💡 데이터를 분석하는 입장에서 컬럼명을 통일하는 것이 분석에 좋다. 

 

> 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 로 수정

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이 입력받는 첫 번째 칸은 학습 완료된 모델, 두번째 칸은 테스트용 데이터 

 

 

파라미터를 조정하면서 더 미세하게 예측력을 높일 수 있다. 

 

Decision Forest 회귀 알고리즘에서의 실제값과 예측값