본문 바로가기

AI Study/Machine Learning

Python 기반의 머신러닝 생태계 이해하기

01. 머신러닝 개념

 

>> 머신러닝이란?

 

머신 러닝은 사람이 경험을 통해 학습하는 것과 같은 활동을 컴퓨터가 수행할 수 있도록 가르치는 데이터 분석 기법입니다. 머신 러닝 알고리즘은 미리 결정된 방정식을 모델로 의존하지 않고, 계산 방법을 사용하여 데이터에서 직접 정보를 “학습”합니다. 학습할 수 있는 샘플 수가 증가함에 따라 알고리즘 성능이 향상됩니다.

 

또한, 달리 표현하면 애플리케이션의 수정 없이 데이터를 기반으로 패턴을 학습하여 결과를 예측하는 알고리즘 기법을 통칭한다고 말할 수 있습니다.

 


>> 머신러닝의 특징

 

  1. 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출해 냄
  2. 예측 오류를 최소화하기 위해 다양한 수학적 기법을 적용함
  3. 단점 : 데이터 의존적. 일명 Garbage in, Garbage out 으로 일컫는 성격을 지님
  4. 최적의 알고리즘, 모델 파라미터 구축 + 데이터의 전처리가 합쳐질 때 완성됨

 

데이터에 의존적이라는 말은, 달리 말하면 더 많은 데이터가 있을 때 다양한 질문이 나올 수 있고, 그에 따라 더 폭넓은 답변이 도출될 수 있다고 생각할 수 있습니다.


>> 머신러닝의 분류

 

figure 1. 머신러닝의 분류

 

  • 지도학습(Supervised Learning) / 비지도학습(Un-supervised Learning)/ 강화학습(Reinforcement Learning)
  • 지도학습 : 분류/회귀/추천시스템/시각,음성감지,인지/텍스트분석,NLP
  • 비지도학습 : 클러스터링,차원축소,강화학습

 

머신 러닝은 크게 두 가지 유형의 기법을 사용합니다. 첫째로, 지도(supervised) 학습 기법은 출력을 예측할 수 있도록 알려진 입력 및 출력 데이터를 기반으로 모델을 학습합니다. 둘째로, 비지도(unsupervised) 학습 기법은 입력 데이터에서 숨겨진 패턴이나 고유 구조체를 찾습니다.

 


 

02. 파이썬 머신러닝 생태계를 구성하는 주요 패키지

 

  • 머신러닝 패키지
    • Scikit-Learn : 데이터 마이닝 기반의 머신러닝에서 독보적인 위치를 차지하고 있음
  • 행렬/선형대수/통계 패키지
    • Numpy : 행렬과 선형대수를 다루는 패키지
      • 머신러닝의 이론적 백그라운드는 선형대수와 통계
      • sklearn을 비롯한 많은 머신러닝 패키지가 넘파이 기반으로 작성되어 있음
    • Scipy : 자연과학과 통계를 위한 패키지
      • sklearn의 패키지 중 Scipy로 구성된 부분도 다수 존재

  • 데이터 핸들링
    • Pandas : 대표적인 데이터 처리 패키지
      • Numpy (행렬 기반 데이터 처리) VS Pandas (2차원 데이터 처리)
      • 데이터 처리에 특화, 더 용이함
      • Matplotlib을 호출해 쉽게 시각화 가능

  • 시각화  
    • Matplotlib : 가장 기본적
      • 세분화된 API로 인해 익히기 어려움
      • 투박한 UI
      • 다른 패키지에 비해 긴 코드 작성이 필요 
        figure 2. matplotlib의 기본 그래프 예시
    • Seaborn
      • Matplotlib을 기반으로 만들었지만, Pandas와 연동이 더 쉬움
      • 함축적인 API
      • 깔끔한 UI 제공
        figure 3. Seaborn의 기본 그래프 예시
    • Plotly
      • 개인적으로 필자가 사용중인 라이브러리로, 데이터 분석 대회에 출전하면서 접하게 된 시각화 라이브러리
      • Seaborn에 비해 더욱 깔끔한 UI와 interactive 기능을 제공하여, hover mode, zoom in/out 기능으로 활용성이 큼
      • 또한 Seaborn이나 matplotlib과 달리, 사기업으로 운영되고 있으므로 지속적인 패키지 확장이 기대됨
        figure 4. Plotly 기본 그래프 예시
  • IPython (Interactive Python)
    • Jupyter Notebook
      • 대화형 파이썬 툴(프로그래밍 + 설명 요소)
      • 특정 코드 영역별로 개별 수행을 지원 -> 영역별 코드 이해 쉬움

 

* 출처

1. 파이썬 머신러닝 완벽가이드

2. Gallery — Matplotlib 3.4.3 documentation (figure 1)

3. https://learning.oreilly.com/library/view/deiteo-gwahageul-wihan/9791162240984/chapter-01.html (figure 2)

4. Example gallery — seaborn 0.11.2 documentation (pydata.org) (figure 3)

5. 7 of the Dash Community’s Latest Creations | by plotly | Plotly | Medium (figure 4)

6. 회귀 VS 분류 - Machine learning 1 (opentutorials.org)