상세 컨텐츠

본문 제목

1. 머신러닝 개요

머신러닝 정리

by evaseo 2021. 6. 2. 17:59

본문

배경: 현실세계의 매우 복잡한 조건으로 인해 기존의 소프트웨어 코드만으로는 해결하기 어려웠던 많은 문제점들을 해결하기 위해 필요성 대두

 

 

머신러닝(Machine Learning)

1. 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭

2. 머신러닝 알고리즘: 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위한 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도있는 예측 결과를 도출

3. 머신러닝이 데이터를 관통하는 패턴을 학습하고, 이를 기반한 예측을 수행하면서 데이터 분석 영역에 새로운 혁신을 가져옴

4. 데이터에 매우 의존적이라는 것이 단점 - garbage in, garbage out

 

 

머신러닝 모델 구축 프로세스

1. 피처 처리(feature processing): 피처(feature)의 가공, 변경, 추출을 수행

2. ML 알고리즘 학습/예측 수행

3. 모델 평가

 

 

머신러닝의 분류

1. 지도학습

 (1) 학습을 위한 다양한 피처(feature)와 레이블(label)데이처로 모델을 학습한 뒤, 별도의 테스트 데이터 세트에서 미지의 레이블을 예측하는 방법

 (2) 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측하는 방식 

 (3) 종류

  1) 분류

  2) 회귀

  3) 추천시스템

  4) 시각/음성감지/인지

  5) 텍스트분석, NLP

2. 비지도학습

 (1) 클러스터링

 (2) 차원축소

 (3) 피처 추출(Feature Extraction)

3. 강화학습

 

 

머신러닝 모델을 개선하기 위한 노력

1. 최적의 머신러닝 알고리즘과 모델 파라미터를 구축하는 능력

2. 데이터를 이해하고 효율적으로 가공, 처리, 추출해 최적의 데이터를 기반으로 알고리즘을 구동할 수 있도록 준비하는 능력

 

 

머신러닝 프로그램을 작성할 수 있는 오픈소스 프로그램 언어

1. python, R로 주로 작성

2. C, C++, JAVA 등 컴파일러 기반의 언어

 (1) 개발 생산성 떨어짐

 (2) 지원 패키지와 생태계가 활발하지 않음

 (3) 주로 즉각적인 수행시간이 중요한 머신러닝 애플리케이션(임베디드 영역)에 주로 적용

3. MATLAB

 

 

R

1. 통계 전용 프로그램 언어

2. SPSS, SAS, MATLAB 등 전통적인 통계 및 마이닝 패키지의 고비용의 단점을 개선하고자 만든 언어

3. 다양하고 많은 통계 패키지를 보유

 

 

파이썬(python)

1. 개발 전문 프로그램 언어

2. 장점

 (1) 직관적인 문법

 (2) 객체지향과 함수형 프로그래밍 모두를 포괄하는 유연한 프로그램 아키텍쳐

 (3) 다양한 라이브러리

3. 인터프리터 언어의 특성상 속도가 느림

 

 

파이썬이 R에 비해 머신러닝 프로그램을 작성하기에 뛰어난 점

1. 쉽고 뛰어난 개발 생산성

2. 오픈 소스 계열의 전폭적인 지원받으며 많은 라이브러리로 인해 개발 시 높은 생산성 보장

3. 뛰어난 확장서으 유연성, 호환성으로 인해 서버, 네트워크, 시스템, IOT, 데스크톱 등 다양한 영역에서 사용

4. 머신러닝 애플리케이션과 결합한 다양한 애플리케이션 개발 가능

5. 엔터프라이즈 아키텍처로의 확장 및 마이크로서비스 기반의 실시간 연계 등 다양한 기업 환경으로의 확산 가능

6. 딥러닝 패키지인 텐서플로(TendorFlow), 케라스(Keras), 파이토치(PyTorch) 등에서 파이썬 우선 정책으로 파이썬 지원

 

 

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

1. 머신러닝 패키지

 (1) 사이킷런(Scikit-Learn)

  1) 가장 대표적인 머신러닝 패키지

  2) 넘파이 기반 작성

 (2) 텐서플로(TendorFlow), 케라스(Keras), 파이토치(PyTorch): 딥러닝 패키지

 

2. 행렬/선형대수/통계 패키지

 (1) 머신러닝의 이론적 배경은 선형대수와 통계이므로 필수 패지지

 (2) 넘파이(NumPy): 행렬과 선형대수를 다루는 패키지

 (3) 사이파이(SciPy): 자연과학과 통계를 위한 다양한 패키지

 

3. 데이터 핸들링 패키지

 (1) 넘파이는 행렬 기반의 데이터를 처리에 특화돼 있어서 일반적인 데이터 처리에는 부족

 (2) 판다스(Pandas)

  1) 2차원 데이터(행 row × 열 column) 처리에 특화되어 있어서 편리하게 데이터를 처리할 수 있는 많은 기능 제공

  2) 월스트리트 금융회사의 분석전문가인 웨스 매키니(Wes McKinney)가 회사에서 사용하는 분석용 데이터 핸들링 툴이 마음에 들지않아 개발

  3) 2차원 데이터가 인기있는 이유: 이해하기 쉬운 데이터구조이면서 효과적으로 데이터를 담을 수 있는 구조

  4) 2차원 데이터를 효율적으로 가공/처리할 수 있는 기능 제공

  5) 넘파이 기반

  6) 리스트, 컬렉션, 넘파이 등의 내부 데이터, CSV 등의 파일을 쉽게 DataFrame으로 변경해 데이터의 가공/분석을 편리하게 수행

 

4. 시각화 패키지

 (1) 맷플롯립(Matplotib)

  1) 대표적인 시각화 패키지

  2) 너무 세분화된 API로 학습하기 번거러움

  3) 시각적으로 투박함

  4) 코드가 길어짐

 (2) 시본(Seaborn)

  1) 맷플롯립의 한계점을 보완한 시각화 패키지

  2) 맷플롯립 기반

  3) 판다스와의 쉬운 연동

  4) 함축적인 API

  5) 다양한 유형의 그래프/차트 제공

 

 

 정리

ML 모델을 생성하고 예측을 수행하는 데에 있어서 ML 알고리즘이 차지하는 비중보다 데이터를 전처리하고 적절한 피처를 가공/추출하는 부분이 훨씬 많은 비중을 차지한다. 따라서 파이썬 머신러닝 생태계를 이루고 있는 다양한 패키지에 대한 이해가 중요하다.

'머신러닝 정리' 카테고리의 다른 글

2. 사이킷런(scikit-learn)  (0) 2021.06.06

관련글 더보기