입문자를 위한 머신러닝 개요
Page content
개요
- 캐글 데이터를 불러오는 방법에 대해 숙지한다.
- 머신러닝의 일반적인 내용에 대해 숙지한다.
I. 사전 준비작업
Kaggle API
설치 및 연동해서GCP
에 데이터를 적재하는 것까지 진행한다.
(1) Kaggle API 설치
- 구글 코랩에서
API
를 불러오려면 다음 소스코드를 실행한다.
!pip install kaggle
Requirement already satisfied: kaggle in /usr/local/lib/python3.6/dist-packages (1.5.6)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.24.3)
Requirement already satisfied: certifi in /usr/local/lib/python3.6/dist-packages (from kaggle) (2020.6.20)
Requirement already satisfied: tqdm in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.41.1)
Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.23.0)
Requirement already satisfied: python-slugify in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.0.1)
Requirement already satisfied: python-dateutil in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.8.1)
Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.12.0)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->kaggle) (2.10)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->kaggle) (3.0.4)
Requirement already satisfied: text-unidecode>=1.3 in /usr/local/lib/python3.6/dist-packages (from python-slugify->kaggle) (1.3)
(2) Kaggle Token 다운로드
- Kaggle에서 API Token을 다운로드 받는다.
- [Kaggle]-[My Account]-[API]-[Create New API Token]을 누르면
kaggle.json
파일이 다운로드 된다. - 이 파일을 바탕화면에 옮긴 뒤, 아래 코드를 실행 시킨다.
from google.colab import files
uploaded = files.upload()
for fn in uploaded.keys():
print('uploaded file "{name}" with length {length} bytes'.format(
name=fn, length=len(uploaded[fn])))
# kaggle.json을 아래 폴더로 옮긴 뒤, file을 사용할 수 있도록 권한을 부여한다.
!mkdir -p ~/.kaggle/ && mv kaggle.json ~/.kaggle/ && chmod 600 ~/.kaggle/kaggle.json
Upload widget is only available when the cell has been executed in the current browser session. Please rerun this cell to enable.
Saving kaggle.json to kaggle.json
uploaded file "kaggle.json" with length 64 bytes
- 실제
kaggle.json
파일이 업로드 되었다는 뜻이다.
ls -1ha ~/.kaggle/kaggle.json
/root/.kaggle/kaggle.json
(3) Kaggle 데이터 불러오기
Kaggle
대회 리스트를 불러온다.
!kaggle competitions list
Warning: Looks like you're using an outdated API Version, please consider updating (server 1.5.6 / client 1.5.4)
ref deadline category reward teamCount userHasEntered
--------------------------------------------- ------------------- --------------- --------- --------- --------------
tpu-getting-started 2030-06-03 23:59:00 Getting Started Kudos 190 False
digit-recognizer 2030-01-01 00:00:00 Getting Started Knowledge 2946 False
titanic 2030-01-01 00:00:00 Getting Started Knowledge 22234 True
house-prices-advanced-regression-techniques 2030-01-01 00:00:00 Getting Started Knowledge 5049 True
connectx 2030-01-01 00:00:00 Getting Started Knowledge 768 False
nlp-getting-started 2030-01-01 00:00:00 Getting Started Kudos 1511 True
competitive-data-science-predict-future-sales 2020-12-31 23:59:00 Playground Kudos 7821 False
osic-pulmonary-fibrosis-progression 2020-10-06 23:59:00 Featured $55,000 262 False
halite 2020-09-15 23:59:00 Featured Swag 713 False
birdsong-recognition 2020-09-15 23:59:00 Research $25,000 413 False
landmark-retrieval-2020 2020-08-17 23:59:00 Research $25,000 177 False
siim-isic-melanoma-classification 2020-08-17 23:59:00 Featured $30,000 2208 False
global-wheat-detection 2020-08-04 23:59:00 Research $15,000 1800 False
open-images-object-detection-rvc-2020 2020-07-31 16:00:00 Playground Knowledge 59 False
open-images-instance-segmentation-rvc-2020 2020-07-31 16:00:00 Playground Knowledge 12 False
hashcode-photo-slideshow 2020-07-27 23:59:00 Playground Knowledge 61 False
prostate-cancer-grade-assessment 2020-07-22 23:59:00 Featured $25,000 930 False
alaska2-image-steganalysis 2020-07-20 23:59:00 Research $25,000 1059 False
m5-forecasting-accuracy 2020-06-30 23:59:00 Featured $50,000 5558 True
m5-forecasting-uncertainty 2020-06-30 23:59:00 Featured $50,000 909 False
- 여기에서 참여하기 원하는 대회의 데이터셋을 불러오면 된다.
- 이번
basic
강의에서는house-prices-advanced-regression-techniques
데이터를 활용한 데이터 가공과 시각화를 연습할 것이기 때문에 아래와 같이 코드를 실행하여 데이터를 불러온다.
!kaggle competitions download -c house-prices-advanced-regression-techniques
Warning: Looks like you're using an outdated API Version, please consider updating (server 1.5.6 / client 1.5.4)
sample_submission.csv: Skipping, found more recently modified local copy (use --force to force download)
train.csv: Skipping, found more recently modified local copy (use --force to force download)
test.csv: Skipping, found more recently modified local copy (use --force to force download)
data_description.txt: Skipping, found more recently modified local copy (use --force to force download)
- 실제 데이터가 잘 다운로드 받게 되었는지 확인한다.
!ls
data_description.txt sample_data sample_submission.csv test.csv train.csv
II. 머신러닝 모듈의 변천사
- 그동안 파이썬에서 머신러닝은 주로 싸이킷런 패키지를 활용하여 진행하였다.
- 그러나, 딥러닝의 발전과 함께, 머신러닝도 다양하게 발전해왔기 때문에,
싸이킷런
만 주로 사용하는 것은 좋지 않다. - 2020년 8월 기준 현업에서는 정형데이터와 관련해서는 싸이킷런 외에도 xgboost, lightgbm, catboost, ngboost 등 다양한 모듈 등이 존재한다.
- 또한 pytorch, tensorflow 등과 같은 딥러닝 프레임워크로도 머신러닝 모형을 만들 수 있다.
- 여기에서 문제가 발생이 된다.
III. 머신러닝 공부 방법
- 머신러닝 공부는 어떻게 해야할까?
- 위 내용을 간단하게 요약하면, 알고리즘 공부에 많은 시간을 투자하지 않으며, 최대한 처음부터 구현 하지 말하는 뜻이기도 하다.
- 이유는 모듈의 변천사와 같다.
- 1년간 열심히 배운 모듈 사용법이 1년이 지난 뒤에는 보다 더 좋은 알고리즘이 나올 것이기 때문이다.
- 따라서, 가장 좋은 방법은 업계에서 주로 사용하는 모듈을 확인 후, 그것에 맞게 빠르게 적용하는 것이 중요하다.
(1) 기술 블로그
- 국내외 기술 블로그를 알아두자.
(2) 머신러닝 활용법 확인
- 위 기술 블로그 중에서 우아한 형제들 블로그를 참조한다.
- 이 글 중간에 이러한 내용이 있다.
그 결과 LightGBM이 속도 측면이나 예측력, 일반화 가능성을 모두 고려했을때 가장 좋은 모델로 판단되어 최종 모델로 선정되었습니다. 참고로, 위 과정에서 Pandas 및 Numpy, Scikit-learn를 주로 이용했고, 클래스 및 함수를 모듈로 저장해 엔지니어에게 전달하였습니다. 엔지니어는 테이블 자동화 작업을 진행하여, 운영 담당자가 직접 SQL을 통해 데이터룰 추출할수 있도록 지원하였습니다.
- 업계의 큰 데이터를 다루고 실무에 바로 적용하기에는 입문자에게 쉬운 일은 아니다. 따라서, 현직의 이러한 글이 일종의 머신러닝 활용법에 가이드를 줄 수 있기 때문에 보다 깊은 공부를 하려면 업계의 이러한 트렌드를 주시한 뒤, 본격적으로 공식 홈페이지의 튜토리얼을 확인해서 빠르게 습득해야 한다.
IV. 머신러닝 워크플로우
- 머신러닝은 크게 4가지로 구현된다.
- 첫번째, 데이터 수집
- 두번째, 데이터 탐색 및 전처리
- 세번째, 모형 개발 및 학습
- 네번째, 모형 배포 및 서비스
- 이 때, 두가지 사실만 이해하면 된다.
- 머신러닝은
예측(Prediction)
이다. - 머신러닝은
서비스(Service)
이다.
- 머신러닝은
(1) 예측으로서의 머신러닝
- 머신러닝은 통계와 다른가?
- 우선, 통계의 가장 중요한 목적 중의 하나는 데이터 변수간의 관계에 대해 밝히는 데 주 목적이 있다.
- 예) 차이 검정, 인과관계, 경로분석
- 통계는 현상을 진단하는 데 매우 유용한 정보를 제공한다.
- 이러한 통계를 기반으로 미래 정책에 도움을 주는 보고서 등을 만드는 데 좋은 근거 자료를 제공한다.
- 머신러닝은 반대로
예측(Prediction)
에 주 목적이 있다.- 예측이 결과가 중요하며, 이는 예측의 오차를 어떻게 줄일 것이라는 데 매우 중요한 방점이 있다.
- 즉, 현재 개발중인 모든 머신러닝/딥러닝 모델은 예측의 성능을 어떻게 끌어올린 것인가에 대한 전제를 가지고 출발한다. 이 때 사용되는 다양한 방법론이, 기초 통계와 수학적인 알고리즘 등을 개발 및 발전시키는 것이다.
- 머신러닝이 강조되는 시대에 살고 있어도, 결국 기본적인 원리는 통계에서 출발한다. 즉, 기초통계에 관한 지식 없이 머신러닝 코드를 작성한다면 이는 그저 기능 개발에 머무를 공산이 크다.
- 즉, 다음장에서 말할 서비스로서의 머신러닝은 기능하지 못한다.
(2) 서비스로서의 머신러닝
- 머신러닝/딥러닝이 예측에 주요한 목적이 있다면, 그럼 질문을 던져야 한다.
- 머신러닝/딥러닝은 모형은 어디에서 사용될 것인가?
- 머신러닝/딥러닝 모형의 주 목적이 개발이라면, 이는 곧 예측이 필요한 모든 서비스 업종에 적용될 수 있다는 뜻이다.
- 업종불문, 예측에 기반하여 움직이는 모든 비즈니스 영역에 해당되는 것이다. 심지어 일반 식당에서도 사용이 가능하다.
- 그런데, 예측력이 떨어지면 사용할 수 있을까?
- 그 모형은 사용하지 못한다.
- 모형 사용의 기본적인 조건은 현업에서
인간의 예측력 및 실행력
보다 좋아야 사용할 수 있다. - 즉, 인간보다 예측력이 뛰어나지만 실행력이 떨어지면 사용은 어렵다.
- 머신러닝 서비스의 핵심은 결국 주 사용자가 편안하게 만들어주어야 하는데 방점이 있다.
- 여기서 편안하다는 것은 자동화가 가능해야 의미가 있다는 뜻이다.
(3) 머신러닝의 종류 및 절차
- 머신러닝을 수행하는 기본적인 방법은 다음과 같다.
-
우선 데이터 수집이 필요하다
- 데이터 수집은, 주로 엑셀 및 DB에서 불러온다.
-
데이터 전처리
- 모든 데이터 분석의 업무는 데이터 가공부터 진행한다.
- 가장 어려운 부분은 정규표현식을 활용한 데이터 전처리 등이 있다.
-
데이터 변환
- 가상의 분석 테이블을 만드는 과정이다.
- 이 때, 일종의 분석의 목적 및 방향성이 정해진다.
-
데이터 시각화
- 데이터 시각화에도 방법이 있다.
- 데이터 변수의 종류에 따라 시각화를 하는 것을 추천한다.
-
이러한 시각화는 근래에는 대시보드 개발로 많이 활성화가 되어가고 있다.
-
데이터 모델링
- 데이터 모델링은 통계적 모델링, 머신러닝 모델링이 있다.
- 머신러닝의 종류도 다양하며, 한계도 존재한다.
- 데이터 모델링은 통계적 모델링, 머신러닝 모델링이 있다.
-
모형결과 배포 및 보고서
- 서비스로 국한한다면 모형결과를 배포하는 것이 최종 완성본이다.
V. 결론
- 캐글 API를 활용하여 데이터를 불러오는 방법에 대해 기술했다.
- 머신러닝 모듈 및 공부 방법에 대해 기술하였다.
- 머신러닝 워크플로우에 대해 간단하게 확인하였다.