2025. 5. 16. 00:31ㆍML
오늘은 자전거 대여에 관한 정보 및 데이터들을 수집하여, 자전거 렌탈 수요 예측 모델을 만들어 보는게 목표이다.
Azure에서 제공하는 Machine Learning Studio로 실습을 진행할 예정이다.
Azure에서는 데이터의 흐름과 모델 학습까지의 머신러닝을 파이프라인으로 구성할 수 있어, 사용자에게 조금 더 복잡하지 않고, 직관적으로 보여주기 때문에 머신러닝에 익숙하지 않은 사람들도 쉽게 이용을 할 수 있게 서비스를 제공하고 있다.
"UCI" 사이트에 가면 여러가지 데이터들을 받아서 볼 수 있다.
나는 그 중 "Bike Sharing Dataset"을 이용하였다.
실습에 들어가기 앞서, 다중 선형 회귀(Multi Linear Regression)에 대해서 간략히 설명을 하고 넘어가보자.
다중 선형 회귀(Multi Linear Regression)
다중 선형 회귀는 단순 선형 회귀와 달리, 종속변수가 여러 독립변수에 의해 영향을 받는 경우에 사용한다.
쉽게 예를 들어, 시험 점수 예측 모델을 만든다고 할 때, 하나의 요소만 영향을 주는 것이 아니라,
공부 시간, 수면 시간, 출석률 등 여러개의 독립 변수(x들)가 결과(y)에 영향을 준다.
이것이 바로 다중 선형 회귀이다.
그렇다면 이번 실습에서는 왜 다중 선형 회귀 모델이어야 할까?
- 종속 변수(y) = 자전거 수요
- 독립 변수(x) = 기온, 습도, 바람, 계절, 휴일 여부 등...
이렇듯, 여러 개의 독립 변수들이 영향을 주기 때문에 다중 선형 회귀 모델이 적합하다고 볼 수 있다.
먼저, Azure Machine Learning Studio의 Data 탭 상단의 Create 버튼을 클릭하여, 준비한 csv파일을 업로드 해주면 된다.
기본적으로 Compute 인스턴스는 생성을 하고 작업을 해야, 나중에 작업 후 모델을 돌려볼 수 있다.
Compute 인스턴스, Data 까지 모두 준비가 되었다면, 이제 Designer 탭에서 작업을 시작해주면 된다.
좌측에 보이는 Data 리스트에서 내가 업로드 한 Dataset을 드래그로 가져와 준다.
그 다음, Component 탭으로 가서, Select Columns in Dataset 을 가져와서 연결해준다.
현재 데이터 파일에서 특성(feature)으로 사용할 열만 선택해주는 기능을 하는 것이다.
여기서 day, year 컬럼은 모델 학습에 영향이 없는 데이터 이므로, 두 개의 컬럼을 뺀 나머지 컬럼들을 모두 select 해줬다.
다음은 범주형 데이터 -> Categorical 로 변환해주는 작업이다.
Edit Metadata 컴포넌트를 가져와서 변환할 범주형 데이터를 select 해준다.
mnth, season, holiday, weekday, workingday, weatersit 컬럼을 select 한 후, Categorical로 변경해주면 된다.
그리고 이 categorical로 변환된 컬럼들을 one-hot 인코딩 해줘야 한다.
왜 해줘야 할까?
그 이유는, 머신러닝 알고리즘(특히 회귀, SVM, 트리 기반 모델 등)은 대부분 숫자만 처리 가능하기 때문이다.
Convert to indicator values 컴포넌트를 사용하여, one-hot 인코딩을 해주면 된다.
이제 수치형 데이터에 대해서 정규화를 진행해줘야 한다.
정규화 및 표준화를 진행하는 이유를 이번 실습 데이터로 예들 들자면, 이 데이터들의 특성 중 온도, 체감온도, 풍속, 강수량 등은
서로 단위, 분포가 다르다. 이 데이터들을 그대로 학습 시키게 되면 모델 학습에 끼치는 영향력이 균등할 수 없기 때문이다.
위와 같이 Normalize Data 컴포넌트로 정규화를 진행해주었다.
이제 Split Data로 train data, test data 를 나누어 준다.
나는 70%를 학습데이터로 할당해 주었다.
그 다음, Linear Regression 알고리즘을 선택해주고, Train model에 학습데이터와 해당 알고리즘을 연결해준다.
Train model에서는 Label column을 지정해주어야 한다.
이번 실습의 Label column은 rentals 이므로, 이를 지정해주었다.
이제 Score Model로 점수를 매기고, 모델 평가를 해주는 단계이다.
모델 평가는 Evaluate Model 컴포넌트로 할 수 있다.
여기까지 완료했다면, Job을 돌려주면 된다.
Job을 돌리기 전 항상 compute 인스턴스가 running 상태인지 확인하고 돌리기를 권한다.
Jobs 탭에서 현재 진행상황을 확인 할 수 있다.
위 사진처럼 위에서 부터 순차적으로 진행이 되고 있는것을 확인할 수 있다.
모두 진행이 완료되고 나면, Evaluate Model에서 평가 지표를 확인할 수 있다.
지표상으로 보면 그렇게 잘 나온 것 같지는 않다...
이렇게 지표를 확인하고, 다시 전처리 과정이나 알고리즘 선택, 하이퍼 파라미터 등을 수정해 가면서
지표가 더 좋게 나오는 방향으로 업그레이드 해 나가는 것이 머신러닝의 전반적인 과정이라고 볼 수 있다.
'ML' 카테고리의 다른 글
[ML] Linear Regression 정리 (0) | 2025.05.27 |
---|---|
[ML] 머신러닝 모델 검증을 위한 레코드 분할 (0) | 2025.05.07 |