입문자를 위한 머신러닝 개요

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