1 분 소요

1. 머신러닝 개념

1) 머신러닝 분류

  • 지도 학습 (Supervised Learning)
    • 레이블링된 데이터를 사용하여 모델을 훈련시킴.
    • 즉, 입력 데이터와 출력 데이터(라벨) 사이의 관계를 모델에게 학습 시킴
    • 예 : 과일 이미지가 주어졌을 때, 해당 과일의 이름(레이블)을 출력할 수 있는 분류 모델을 구축하는 것.
    • 분류, 회귀, 추천 시스템, 시각/음성감지/인지, 텍스트분석, NLP
  • 비지도 학습 (Un-Supervised Learning)
    • 레이블링되지 않은 데이터를 사용하여 모델을 학습시키는 것
    • 즉, 모델이 입력 데이터의 패턴이나 구조를 찾아내도록 하는 것.
    • 예 : 과일 이미지 데이터가 주어졌을 때, 유사한 이미지들을 같은 클러스터로 묶는 클러스터링 모델을 구축하는 것
    • 클러스터링, 차원 축소

3) 데이터 전쟁

  • 머신러닝의 가장 큰 단점은 데이터에 매우 의존적인 것
  • 좋은 품질의 데이터를 갖추지 못한다면 머신러닝의 수행 결과도 좋을 수 없다.
  • 따라서 최적의 머신러닝 알고리즘과 모델 파라미터를 구축하는 능력도 중요하지만 데이터를 이해하고 효율적으로 가공, 처리, 추출해 최적의 데이터를 기반으로 알고리즘을 구동할 수 있도록 준비하는 능력이 더 중요할 수 있다.

4) 파이썬과 R 기반의 머신러닝 비교

  • R
    • 통계 전용 프로그램 언어
    • SPSS, SAS, MATLAB 등 전통적인 통계 및 마이닝 패키지의 고비용으로 고민하던 통계 전문가들이 이를 개선하고자 만든 언어
    • 통계 분석에 특화된 언어이며, 다양하고 많은 통계 패키지를 보유하고 있다는 것이 큰 장점이다.
  • Python
    • 다양한 영역에서 사용되는 개발 전문 프로그램 언어
    • 직관적인 문법과 객체지향, 함수형 프로그래밍 모두를 표괄하는 유연한 프로그램 아키텍처, 다양한 라이브러리 등의 큰 강점을 가지면서 프로그래밍 세계의 주류를 향해 돌진하고 있는 언어이다.
    • 머신러닝 애플리케이션과 결합한 다양한 애플리케이션 개발이 가능하다.
    • 딥러닝 프레임워크인 텐서플로, 케라스, 파이토치 등에서 파이썬 우선 정책으로 파이썬을 지원하고 있다.

5) Python 머신러닝 생태계를 구성하는 주요 패키지

  • 머신러닝 패키지 : 사이킷런(Scikit-Learn)
  • 행렬/선형대수/통계 패키지 : Numpy, SciPy
    • Numpy → 행렬/선형대수
    • SciPy → 자연과학/통계
  • 데이터 핸들링 : Pandas
    • 넘파이는 행렬 기반의 데이터 처리에 특화돼 있어서 일반적인 데이터 처리에는 부족한 부분이 많은 반면,
    • 판다스는 2차원 데이터 처리에 특화되어 있으며 넘파이보다 훨씬 편리하게 데이터 처리를 할 수 있는 많은 기능을 제공한다.
  • 시각화 : matplotlib, Seaborn
    • matplotlib : 파이썬의 대표적인 시각화 라이브러리. 하지만 너무 세분화된 api로 익히기 번거롭다.
    • seaborn : matplotlib을 기반으로 만들어졌지만, 판다스와의 쉬운 연동, 더 함축적인 API, 분석을 위한 다양한 유형의 그래프/차트 제공 등으로 파이썬 기반의 데이터 분석가/과학자에게 인기를 얻고 있다.
    • 하지만 여전히 세밀한 부분의 제어는 맷플롯립의 API를 그대로 사용하고 있기 때문에 맷플롯립도 어느정도는 알고 있어야 한다.