본문 바로가기
개발/ML

Machine Learning 개념

by 달사쿠 2022. 6. 16.
728x90
반응형

인공지능, 데이터 마이닝, 머신러닝, 딥러닝의 차이점

 

인공지능, 데이터 마이닝, 머신러닝, 딥러닝의 차이점

오늘은 AI와 관련해서 작성해보고자 합니다. 처음 AI를 접하게 되면, 비슷해보이는 개념에 다른 용어들이 마구 나오는 것을 볼 수 있습니다. 대표적으로 데이터 마이닝 (Data mining), 머신러닝(ML),

dalsacoo-log.tistory.com

 


 

머신러닝의 분류

 


Supervised Statistical Learning (지도 · 감독 학습)

Input을 기반으로 Output(정답/Response)을 예측하거나 추정하는 기법입니다.

레이블링된(Output이 적혀있는) 훈련 데이터를 학습하여 모델을 만들고, 레이블링이 되지 않은 테스트 데이터를 모델에 적용하여 입력된 데이터에 대해서 맞는 답을 찾습니다.

 

이 때 Output이 어떤 형태인지에 따라 모델은 Regression(회귀)와 Classification(분류)방법으로 답을 예측합니다.

 

Regression (회귀) vs Classification (분류)

1) Regression (회귀)

출처: 코세라

회귀 분석은 Output(Response)가 수치/숫자형(나이, 키, 수입, 집값, ...)일 때 사용하며, 여러 특성(비슷한 표현: feature, input variable, 예측 변수, column)들을 사용해서 수치/값을 예측합니다.

대표적으로 집값 예측을 예로 들 수 있습니다.

예를 들어 아래와 같은 집값 예측을 위한 가구 데이터가 있다고 할 때,

가구원 수 평 수 위치 가구 년 소득 (만원) 가구원의 평균나이 집의 연식 (년) 집값 (억원)
4 34 서대문구 6000 20 15 10
2 24 서초구 15000 40 24 17
3 23 분당구 11000 33 28 15
...

가구원 수, 평 수, 위치, 가구 년 소득, 집의 연식 등의 집값을 예측하기 위해 사용되는 feature라고 합니다.

이런 가공되지 않은 데이터에서 필요한 feature들 만을 추출하여, 위와 같은 모델(위에서는 그래프)를 만들고 값을 예측하는 방법을 회귀분석이라고 합니다.

 

2) Classification (분류)

Classification 분석은 Output(Response) 변수가 범주형(성별, 인종, 스팸여부, ...)일 때 사용합니다.

예시로 아래와 같은 메일 데이터가 있을 때, 필요한 feature들을 조합하여 스팸메일인지 아닌지를 분류할 수 있도록 데이터를 훈련시킵니다.

발송 시간 글자 수 발송 위치 발송자 메일 주소 메일 명 메일 내용 스팸 여부
2021-11-23 1200 Seoul, Korea lja9702@naver.com 이편지는 영국에서... X
2021-11-22 150 Tokyo, Japan helloworld@llne.com Check you... akfjklhl... O
2021-11-21 545 Shanghai, China 123@123.123 Click here!! dkadkfa... O
...

 

반응형

지도 · 감독 학습의 알고리즘

  • Linear Regression (선형 회귀)
    1개이상의 feature들을 가지고 식을 만들고 linear한 선을 만들어 Output을 예측하는 기법입니다. Regression을 위한 목적으로 사용합니다.

 

  • Logistic Regression (로지스틱 회귀)
    여러 feature들이 주어졌을 때, Output의 확률 분포를 모델링합니다. Classification을 위한 목적으로 사용합니다. 
    아래 이미지를 기준으로 스팸메일인지 분류한다고 가정하면, Output값이 1에 가까울수록 스팸메일로 분류하도록 모델링할 수 있습니다.

 

  • Decision trees (의사 결정 트리)
    데이터를 이진 분류하는 것을 반복하여 최종적으로 결과를 출력합니다. 여러가지 질문의 경우에 따라 가지치기 하듯이 뻗어나간다는 모양이 나무와 같다고 하여 이렇게 용어가 붙여졌습니다. 매우빠르고 시각화하기 좋으며, 설명하긴 쉽지만 모델을 어떻게 만드느냐에 따라 Overfitting되는 경향도 있습니다.

https://kr.akinator.com/game

다음의 예시로 좀 더 자세히 설명하겠습니다.

 

https://brookewenig.github.io

 

만약 입사 제의가 들어온 회사의 조건에 따라 입사할 지 말지를 결정하고자 하는 모델을 만들고자 합니다. 이 때 이전에 입사 제의를 받았던 회사들의 조건과 그에 대한 입사 수용, 거절 여부 이력(훈련 데이터)들을 모아서 학습시킨 결과로

 

연봉이 $50,000 이상이고, 통근시간이 1시간 미만이고, 커피를 무료로 자유롭게 마실 수 있는 곳은 입사를 수용하고 그렇지 않은 경우는 모두 입사를 거절한다는 모델을 만들었습니다.

 

따라서 이 모델에 의해 위의 질문을 거쳐 나에게 맞는 회사의 조건에 따라 입사를 수용하거나 거절을 결정할 수 있습니다.

 

 

위 그림의 검은색 선은 가지를 치기 위한 질문으로 이해할 수 있습니다.

이런 질문들이 너무 많아 지나치게 촘촘하게 분류할 경우, 훈련을 위한 데이터에 대해서는 높은 정확도를 보일 수 있지만 실제 분류를 수행할 테스트 데이터에서는 오히려 복잡한 모델일수록 정확도가 떨어집니다.

 

  • KNN(K-Nearest Neighbors)
    특정 데이터 포인트를 기준으로 가까운 훈련 데이터 포인트들을 찾는 알고리즘입니다.

    아래의 예시로 특정 데이터 포인트를 기준으로 인접한 3개의 데이터를 본다고 하면,
    Class A 1개, Class B 2개이기 때문에 다수결로 Class B로 분류합니다.

    또다른 예시로 인접한 6개의 데이터를 본다고하면, Class A 4개, Class B 2개로 Class A로 분류할 수 있습니다. 

https://www.fromthegenesis.com/pros-and-cons-of-k-nearest-neighbors/

 

  • Random Forest (랜덤 포레스트)
    데이터 셋에서 랜덤으로 데이터를 추출(샘플링)해서 다수의 Decisions tree를 만들고, 만들어진 Decisions tree들의 결과들을 모아서 특정 기준(예: 다수결)으로 최종 결과를 도출하는 알고리즘입니다.
    트리를 여러개 생성해서 집단으로 학습하고, 다수결로 결과를 도출하기 때문에 성능도 좋고 높은 정확도를 갖고있습니다.
    하지만 트리의 깊이나 개수 설정을 잘못하면 overfitting이 발생하며, 모델의 학습 속도나 메모리 비용이 다른 알고리즘들에 비해 큽니다.

https://www.j-kosham.or.kr/journal/view.php?number=8156

 

그밖에 많이 쓰이는 지도학습 알고리즘은 아래와 같습니다.

  • Byes Classifier: 데이터의 특성을 독립적이라 가정하여 각 상황의 확률을 계산하여 결과를 출력한다. 분류 문제에만 적용.
  • Gradient Boosting Decisions Tree: 깊이가 깊지 않은 단일 결정 트리를 여러 개 묶어 하나의 모델로 만듬. 랜덤 포레스트보다 조금 더 성능이 좋으며, 학습은 좀 더 느리지만 예측은 더 빠르다. 다만, 매개변수 튜닝이 많이 필요하다.
  • Support Vector Machine(SVM): 클래스 사이의 경계에 위치한 데이터 포인트 간의 거리를 최대화해서 결과를 찾는 알고리즘
  • 신경망 (참고: https://blog.lgcns.com/1359)

Unsupervised Statistical Learning (비지도 · 무감독 학습)

 

Input은 있지만, 지도되어서 나오는 Output(정답/Response)은 없는 기법입니다.

주로 데이터 포인트를 가시화하거나 그룹화/군집화 혹은 패턴 찾기, 차원축소에서 사용됩니다.

(데이터를 활용해 지식을 얻을 수 있습니다.)

코세라

비지도 학습의 목표는 감독학습과 다르게 추상적이고, 성능 기준이 명확하지 않습니다.

더불어 가시화를 어떻게 하는 것이 좋을지, 어떤게 군집화가 잘된 것인지 등의 결과를 검사하는 방법이 명확하지 않습니다.

 

Clustering (군집화)

위와 같은 데이터 셋이 있다고 할 때, 비슷한 특징을 가진 몇 개의 그룹으로 나누는 것을 Clustering이라고 합니다.

특성에 따라서 그룹화의 기준이 달라지기 때문에, 정보를 얻고 싶은 특성을 잘 조합하는 것이 중요합니다.

사용되는 알고리즘은 K-Means Clustering, DBSCAN, 계층 군집 분석 등 있습니다.

 

차원 축소

차원 축소란 많은 feature들로 구성된 다차원의 데이터 셋을 차원을 축소하여, 새로원 차원의 데이터 세트를 생성하는 것을 말합니다.

수백 개 이상의 feature 로 구성된 데이터 셋의 경우 상대적으로 적은 차원에서 학습한 모델보다 예측 신뢰도가 떨어지고, 특히 회귀분석에서는 feature 간 상관 관계가 높을 가능성이 커질수록 모델의 성능에 부정적인 영향을 미치는 것으로 알려져 있습니다.

또한, 복잡한 형태의 데이터 셋을 낮은 차원에서 분석하면 시각화하기도 쉬워질 수 있습니다. (사람은 4차원 부터는 보기가 힘들어짐..)

머신러닝에서 데이터 셋의 특성(feature)가 많아지면, 각 특성인 하나의 차원(dimension) 또한 증가하게 된다. 이렇게 데이터의 차원이 증가할 수록 데이터 공간의 부피가 기하 급수적으로 증가하기 때문에, 데이터의 밀도는 차원이 증가할 수록 희소(sparse)해진다. 위의 그림은 데이터의 차원이 증가할수록 각 영역(region)에 포함되는 데이터의 개수를 나타낸 그림(출처: jermwatt's blog)이다. 그림에서 알 수 있듯이 차원이 증가할 수록 데이터의 밀도가 희소해지는것을 알 수 있다.
출처:  https://excelsior-cjh.tistory.com/167

 

같이보기 좋은 글; https://ellun.tistory.com/105?category=276044 

 

가볍게 읽어보는 머신러닝 개념 및 원리 - (4) 비지도학습 알고리즘(군집분석, 주성분분석)

지금까지 지도학습에 해당하는 회귀분석, 의사결정나무, 서포트 벡터 머신과 신경망에 대해서 알아보았습니다. 이번 글에서는 비지도학습 기법인 군집분석과 주성분분석을 소개하도록 하겠습

ellun.tistory.com

 


Reinforcement Learning (강화 학습)

강화학습은 학습 시스템(에이전트)이 취한 행동에 대해서 보상 혹은 벌점을 주어 가장 큰 보상을 받는 방향으로 유도하는 학습 방법입니다.

가장 큰 보상을 얻기 위해 에이전트가 해야 할 행동을 선택하는 방법을 정의하게 되는데 이를 정책이라고 합니다. 대표적으로 딥마인드의 알파고가 강화학습의 예로 알려져 있습니다.

 


실시간 훈련 여부에 따른 학습 구분

Batch Learning (배치 학습)

배치 학습은 주어진 훈련 셋 전체를 사용하기 때문에 오프라인 환경에서 적합하여 오프라인 학습이라고도 합니다. 먼저, 시스템을 훈련시킨 후 더 이상의 학습 없이 제품 시스템에 적용하는 것입니다.

 

하지만 이는 컴퓨팅 자원(CPU, GPU, 저장장치 등)이 충분한 환경에서만 사용이 가능하며, 새로운 데이터가 들어오면 처음부터 새롭게 학습해야 하는 단점이 있습니다. 하지만, 이를 해결하기 위해 MLOps 등을 이용한 자동화 기능을 사용하고 있으며, 이후 이전 시스템의 사용을 중지하고 새로운 시스템으로 교체합니다.

 

Online Learning (온라인 학습)

온라인 학습은 하나씩 또는 적은 양의 데이터인 미니 배치(mini-batch)를 사용하여 점진적으로 훈련을 하는 방법입니다.  미니 배치 단위로 학습을 하기 때문에 일반적인 배치 학습에 비해 적은 양의 자원을 사용합니다. 하지만 나쁜 데이터가 주입되는 경우 시스템 성능이 점진적으로 떨어질 수 있기 때문에 지속적인 시스템 모니터링이 필요합니다.

 

온라인 학습의 예로 주식 가격 시스템 등 실시간 반영이 중요한 시스템을 예로 들 수 있으며, 스마트폰 등 제한된 자원의 시스템, 외부 메모리 학습(매우 큰 데이터셋을 활용하는 시스템) 등에도 활용되고 있습니다. 온라인 학습은 변화하는 데이터에 얼마나 빠르게 적응할 것인지가 중요합니다. 이를 학습률(Learning rate)이라 합니다.

728x90
반응형

댓글