Database for Everything

[삼성 SDS Brightics] Brightics 서포터즈와 함께 코딩없이 Kaggle Competition 도전하기!_Regression Model 적용, Kaggle competition submission까지 ③ 본문

삼성 SDS Brightics

[삼성 SDS Brightics] Brightics 서포터즈와 함께 코딩없이 Kaggle Competition 도전하기!_Regression Model 적용, Kaggle competition submission까지 ③

Yeenn 2021. 8. 17. 15:34
728x90

 

 

안녕하세요! Brightics 서포터즈 yeenn입니다.

 

이제 Brightic3의 마지막 팀 활동 팀분석 미션도 거의 마지막을 향해 달려가고 있는 중인데요!

 

분석 프로젝트 마무리와 더불어 튜토리얼 영상을 제작해야 하기 때문에 지난 주 역시 저희 Brightic3는 열심히 줌 회의와 카톡 회의를 거쳐

 

분석 프로젝트 모델링을 최종 마무리하고, 본격적인 영상 제작에 들어갔습니다!

 

 

 

사실, ProDS 시험이 2주도 채 남지 않은 상황이라 하루 일정의 상당 부분을 시험 준비에 할애하고 있는 상황인데요, 

튜토리얼 영상과 시험 준비를 잘 병행하며 끝까지 좋은 성과로 활동을 마무리 지을 수 있도록 우리 Brightic3 3조 팀원들과 함께 으쌰으쌰 해보겠습니다! :>

 

 

이 쯤에서 다시 홍보하는 ProDS 시험..! 

데이터 분석 역량강화, 데이터 분석 자격증 취득 등에 관심이 있으신 분들은 아래 포스팅을 참고해주시면 좋을 것 같습니다! 

https://yeenn-db.tistory.com/20

 

[삼성 SDS Brightics] 삼성 임직원 1만 5천명이 응시한 데이터 분석 자격시험, "ProDS"를 알아보자

안녕하세요, 브라이틱스 서포터즈 yeenn입니다! 빅데이터 시대로 접어들면서 데이터의 중요성, 데이터 분석 역량이 점점더 강조되고 있는 요즘인데요, 2019년 데이터산업 시장규모는 16조 8,693억원

yeenn-db.tistory.com

 

 

 

 


 

지난 포스팅에서는 HousePrice.csv의 데이터 전처리를 마무리하고, Feature Engineering과정과 Linear Regression 회귀모형 적합과정까지 살펴봤었는데요,

 

https://yeenn-db.tistory.com/25

 

[삼성 SDS Brightics] Brightics 서포터즈와 함께 코딩없이 Kaggle Competition 도전하기!_데이터 전처리, EDA,

https://www.youtube.com/watch?v=GjWg866IvYE 시작하기 전 홍보..!ㅎㅎㅎ 드디어 저희 3조 Brightic3의 영상이 유튜브에 업로드 완료되었습니다! 사실 업로드는 n일전에 되었지만..블로그 홍보는 처음이네요!!..

yeenn-db.tistory.com

 

이번 포스팅에서는 이어서 데이터의 Test set과 Train set을 연결하여 회귀분석을 진행하고, 

예측력을 높이기 위해 회귀모형을 변경하여 적용하는 방법,

그리고 이렇게 최종적으로 예측된 결과를 Kaggle competition에 제출하는 법까지 살펴보도록 하겠습니다!

 

 

 

 

Train set - Test set 연결

 

House Price data는 임의로 split한 데이터가 아니라, test set과 train set이 분리되어 있는 데이터기 때문에, 앞서 train set에 처리해주었던 전처리를 test set에도 그대로 적용해주어야 했습니다.

 

하지만 앞에서도 보셨듯이 함수 블록의 개수가 많고 복잡하기 때문에, 이를 하나하나 다시 처리해주기에는 무리가 있다고 생각했습니다. 

 

이 때 사용할 수 있는 Brightics의 편리한 기능은? Clipboard 기능입니다!

 

이 Clipboard 기능을 사용하면, 지정한 범위의 함수 블록을 그대로 복사하여 연결할 수 있는데요, 

 

 

test  set에 train set과 같은 전처리 과정을 적용하기 위해 위와 같이 마우스로 복사하고자 하는 함수 블록의 범위를 드래그하여 지정한 후, 우측 하단에 있는 clipboard 아이콘을 클릭해주었습니다.

 

 

 

Clipboard 복사 버튼을 누르면, Brightics 화면의 우측 상단의 Function Clipboard 에 복사한 범위의 함수 블록이 있는 것을 확인할 수 있습니다! 이를 그대로 드래그하여 이어 붙이고 싶은 함수 블록 뒤에 연결해주시면, 

 

 

 

위와 같이 test set에도 train set과 동일한 함수블록이 적용된 것을 확인할 수 있습니다! 

Load 함수부터 복사를 해주었기 때문에, 

load path에서 test set 파일의 주소를 불러와 전체 모델을 run 해주어, 

 

 

 

test set의 전처리도 빠르게 마무리 되었습니다!

 

 

 

 

Regression Train-Predict - AdaBoost

 

지금까지는 Linear Regression으로 회귀분석을 진행했는데요,

단순히 다중선형회귀분석방법을 통해 Saleprice변수의 값을 예측하는 것보다 모델의 성능을 높일 수 있는 방법을 고민하다가,

Brightics에서 제공하는 몇 가지 다른 회귀모형을 통해 예측값의 정확도를 높여보기로 했습니다.

 

첫 번째로는 적용해 볼 회귀모형은 AdaBoost 모델입니다!

 

 

Adaboost 모델이란?

AdaBoost = Adaptive + Boosting

 

-약한 분류기(weak classifier)들이 상호보완 하도록 순차적(sequential)으로 학습하고, 이들을 조합하여 최종적으로 강한 분류기(strong classifier)의 성능을 향상시키는 것

 

[작동방법]

-약한 분류기(weak classifier)들은 한 번에 하나씩 순차적으로 학습을 진행한다.

먼저 학습된 분류기는 제대로 분류를 해내는 데이터와 제대로 분류해내지 못하는 데이터들이 발생한다. 먼저 학습된 분류기가 제대로 분류한 결과 정보와 잘못 분류한 결과 정보를 다음 분류기에 전달한다. 다음 분류기는 이전 분류기로부터 받은 정보를 활용하여 잘 분류해내지 못한 데이터들의 가중치(weight)를 높인다.

 

즉, 이전 분류기가 잘못 분류한 샘플의 가중치를 adaptive하게 바꿔가며 잘 못 분류되는 데이터에 더 집중하여 학습이 더 잘되게 한다. 이러한 특징 때문에 adaptive라는 이름이 붙음. 최종 분류기(strong classifier)는 이전에 학습한 약한 분류기들에 각각 가중치를 적용하고 조합하여 학습을 진행한다. 

 

정리하면, 예측 성능이 낮은 약한 분류기들을 조합하여 최종적으로 조금 더 성능이 좋은 강한 분류기 하나를 만드는 것이다. 약한 분류기들이 상호보완적(adaptive)으로 학습해나가고, 이러한 약한 분류기들을 조합하여 하나의 분류기를 만들기 때문에 boosting이 된다. 

 

 

출처: https://pro-jy.tistory.com/25

 

[머신러닝][딥러닝] 에이다부스트(Adaboost) 개념 정리

이 글은 머신러닝에서 사용되는 에이다부스트(Adaboost)알고리즘에 대해 정리한 글입니다. 에이다부스트를 이해하기 위해 먼저 간단하게 기계학습(machine learning)과 부스트(boost)에 대해 짚고 넘어

pro-jy.tistory.com

 

 

 

AdaBoost Regression Train 함수를 불러와 

Feature Columns에 수치형 변수를 넣어주고,

Label Column에 로그 변환을 마친 SalePrice_New 변수를 입력해주었습니다. 

 

 

 

그 다음, AdaBoost Regression Predict 함수를 test set 모델에 연결하고, 이를 AdaBoost Train과 이어 예측을 진행했습니다. 

 

이후, Kaggle competition submission을 위한 예측 변수 파일을 생성하기 위해 Select Column함수를 이용하여  prediction 변수만 추출하였습니다!

 

 

 

 

 

 

Regression Train-Predict - XGBoost

 

위의 AdaBoost 회귀 모형을 통해 예측한 모델을 Kaggle에 제출하여 받은 점수는 0.17534였는데요, 

 

 

이 보다 조금 더 성능이 좋은 모델을 구현하기 위해서 또 다른 회귀모형 XGBoost 모델을 적용하여 예측력을 높여 보기로 했습니다.

 

 

 

XGBoost  모델이란?


XGBoost를 한 마디로 표현하자면, Decision Tree를 앙상블(ensemble)로 구현해 정확한 예측 성능을 보여주는 Machine Learning 모델입니다. 앙상블은 Bagging과 Boosting으로 구분하는데, XGBoost는 부스팅에 해당합니다. 또한 XGBoost는 Regression과 Classification 모두 가능합니다.

XGBoost의 근원은 GBM(Gradient Boosting Algorithm)에 있지만, GBM은 과적합과 학습속도의 문제가 있기 때문에 GBM의 단점을 보완한 형태로 XGBoost가 개발되었습니다. 

XGBoost에는 많은 장점이 있는데, 그 중 뛰어난 예측 성능과 빠른 학습 시간을 들 수 있습니다. 또한, 과적합(Overfitting)을 컨트롤 할 수 있기 때문에 최근 많은 대회에서 이용되고 있습니다. 


출처: https://muzukphysics.tistory.com/entry/XGBoost-Hyperparameter
(by 물리학과 직장인)

 

 

이러한 정확한 예측과 회귀 성능이라는 장점을 가진 XGBoost 모델을 사용하면,

Linear Regression 과 AdaBoost Regression 모델보다 더 뛰어난 성능으로 모델을 구현할 수 있을 것이라는 기대와 함께..!! 

 

앞의 AdaBoost Regression Train과 Predict 함수를 연결시켜 주었던 것과 동일한 방식으로 XGBoost 회귀 모형을 적용해주었습니다. 

 

 

 

 

 

 

Brightics 에서 Data 다운로드 하기

 

"Brightics 분석을 통해서 예측도 모두 끝냈는데,

예측결과가 포함된 table은 어떻게 파일로 다운받을 수 있을까?"

 

Brightics에서 Data를 다운받는 방법은 2가지가 있는데요, 두 방법 모두 살펴보도록 하겠습니다!

 

 

1) 다운로드 아이콘 누르기

 

 

Select Column을 통해 예측값 SalePrice를 추출한 table을 불러왔습니다! 

table의 우측 상단을 보면 위와 같이 다운로드 모양의 아이콘이 있는데요, 이를 클릭하게 되면,

 

 

 

위와 같은 Data Download 창이 뜹니다. 

Load할 때와 같이 Delimiter을 설정해주고, 

File name을 입력하고 Finish 버튼을 누르면, 

csv 파일 형태로 데이터가 다운로드 됩니다!

 

 

브라이틱스에는 이런 간편한 다운로드 방법도 존재하고, 

데이터 파일의 형태를 변경하여 다운받을 수 있는 함수 블록을 불러와 table을 다운받는 방법도 존재합니다!

 

 

 

2) Write CSV, Write to S3, Write to DB

 

 

Brightics 화면의 우측에 위치한 함수 PALETTE를 열어보면, 다양한 함수 블록들이 종류별로 정리되어있는 것을 확인할 수 있는데요, 이 중 Write 함수인

(Write CSV, Write to DB, Write to S3) 3가지를 사용하면 다운받고자 하는 데이터 파일의 형태를 바꾸어 결과 table을 저장할 수 있습니다. 

 

이번 Kaggle 대회의 submission 형태는 CSV 파일을 권장하기 때문에, 저는 Write CSV 함수를 이용하여 CSV 형태로 예측 data의 결과 table을 다운받아주었습니다!

(위의 직접 다운로드 방법을 이용해도 무방합니다)

 

 

 

Write CSV 파일의 Path에 CSV파일이 저장될 경로를 지정하고 Run을 누르면, 지정한 path에 파일이 저장됩니다! 

 

 

 

 

Submission 파일 만들기

 

먼저 다운로드 한 결과 table의 csv 파일을 엑셀에서 열어줍니다.

 

 

예측 값도 다 있는데 이대로 내면 안되나? 싶은 분들도 있겠지만, 

이대로 내면 제출 오류가 뜹니다...!

submission 파일의 형식을 갖추지 못했기 때문인데요, 

 

해당 Kaggle competition 홈페이지의 sample 제출 파일을 참고하여 최종 submission 파일을 만들어보도록 하겠습니다!

아래의 링크를 보시면, 

 

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data?select=sample_submission.csv 

 

House Prices - Advanced Regression Techniques | Kaggle

 

www.kaggle.com

 

 

 

처음 데이터 분석을 위해 다운을 받았던 data download 리스트에서 sample_submission.csv 파일을 확인할 수 있는데요, 위 파일을 다운받아주세요. 

 

 

Sale Price Column 앞에 ID 컬럼이 삽입되어 있는데요, 이를 그대로 복사해주어야 합니다!

Ctrl + Shift + 아래 방향키(↓) 를 누르면

 

아래와 같이 채워진 셀이 전체 선택이 됩니다. 이때, 복사 버튼을 눌러주시고,

 

 

 

삽입 키를 눌러 SalePrice 컬럼 좌측에 붙여넣어 삽입해주면, 제출을 위한 파일 생성이 완료됩니다!

 

 

 

 

 

Kaggle Competition Submission file 제출

 

이제 위 파일로 Kaggle에 제출을 하고 얻은 결과는...두구두구

 

 

점수를 확인해보니 0.13866이 나왔습니다!

앞서 Linear 모델과 AdaBoost 모델을 썼을 때보다 훨씬 더 좋은 성능을 구현하고 있음을 확인할 수 있었는데요, 

 

이전에 제출한 모델의 성능과 비교하여 향상 여부와 정도를 안내해주는 알림창도 같이 확인할 수 있었습니다:)

(HousePrice 예측 competition은 하루 제출가능 횟수가 10회로 제한되어있으니 참고부탁드립니다!)

 

 

 


 

 

분석 모델링 이후 Brightic3는

몇 차례 더 회의를 거쳐 최종적인 영상 튜토리얼 방향도 확정하고, 본격적인 영상도 제작하기 시작했습니다! 

 

 

튜토리얼 영상에서는, 약 3주차에 걸쳐 분석과정의 알짜배기만 포스팅했던 내용들 + a 의 풍성한 how-to Brightics 가 담길 예정이니, 머지 않아 올라올 Brightic3의 두 번째 영상도 많은 기대 바랍니다!! :>

 

 

 

 

다시금 홍보하는 Brightic3 홍보영상

...좋아요..구독..댓글..시청..♥

 

https://www.youtube.com/watch?v=GjWg866IvYE 

 

 

 

본 게시물은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.

728x90
Comments