728x90
1. Fundamentals of Machine Learning
기존의 데이터를 바탕으로 알고리즘을 사용해 새로운 모델을 만들고, 해당 모델에 새로운 데이터를 적용하여 패턴을 학습하고 결과를 추론하는 기법
어플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 추론하는 알고리즘 기법을 통칭
- 현실 세계의 매우 복잡한 조건으로 인해 기존의 소프트웨어 코드만으로는 해결하기 어려웠던 많은 문제점들을 이제 머신러닝을 이용해 해결해나가고 있음
- 데이터 마이닝, 영상인식, 음성 인식, 자연어 처리에서 머신러닝을 적용하면서 급속하게 발전이 가능하게 됨
Artificial Intelligence 인공지능
인간의 지능(지적능력, 사고방식, 학습, 추론) 을 지닌 컴퓨터 시스템을 인공적으로 구현한 기술
Deep Learning 딥러닝
머신러닝의 방법론 중 하나
비선형 정보처리를 수행하는 계층을 여러 겹으로 쌓아서 학습모델을 구현하는 머신러닝의 한 분야
엄청나게 많은 데이터에서 중요한 패턴을 잘 찾아냄, 규칙도 잘 찾아내고, 의사결정을 잘하게 됨
머신러닝 왜 필요한가?
- 현실 세계의 복잡한 업무와 규칙을 구현하기 위한 매우 복잡하고 방대한 코드: 예외처리 if else 구문이 계속 필요
- 수시로 변하는 업무 환경, 정책, 사용자 성향에 따른 어플리케이션 구현의 어려움
- 많은 자원과 비용을 통해서 구현된 어플리케이션의 예측 정확성 문제
- 동일한 숫자라 하더라도 여러 번형으로 인해 숫자 인식에 필요한 여러 특징 feature들을 if else와 같은 조건으로 구분하여 숫자를 인식하기 어려움
머신러닝과 기존 컴퓨터 사이언스 차이
- Computer Science: Input & Logic
- logic을 내가 만들고 input에 따른 output을 구함
- Machine Learning: Input & Output
- input에 따른 내가 원하는 output을 만들기 위해 logic을 스스로 찾아냄
- 문제와 답을 주고 규칙을 찾음
머신러닝의 학습
- 머신러닝은 이러한 복잡한 문제를 데이터를 기반으로 숨겨진 패턴을 인지해 연결
- 머신러닝 알고리즘은 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위한 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출해냄
머신러닝 기반의 예측 분석 (Predictive Analysis)
- 머신러닝은 데이터를 관통하는 패턴을 학습하고, 이에 기반한 예측을 수행하면서 데이터 분석 영역에 새로운 혁신을 가져옴
- 데이터 분석 영역은 재빠르게 머신러닝 기반의 예측 분석(Predictive Analysis)으로 재편되고 있음
- 많은 데이터 분석가와 데이터 과학자가 머신러닝 알고리즘 기반의 새로운 예측 모델을 이용해 더욱 정확한 예측 및 의사결정을 도출하고 있으며, 데이터에 감춰진 새로운 의미와 인사이트를 발굴해 놀랄 만한 이익으로 연결하고 있음
2. Categories of Machine Learning
머신러닝은 지도학습(Supervised Learning)과 비지도학습(Un-supervised Learning), 강화학습(Reinforcement Learning)으로 나뉜다
Supervised Learning = 지도학습
- Labeled Data를 기반으로 future input이 주어졌을 때 output을 예측
- Output
- Discrete Variable: Classification
- Continuous Variable: Regression
- Regression, Classification(Binary, Multiclass), Recommendation System, Time Series Prediction
Unsupervised Learning = 비지도 학습 = 자율학습
- Unlabeled Data를 기반으로 비지도 학습을 통해 hidden features, structures 등을 찾기
- Unlabeled Data: only inputs, No label, target (No Training Data, 정답이 없다)
- Clustering, Dimensionality Reduction, Outlier Detection
Labeled Data $D(x,y)$
- x: inputs, feature (문제, 입력값)
- y: desired outputs, label, target (정답)
- $(x, y)$ = (문제, 정답)으로 이루어진 Data Set
Specific Machine Learning 유형
- 기호주의: 결정 트리 등
- 연결주의: 신경망/딥러닝
- 유전 알고리즘
- 베이지안 통계
- 유추주의: KNN, SVM
3. Machine Learning의 단점
- 데이터에 너무 의존적임 (Garbage in, Garbage out)
- 학습(training data)시에 최적의 결과를 도출하기 위해 수립된 머신러닝 모델은 실제 환경 데이터(test data) 적용시 과적합 되기 쉬움
- 복잡한 머신러닝 알고리즘으로 인해 도출된 결과에 대한 논리적인 이해가 어려울 수 있음 (머신러닝은 블랙박스)
- 데이터만 집어넣으면 자동으로 최적화된 결과를 도출할 것이라는 것은 환상 (특정 경우에는 개발자가 직접 만든 코드보다 정확도가 더 떨어질 수 있음) 끊임없이 모델을 개선하기 위한 노력이 필요하기 때문에 데이터의 특성을 파악하고 최적의 알고리즘과 파라미터를 구성할 수 있는 고급 능력이 필요함
왜 데이터 수집에 열광하는가?
다양하고 광대한 데이터를 기반으로 만들어진 머신러닝 모델을 더 좋은 품질을 약속한다.
앞으로 많은 회사의 경쟁력은 어떠한 품질의 머신러닝 모델을 가지고 있느냐에 결정될 수 있다.
ML + Python 강점 - Python의 놀라운 인기
- 쉽고 뛰어난 개발 생산성으로 전 세계의 개발자들 뿐만 아니라 Acadmey나 타 영역의 인재들도 Python 선호
- Google, Facebook 등 유수의 IT 업계에서도 Python의 높은 생산성으로 인해 활용도가 매우 높음 (특히 Google)
- 오픈 소스 계열의 전폭적인 지원을 받고 있음
- 놀라울 정도의 많은 라이브러리 지원은 어떠한 유형의 개발도 쉽게 가능 (역으로 선택의 자유가 많아서 머리가 아플 정도)
- interpreter Language의 특성상 속도는 느리지만 쉽고 유연한 특징으로 인해 데스크탑, 서버, 네트웍, 시스템, IOT 등 다양한 영역에서 사용되고 있음
ML + Python 강점 - 뛰어난 확장성, 연계, 호환성
- 많은 라이브러리, 뛰어난 생산성을 가지는 Python 언어
- 분석 영역을 넘어서 ML 기반의 다양한 Application 개발이 쉽게 가능
- 기존 Application 과의 연계도 쉬움 (서로 다른 언어로 개발된 Application의 경우 Rest API)
- Enterprise Architecture에도 연계, 확장 가능 & Microservice 실시간 연계 등
ML + Python 강점 - Deep Learning 으로의 간격
- 유수의 Deep Learning Framework 이 Python 기반으로 작성 (tensorflow backend는 성능 때문에 C/C++로 작성)
- 대부분의 Deep Learning 관련 Tutorial, 설명 자료들이 Python으로 작성되어 제공
- 현 시점에서 Deep Learning을 활용하기에 가장 좋은 시작점은 Python
- ML Package: Scikit-Learn
- DL Package: PyTorch, TensorFlow, Keras
- Linear Algebra, Statistics, Array Package: Numpy(배열, 선형대수), Scipy
- Data Handling Package: Pandas
- Visualization Package: matplotlib, Seaborn
728x90