본문 바로가기
DeepLearning Framework & Coding/Microsoft AzureML

[Microsoft AzureML - 14] Titanic Dataset 학습하기

by 노마드공학자 2021. 6. 30.

※ 이전글

[Microsoft AzureML - 0] Intro https://limitsinx.tistory.com/113

[Microsoft AzureML - 1] 개발 환경 세팅 https://limitsinx.tistory.com/114

[Microsoft AzureML - 2] 학습할 데이터 불러오기 https://limitsinx.tistory.com/115

[Microsoft AzureML - 3] 데이터 전처리(Data pre-processing) - I https://limitsinx.tistory.com/116

[Microsoft AzureML - 4] 데이터 전처리(Data pre-processing) - II https://limitsinx.tistory.com/117

[Microsoft AzureML - 5] 학습모델 구현 및 검증 https://limitsinx.tistory.com/118

[Microsoft AzureML - 6] 여러 학습모델 동시에 성능비교 https://limitsinx.tistory.com/119

[Microsoft AzureML - 7] Binary Classification with Kaggle https://limitsinx.tistory.com/120

[Microsoft AzureML - 8] 모델 선정과 Hyper Parameter 자동튜닝 https://limitsinx.tistory.com/121

[Microsoft AzureML - 9] 학습데이터 CSV로 Export하기 https://limitsinx.tistory.com/122

[Microsoft AzureML - 10] 데이터 Feature Engineering https://limitsinx.tistory.com/123

[Microsoft AzureML - 11] 이미지 데이터학습 with Neural Network https://limitsinx.tistory.com/124

[Microsoft AzureML - 12] Train/Test 데이터 구분하기 https://limitsinx.tistory.com/125

[Microsoft AzureML - 13] Kaggle 사용법 https://limitsinx.tistory.com/126

 


 

Titanic Data 학습 및 검증

 

이 전글, "Kaggle 사용법" 에서 한번 설명드렸던 Titanic 데이터를 가지고 검토해보겠습니다.

 

이제까지 저희가 정리했던 기술들을 총망라하여, 제가 짠 전체 Block Diagram부터 보여드리고 설명을 진행하겠습니다.

 

 

Titanic Train Dataset과 Test Set을 구분하여 진행하는 모습입니다.

 

 

여기서 유의하실점은, [Select Columns in Dataset]에서 Column을 동일하게 해주어야 한다는점입니다.

 

예를들어 Train Dataset을 학습시킬때, A/B/C Feature를 통해 진행해주었는데, Test Dataset으로 검증할때는 B/C/D로 해준다고하면... 전혀 엉뚱한값이 나오겠죠??

 

심지어, A는 실수형데이터였는데 B는 String형 데이터라면.. 학습조차 안될겁니다.

 

따라서, 이부분을 반드시 숙지해주셔야합니다!

 

 

학습모델은 [Two-Class Logistic Regression]을 사용했습니다. Neural Network나 Decision Forest를 사용해주셔도 상관없지만, 우리가 찾아야할건 Survival 유무(0/1) 이기에 Binary Classification을 해야하는, Two-class model을 사용한다는점만 유의해주시면 됩니다.

 

[Tune Model Hyperparameters]는 Entire Grid방식으로 진행해주었습니다 :)

 

 

Score Model은 Train 데이터 검증용과 TEST Datset용 두가지가 필요합니다.

 

Training이 얼마나 잘되었는지 확인해야하고 이것을 통해 Test Data도 비슷한수준의 정확도를 가지는지 봐야하기 때문인데요

 

이렇게 Score Model을 나누어주는 이유는 Test/Train 데이터가 다르기때문으로... 이전글에서 다루었기에 길게 정리하진 않겠습니다.

 

여기까지만 진행해주시면 학습완료입니다.

 

하기 이미지는, 바로 Kaggle에 제출할 수 있도록 데이터를 CSV파일로 자동정리하기위해 만든것입니다.

 

 

Kaggle에 제출할때는 Passenger ID/Survival 이렇게 두가지 Column으로 제출해야한다고 말씀드렸죠??

 

요런식으로 결과가 나오게 하기위해 Add Columns를 통해 왼쪽에는 Passenger ID를 오른쪽에는 학습결과중 "Scored Labels" 값을 선택해서 정리해준것입니다.

 

여기까지 진행해주시고 csv파일을 Kaggle에 올리면 "에러"가 뜰 확률이 높습니다.

 

그이유는, 빈칸이 있을 수 있기 때문인데요

 

저희가 임의로 몇개의 Feature를 선정하여 학습시켜주었을때, Test Data에서 혹여나 그 Data가 손실된 상태라면 제대로 추정을 할 수 없겠죠?? 이런경우 그냥 빈칸으로 둡니다.

비교적 덜중요한 값들이 손실되면 그냥 추정하는 경우도 있는데, 중요한 데이터손실시 빈칸처리해버립니다

 

이 빈칸에의해 Kaggle 등록시 오류가 생기는거구요

몇개없다면 그냥 0,1 아무값이나 채워주셔도 됩니다.

 

예를들면, 이런경우 업로드시 에러가 납니다.

 

이부분을 채워주면 Kaggle에서 이렇게 결과값을 내놓습니다.

 

90%이상의 정확도달성을 목표로!!

 

학습 모델도 바꾸어보시고, 데이터 전처리도 다르게해보시고... 요리조리 바꾸어가면서 진행해보시면 상당히 재미있습니다 :)

 

 

댓글