머신러닝의 개념
머신러닝은 일반적으로, 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다.
업무적으로 복잡한 조건/규칙들이 다양한 형태로 결합하고 시시각각 변하면서 도저히 소프트웨어 코드로 로직을 구성하여 이들을 관통하는 일정한 패턴을 찾기 어려운 경우에 머신러닝은 훌륭한 솔루션을 제공한다.
ex) 스팸메일 필터링, 금융 사기 거래 적발 등
머신러닝은 데이터를 기반으로 숨겨진 패턴을 인지해 문제를 해결하고, 머신러닝 알고리즘은 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위한 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 에측 결과를 도출해 낸다.
데이터마이닝, 영상 인식, 음성 인식, 자연어 처리에서 개발자가 데이터나 업무 로직의 특성을 직접 감안한 프로그램을 만들 경우 난이도와 개발 복잡도가 너무 높아질 수 밖에 없는 분야에서 머신러닝이 급속한 발전을 이루고 있다.
머신러닝의 분류
일반적으로 머신러닝은 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning)으로 나뉜다. (해당 내용은 필자 블로그에 상세하게 있으므로 자세한 설명을 생략한다)
[지도 학습] ▶ 정답인 레이블이 포함되어 있는 학습 데이터를 통해 컴퓨터를 학습시키는 방법
- 분류: 문서를 분류하거나 조직을 그룹으로 나눌 때, 또는 온라인 수강생들을 특성에 따라 분류할 때 사
- 회귀: 독립변수의 조작에 따른 종속변수의 변화를 확인하여 두 변수 간의 관계를 파악
- 추천 시스템: 데이터 내부에 존재하는 항목 간의 상호 관계 혹은 종속 관계를 찾아내는 분
- 시각/음성 감지/인지
- 텍스트 분석, NLP
[비지도 학습] ▶ 입력 데이터에 대한 정답(레이블)이 없는 상태에서 훈련 데이터를 통해 학습시키는 방법
- 클러스터링: 관측된 여러 개의 변수값들로부터 유사성에만 기초하여 n개의 군집으로 집단화하여 집단의 특성을 분
- 차원 축소: 분석대상이 되는 여러 변수의 정보를 최대한 유지하면서 데이터 세트 변수의 개수를 줄이는 탐색적 분석 기법
[강화학습] ▶ 선택 가능한 행동 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 학습 방법
보다 자세한 내용은
데이터 vs 머신러닝 알고리즘
데이터와 머신러닝 알고리즘 모두 머신러닝에는 중요한 요소이다. 일단 머신러닝 세상이 본격적으로 펼쳐진다면 데이터의 중요성이 무엇보다 커진다.
머신러닝의 가장 큰 단점은 데이터에 매우 의존적이라는 것이다.
Garbage In - Garbege Out
: 쓰레기가 들어가면, 쓰레기가 나온다.
즉, 좋은 품질의 데이터를 갖추지 못한다면 머신러닝의 수행 결과도 좋을 수 없다. 머신러닝을 이용해 데이터만 집어넣으면 자동으로 최적화된 결과를 도출할 거라는 믿음은 환상일 뿐이다.
머신러닝 모델의 개선을 위해서 최적의 머신러닝 알고리즘과 모델 파라미터를 구축하는 능력도 중요하지만 데이터를 이해하고 효율적으로 가공, 처리, 추출해 최적의 데이터를 기반으로 알고리즘을 구동할 수 있도록 준비하는 능력이 더 중요할 수 있다.
앞으로 많은 회사의 경쟁력은 어떠한 품질의 데이터로 만든 머신러닝 모델이냐에 따라 결정될 수 있다.
Python vs R
머신러닝 프로그램을 작성할 수 있는 대표적인 오픈 소스 프로그램 언어는 파이썬과 R이다.
물론, C/C++, JAVA 등 컴파일러 기반의 언어도 가능하지만, 파이썬과 R에 비해 개발 생산성이 떨어지고
지원 패키지와 생태계가 활발하지 않다.
R은 통계 전용 프로그램 언어이고,
파이썬은 다양한 영역에서 사용되는 개발 전문 프로그램 언어이다.
저자는 개발 언어에 익숙하지 않으나 통계 분석에 능한 현업 사용자라면 - R을 선택
이제 머신러닝을 시작하려는 사람, 거기에 만약 개발자라면 - 파이썬을 선택
하라고 권유한다.
특히, 파이썬은 딥러닝에 대한 관심이 증가하는 2016년도부터 관심도가 급격히 증가하였고, 무엇보다도 구글, 메타 등 유수의 IT 업계에서도 파이썬의 높은 생산성으로 인해 활용도가 매우 높다.
https://www.tiobe.com/tiobe-index/
또한, 유수의 딥러닝 프레임워크인 텐서플로(TensorFlow), 케라스(Keras), 파이토치(PyTorch) 등에서 파이썬 우선 정책으로 파이썬을 지원하고 있다.
파이썬의 주요 장점 (for 머신러닝)
- 쉽고 뛰어난 개발 생산성으로 전 세계 개발자들이 파이썬을 선호. (구글, 메타 등)
- 오픈 소스 계열의 전폭적인 지원을 받고 있으며 놀라울 정도의 많은 라이브러리로 인해 개발 시 높은 생산성 보장
- 인터프리터 언어(Interpreter Language)의 특성상 속도는 느린 대신, 뛰어난 확장성, 유연성, 호환성으로 인해 서버, 네트워크, 시스템, IOT, 데스크톱까지 다양한 영역에서 사용
- 머신러닝 애플리케이션과 결합한 다양한 애플리케이션 개발 가능
- 엔터프라이즈 아키텍처로의 확장 및 마이크로서비스 기반의 실시간 연계 등 다양한 기업 환경으로의 확산 가능
'[파이썬 Projects] > <파이썬 머신러닝>' 카테고리의 다른 글
[머신러닝] 사이킷런의 model_selection 모듈 (0) | 2024.06.07 |
---|---|
[머신러닝] 사이킷런에 내장된 예제 데이터 세트 (0) | 2024.05.30 |
[머신러닝] 사이킷런 주요 모듈 (0) | 2024.05.30 |
[머신러닝] 사이킷런으로 시작하는 ML (0) | 2024.05.30 |
[머신러닝] 주요 패키지 (0) | 2024.05.25 |