AI/Machine Learning

파이썬 라이브러리를 활용한 머신러닝 (1)

밍츠 2021. 1. 15. 16:51

2021/01/15 

 

1. 머신러닝으로 풀 수 있는 문제

  • 지도 학습 (supervised learning)
    • 입력 데이터로부터 기대한 출력이 나오도록 알고리즘을 가르치는 것이기 때문에 입력과 출력으로부터 학습하는 머신러닝 알고리즘이다.
    • 분석하기 좋고 성능을 측정하기 쉽다 
지도 학습 예시 입력 출력
편지 봉투에 손으로 쓴 우편번호 숫자 판별 손글씨를 스캔한 이미지 우편번호 숫자
의료 영상 이미지에 기반한 종양 판단 이미지 (+추가 분석) 종양의 양성 여부
의심되는 신용카드 거래 감지 신용카드 거래 내역 부정 거래의 여부

 

  • 비지도 학습 (unsupervised learning)
    • 입력은 주어지지만 출력은 제공되지 않는다.
    • 성공 사례는 많지만 이해하거나 평가하는 일은 쉽지 않다.

 

비지도 학습 예시 입력
블로그 글의 주제 구분 텍스트 데이터
고객들을 취향이 비슷한 그룹으로 묶기 고객 데이터
비정상적인 웹사이트 접근 탐지 웹 트래픽

지도학습과 비지도학습 모두 컴퓨터가 인식할 수 있는 형태로 입력 데이터를 준비하는 것이 중요하다.

 

데이터를 엑셀 테이블처럼 생각하면 편리하다

  • 샘플 (sample), 데이터 포인트 (data point) : 하나의 개체 혹은 행
  • 특성 (feature) : 샘플의 속성, 즉 열

 

2. 문제와 데이터 이해하기

머신러닝 프로세스에서 가장 중요한 과정은 사용할 데이터를 이해하고 그 데이터가 해결해야할 문제와 어떤 관련이 있는지를 이해하는 일이다. 데이터 셋으로 무엇을 하는 것인지 머신러닝 모델을 만들기 전에 반드시 이해해야 한다.

알고리즘마다 잘 들어맞는 데이터나 문제의 종류가 다르기 때문이다.

 

머신러닝 솔루션을 만들 동안 다음과 같은 질문들에 대한 답을 해보거나 마음에 새겨둬야 한다.

  • 어떤 질문에 대한 답을 원하는가? 가지고 있는 데이터가 원하는 답을 줄 수 있는가?
  • 내 질문을 머신러닝의 문제로 가장 잘 기술하는 방법은 무엇인가?
  • 문제를 풀기에 충분한 데이터를 모았는가?
  • 내가 추출한 데이터의 특성은 무엇이며 좋은 예측을 만들어낼 수 있을 것인가?
  • 머신러닝 애플리케이션의 성과를 어떻게 측정할 수 있는가?
  • 머신러닝 솔루션이 다른 연구나 제품과 어떻게 협력할 수 있는가?

머신러닝 솔루션을 구축하다가 궁극적인 목표를 망각하기 쉬우므로 유념해야한다.

 

3. 왜 파이썬인가?

파이썬 (Python)은 데이터 과학 분야를 위한 표준 프로그래밍 언어가 되어 가고 있다. 파이썬은 데이터 적재, 시각화, 통계, 자연어 처리, 이미지 처리 등에 필요한 라이브러리들을 가지고 있다. 

 

  • scikit-learn
    • 매우 인기가 높고 독보적인 파이썬 머신러닝 라이브러리이다.
    • 두 개의 파이썬 패키지 Numpy, Scipy를 사용한다.
  • 대표적인 파이썬 배포판
    • Anaconda
    • Enthought Canopy
    • Python(x,y)

파이썬을 이미 설치했다면 pip 명령을 사용하여 필요한 패키지를 설치할 수 있다.

 

$ pip install numpy scipy matplotlib ipython scikit-learn pandas pillow imageio

 

 

 

4. 필수 라이브러리와 도구들

Numpy

  • 파이썬으로 과학 계산을 하려면 꼭 필요한 패키지이다.
  • 다차원 배열을 위한 기능과 선형 대수 연산과 푸리에 변환 같은 고수준 수학 함수와 유사난수 생성기를 포함한다.
  • scikit-learn에서 Numpy 배열은 기본 데이터 구조로 Numpy 배열 형태의 데이터를 입력으로 받는다.

SciPy

  • 고성능 선형 대수, 함수 최적화, 신호 처리, 특수한 수학 함수와 통계 분포 등을 포함한 많은 기능을 제공한다.
  • 가장 중요한 기능은 scipy.sparse로 이 모듈은 scikit-learn에서 데이터를 표현하는 또 하나의 방법인 희소 행렬 기능을 제공한다.

 

 

matplotlib

  • 선 그래프, 히스토그램, 산점도 등을 지원하며 출판에 쓸 수 있을 만큼의 고품질 그래프를 그려준다.
  • 데이터 분석 결과를 다양한 관점에서 시각화할 수 있다.

pandas

  • 데이터 처리와 분석을 위한 파이썬 라이브러리이다.
  • R의 data.frame을 본떠서 설계한 DataFrame이라는 데이터 구조를 기반으로 만들어졌다.

  • SQL처럼 테이블에 쿼리나 조인을 수행할 수 있다.