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처럼 테이블에 쿼리나 조인을 수행할 수 있다.