Image
Image

입문자를 위한 머신러닝 개념 이해 및 절차에 대한 글을 정리해봅니다.

현실세계의 다양한 문제점들을 해결하기 위한 수단으로 사용되는 전통적인 방법이 소프트웨어 입니다.

흔히 소프트웨어의 목적은 현실 세계의 문제를 해결하기 위한 솔루션 제공이 그목적이죠.
그래서 소프트웨어를 솔루션이라고 혼용해 사용하기도 합니다.

그런데 현실에 존재하는 다양한 문제들을 지금까지는 개발자들이 직접 제공되는 특정 데이터와 정해진 답 그리고 정해진  룰(로직)을 코딩을 통해  해당 문제점들을 해결하려 노력해왔습니다.
인터넷 혁명과 모바일 혁명 시기를 거치며 빅데이터 시대가 도래하였고 솔루션에 제공되는 데이터의 양과 유형이 매우 다양해지고 처리 로직이 매우 복잡하고 수시로 변경되는 비지니스의 경우 해당 비지니스의 다양한 문제점들을  전통적인  소프트웨어 방식으로 해결하기에는 한계점들이 들어나게됩니다.

이런 비지니스의 경우 전통적 S/W 개발방식보다는 데이터 기반에서  데이터 속에 숨겨져 있는 패턴을 찾고 해당 패턴을  이용해 결과를 예측하는 새로운 문제 해결방식이 사용되기 시작했는데요. 
이러한 데이터 분석 기반의 컴퓨터 자원을 활용해 각종 현실 세계의 다양한 문제점들을 해결하기 위한 새로운 문제 해결 방식을 통칭해 머신러닝이라고 합니다.


1)머신러닝(Machine Learning)이란?

-데이터를 이용해 컴퓨터를 학습시키는 방법론
-사람의 뇌가 학습하는 방법을 컴퓨터를 통해 구현하는 방법 및 관련 기술을 통칭.
-데이터를 기반으로 패턴을 학습하고  결과를 예측하는 알고리즘 기법을 통칭.
-대량의 데이터를 각종 알고리즘을 통한 학습과정을 통해 패턴을 찾아내고 해당 패턴을 기반으로 데이터의 분류나 결과를 예측할수 있게해주는 데이터 분석 및 활용기술
-전통적  S/W로 해결하기 힘든 문제를  데이터 기반에서 특정 패턴을 찾아 각종 문제를 해결한다.
-머신러닝은 데이터분석 영역의 핵심기술로 주로 활용되고 있다.
-데이터 분석가와 과학자들은 머신러닝 알고리즘  기반으로 새로운 예측모델을 만들어 내고 새롭게 만들어진 각종 예측모델을 활용해 정확한 예측과 의사결정을 도출하는데 사용하고 있다.


2)데이터에서 패턴을 찾고 활용하는 방법

-다양한 수학적 기법을 적용해 데이터 내의 숨은 패턴을 찾아낸다.
-머신러닝의 실질적 이론적 배경(알고리즘 실제구현지식)은 선형대수와 통계 기반의 수학과 통계 지식이다.
-수학적 기법을 이용하는 이유는 통계적인 신뢰도 기반에서 예측오류를 최소화 할수 있기 때문
-데이터에서 특징을 추출하는 과정(특징 도출 및 벡터값변환 과정)을 거쳐 학습을 기반으로 데이터를 분류하거나 식별처리합니다. 
-머신러닝의 전반적인 과정은 준비된 데이터를  머신러닝 알고리즘을 통해 분석하여 데이터에서 일정한 규칙(패턴)을 찾고  해당 규칙기반으로 다른 데이터를  분류하거나 결과를 예측한다.


3)머신러닝 활용분야
-개발자가 직접 데이터와 업무로직 기반으로 개발하기에 그 복잡도나 어려움이 큰 분야에 주로 도입
-데이터마이닝,자연어처리,영상인식,음성인식 분야


4) 머신러닝(기계학습) 유형

머신러닝 알고리즘이란  데이터에서 패턴을 찾기위해  데이터를 이용  컴퓨터를 학습시키는데 실제 사용되는  머신러닝 유형별로 활용가능한 각종 수학/통계적 기법을 근간으로하는 머신러닝 학습용 알고리즘 들을 말한다.

가.지도학습(Supervised Learning) 

-데이터와 정답(레이블)을 입력값으로 받아 머신러닝 알고리즘(학습용 알고리즘)을 이용 학습 과정을 거친후  특정 패턴을 찾고 패턴을 통해 다른 데이터의 답을 예측하는 기술
-문제와 답을 주는 지도과정을 거쳐 새로운 문제를 제시했을때 답을 알아맞추게(예측) 하는 방식
-컴퓨터에게 문제(Feature)와 정답(Label)이 있는 데이터(Training Set)를 학습 시킨 후, 운영 데이터(Test Set)를 분류하거나 답을 맞추는 기술
-지도학습 과정을 통해 도출된 패턴을 통해 신규 데이터에 대한 답을 찾거나 분류하는게 목적

EX) 글자 인식 기술

1. 분류

2. 회귀(Regression) 

3. 추천 시스템

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

5. 텍스트분석,자연어처리(NLP)

세부 알고리즘 예시)

K-최근접 이웃(k-Nearest Neighbors)

선형 회귀(Linear Regression)

로지스틱 회귀(Logistic Regression)

서포트 벡터 머신(SVM, Support Vector Machine)

의사결정 트리(Decision Tree)와 랜덤 포레스트(Random Forest)

신경망(Neural Network)


나.비지도 학습(Un-Supervised Learning)

-정답제공 없이 데이터만 입력값으로 받아 머신러닝 알고리즘 기반 학습을 통해 패턴을 찾고 패턴을 통해 다른 데이터값 입력시 해당 데이터에서 규칙성을 찾아내어 데이터를 분류하거나  문제 해결 방법을 찾는 방식
-지도학습처럼 정해진 답을 도출하는게 목적이 아닌 데이터의 규칙성을 찾는게 1차 목적
-비지도 학습은 데이터의 규칙성을 찾아 숨겨진(Hidden) 특징(Feature)이나 구조를 찾는게 목적

-클러스터링 분석(군집화)
-주성분 분석,
-벡터 양자화,
-자기조직화,
-차원축소

EX)이상탐지,금융위험탐지,추천 비지도학습 주요 알고리즘

-군집(Clustering)
- K-평균(k-Means)
- 계층 군집 분석(HCA, Hierarchical Cluster Analysis)
- 기댓값 최대화(Expectation Maximization)

시각화(Visualization)와 차원 축소(Dimensionality Reduction)
- 주성분 분석(PCA, Principal Component Analysis)
- 커널 PCA(Kernel PCA)
- 지역적 선형 임베딩(LLE, Locally-Linear Embedding)
- t-SNE(t-distributed Stochastic Neighbor Embedding)

연관 규칙 학습(Association Rule Learning)
- 어프라이어리(Apriori)
- 이클렛(Eclat)


다. 강화학습(Reinforcement Learning)

-데이터를 입력받고 부분적으로 답을 입력받아 스스로 학습하여 학습된 내용으로 신규 데이터의  최적의 답을  컴퓨터 스스로 찾는 기술. 
-현재 상태를 관찰해서  그때마다 어떻게 대응해야 할지를 결정하는 기술
-지도 학습과 비슷하지만 완전히 정해진 값을 제공하는 것이 아닌 의사결정시 결과값에 대해 중간 중간에 답을 제공한다.
-스스로 학습하고 의사결정을 내릴수 있게 문제를 제공하고 문제에 대한 의사결정을 내리게 하며 답을 중간중간 제공하여 옳은 결정을 내렸을 시 보상을 제공 지속적으로 보상을 얻을수 있는 방향으로 컴퓨터 스스로가 의사결정을 자가학습하게 하는 기술

라. 딥러닝(Deep Learning )

-딥러닝은 지도학습/비지도학습/강화학습 전반에 걸쳐 사용된다.
-사물이나 데이터를 군집화하거나 분류하는 머신러닝 기술
-컴퓨터가 여러 데이터를 이용해 마치 사람처럼 스스로 학습할 수 있게 하기 위해 인공 신경망(ANN)을 기반으로 구축한 기계 학습 분야
-딥러닝 기술을 활용하는 분야는 데이터의 양이 풍부하고, 정확성을 요구하는 분야
-주로 이미지,영상,음성,언어 분야에  특화됨

 

5)머신러닝 모델 개발의 성패요인

-성공적인 머신러닝 모델 개발 = 고품질 데이터 + 최적의 머신러닝 알고리즘
-우선적으로 고품질 데이터 확보가 관건이다.
-머신러닝의 단점은 대단히 데이터 의존적이기에 고품질/대량 데이터가  존재할수록 성공확율이 높다.
-데이터를 이해하고  효율적으로 가공,처리,추출해  최적의 데이터를  기반으로  머신러닝 알고리즘을 작동시킬수 있는 능력보유가 선결조건이고 이후 최적의 머신러닝 알고리즘 과 모델 파라메터를 구축하고 활용할수 있는 능력 보유가 두번째이다.


6)머신러닝 절차




7)머신러닝 모델 개발언어

-파이썬
-R
-C,C++,Java,C#(ML.NET)
-머신러닝 자체가 데이터 분석업무를 기반으로 하기에 데이터 분석에 특화된 파이썬과 R언어가 강세


8)머신러닝 프레임워크

-사이킷런 : 데이터 마이닝 기반의 머신러닝에 독보적
-텐서플로 : 영상,음성,언어 분야에  특화된 딥러닝 라이브러리
-케라스 : 영상,음성,언어 분야 특화
-파이토치 : 파이썬(Python) 기반의 오픈 소스 머신러닝(딥러닝특화) 라이브러리,페북 인공지능팀에서 개발
-ML.NET : 마이크로소프트에서  주도하는 .NET 기반 오픈소스 머신러닝 개발 프레임워크


9)머신러닝 주요 응용분야

가) 클래스 분류 분야 : Classification

-특정 데이터에 레이블(정답)을 붙여 데이터를 분류하는 분야
-스팸메일분류,필기문자인식,증권사기,타이타닉 생존자 예측하기


나)클러스터링 분야

-값의 유사성으로 데이터를 여러 그룹으로 나누는 분야
-사용자 취향을  그룹으로 분류 그룹별 광고 서비스 제공
-독서 취향을 그룹으로 분류  동일그룹내 타 사용자가 구매한 도서를 추천 


다)추천 분야

-특정 데이터를 기반으로  다른 데이터를 추천하는 분야
-내가 주로 구매한 도서 분류내 신규 도서 입점시,비구매 인기 도서 추천하는 기능


라)회귀 분야

-과거의 데이터를  기반으로 미래의 데이터를 예측하는것
-판매에측,전력수요예측


마)차원축소 분야
-데이터의 특성을 유지하면서  데이터의 양을 줄여 패턴을 통해 사물을 인식하는 기술
-데이터 시각화,얼굴인식,이미지분석


간략히 머신러닝 개념/학습유형/진행절차등 머신러닝 입문과 관련된 기초적인 개념 파악을 위한  글을 정리해보았습니다.
단계적으로 직접 파이썬과 ML.NET(C#)위주로 직접 다양한 머신러닝 학습 유형별로 실제 데모 코드를 작성해 가며 함께 실습해보기로 하겠습니다.

감사합니다.
Image

댓글목록

  • Image

    강철 2019.12.06

    음.. 저는 잘읽히는데요!?? ㅎ

Image