입문자를 위한 머신러닝 개요
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
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를 활용하여 데이터를 불러오는 방법에 대해 기술했다.
- 머신러닝 모듈 및 공부 방법에 대해 기술하였다.
- 머신러닝 워크플로우에 대해 간단하게 확인하였다.