Skip to content

파이썬 기반의 머신러닝과 생태계 이해

참고

Inflearn 강의 파이썬 머신러닝 완벽 가이드파이썬 머신러닝 완벽 가이드를 참고로 공부한 내용입니다.

머신러닝의 개념

머신러닝(Machine Learning)의 개념은 다양하게 표현할 수 있으나, 일반적으로는 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다. 예를 들어 업무적으로 복합한 조건/규칙들이 다양한 형태로 결합하고 시시각각 변하면서 도저히 소프트웨어 코드로 로직을 구성하여 이들을 관통하는 일정한 패턴을 찾기 어려운 경우에 데이터를 기반으로 숨겨진 패턴을 인지해 해결한다.

결국 머신러닝 알고리즘은 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위한 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출해 낸다. 그러나 그만큼 데이터에 의존적일 수밖에 없다. 좋은 품질의 데이터를 갖추지 못한다면 머신러닝의 수행 결과도 좋을 수 없다는 의미다. 이런 머신러닝의 단점을 분류해보면 아래와 같다.

머신러닝의 단점

  • 데이터에 너무 의존적이다.
  • 학습 시에 최적의 결과를 도출하기 위해 수립된 머신러닝 모델은 실제 환경 데이터 적용 시 과적합(Overfitting) 되기 쉽다.
  • 복잡한 알고리즘으로 인해 도출된 결과에 대한 논리적 이해가 어려울 수 있다.
  • 끊임없이 모델을 개선하기 위한 노력이 필요하기 때문에 데이터의 특성을 파악하고 최적의 알고리즘과 매개변수(Parameter)를 구성할 수 있는 능력이 필요하다.

참고

과적합(Overfitting)이란 머신러닝에서 학습 데이터를 과하게 학습시켜 실제 데이터에 대해서 오히려 오차가 증가하는 것을 의미한다.

머신러닝이 필요한 영역

머신러닝이 필요한 영역을 생각해보면 아래와 같다.

  • 현실 세계의 복잡한 업무와 규칙을 구현하기 위한 매우 복잡하고 방대한 코드
  • 수시로 변하는 업무 환경, 정책, 사용자 성향에 따른 애플리케이션 구현의 어려움
  • 많은 자원과 비용을 통해서 구현된 애플리케이션의 예측 정확성 문제

머신러닝의 분류

머신러닝은 크게 지도학습(Supervised Learning), 비지도 학습(Un-supervised Learning), 그리고 강화 학습(Reinforcement Learning)으로 구분된다.

참고

해당 강좌 및 책에서는 강화 학습은 따로 다루지 않기 때문에 따로 분류하지 않고 비지도 학습의 종류로 넣었다.

지도학습 (Supervised Learning)

명확한 결정값이 주어진 데이터를 학습하는 것이다. 그 종류로는 아래와 같다.

  • 분류 (Classification)
  • 회귀 (Regression)
  • 추천 시스템
  • 시각 / 음성 감지 / 인지
  • 텍스트 분석, NLP(Natural Language Processing)

비지도학습 (Un-supervised Learning)

결정값이 주어지지 않는 데이터를 학습하는 것이다. 그 종류로는 아래와 같다.

  • 군집화 (Clustering)
  • 차원 축소 (Demension Reduction)
  • 강화학습 (Reinforcement Learning)

넘파이(NumPy)

머신러닝의 주요 알고리즘은 선형대수와 통계 등에 기반한다. 넘파이(NumPy)는 파이썬에서 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 지원하는 대표적인 패키지다. 또한 C/C++과 같은 저수준 언어 기반의 호환 API를 제공하기 때문에 파이썬 언어 자체가 가지는 수행 성능의 제약을 극복할 수 있다. 예를 들어 구글의 대표적 딥러닝 프레임워크 텐서플로(TensorFlow)는 이러한 방식으로 배열 연산 수행 속도를 개선하고 넘파이와 호환될 수 있게 작성됐다.

ndarray

넘파이 기반 데이터 타입은 ndarray다. 이를 통해 다차원 배열(Multi-demension Array)을 쉽게 생성하고 다양한 연산을 수행할 수 있다.