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를 그대로 사용하고 있기 때문에 맷플롯립도 어느정도는 알고 있어야 한다.