본문 바로가기
[파이썬]/머신러닝

[머신러닝] 머신러닝이란? (Machine Learning, 기계학습)

by sung min_Kim 2023. 12. 20.

 본 글에서는 머신러닝이 무엇인지 대해 알아보고자 한다. 차례는 아래와 같다.

 [차례]
 첫 번째, 머신러닝이란?
 두 번째, 머신러닝을 사용하는 이유는?
 세 번째, 머신러닝의 종류(주도학습 - 회귀, 분류 / 비주도학습 - 군집)
 네 번째, 머신러닝의 학습 프로세스
 다섯 번째, 머신러닝의 학습과정
 여섯 번째, 머신러닝의 장점과 단점

 


· 머신러닝이란?

 

머신러닝이란 (출처: https://v.daum.net/v/5a710121ed94d2000165fb01)


 머신러닝은 컴퓨터가 프로그래밍되지 않아도 학습할 수 있는 능력을 갖추게  하는 인공지능(AI)의 하위 분야이다. 이는 컴퓨터가 데이터를 통해 패턴 규칙 학습하고, 이를 바탕으로 미래의 데이터를 예측하거나 분류하는 인공지능(AI)의 한 분야이다. 즉, 학습을 통해 판단을 내리는 능력을 부여하는 기술이다.

 


· 머신러닝을 사용하는 이유는?


 머신러닝은 대량의 데이터를 처리하고 패턴을 분석하는 데 사용되며, 미래의 결과를 예측하고 최적의 결정을 내리는 데 도움을 준다.

  • 데이터 처리: 머신러닝은 대량의 데이터를 처리하고 분석하는 데 매우 유용하다. 이는 합리적인 시간 내에 사람이 수행하기 어려운 작업을 대신 처리한다.

  • 예측 및 결정 과정 개선: 머신러닝은 데이터를 학습하여 미래의 결과를 예측하거나 최적의 결정을 내리는 데 도움을 준다. 이는 비즈니스, 의료, 금융 등 다양한 분야에서 중요한 역할을 한다.
     
  • 자동화: 머신러닝은 일련의 작업을 자동화하는 데 도움을 준다. 이는 시간과 비용을 절약하며, 사람의 오류를 줄일 수 있다.

  • 개인화: 머신러닝은 사용자의 행동 패턴학습하여 개인화된 경험을 제공한다. 이는 추천 시스템, 광고, 검색 엔진 등에서 사용된다.

  • 패턴 인식: 머신러닝은 복잡한 데이터에서 패턴을 찾아내는 데 유용하다. 이는 이미지 인식, 음성 인식, 자연어 처리 등에 사용된다.

  • 이상 감지: 머신러닝은 이상한 패턴이나 행동을 탐지하는 데 사용된다. 이는 보안, 사기 탐지, 시스템 모니터링 등에서 중요한 역할을 한다.


 따라서 머신러닝은 이러한 다양한 이유로 많은 분야에서 활용되며, 그 중요성은 계속 증가하고 있다.

 


· 머신러닝의 종류

 

전통적인 관점에서의 머신러닝 종류

지도학습 


 지도 학습은 모델에 입력 데이터와 그에 상응하는 정답(라벨)을 함께 제공하여, 이를 통해 데이터 간의 패턴을 학습하게 하는 방법이다. 지도 학습은 주로 회귀분류 문제에 사용된다.

 

  • 회귀(회귀모델 - 연속형 데이터) 분석
    - 이는 독립 변수 X와 종속 변수 Y의 관계를 함수식으로 표현하는 것을 목표로 한다. 가장 기본적인 형태의 회귀는 선형 회귀인데, 이는 'Y=aX+b'와 같은 선형 함수를 사용하여 X와 Y의 관계를 모델링한다. 이때, 함수의 파라미터는 데이터를 가장 잘 설명하는 방향으로 학습된다. 

    추세선을 이용한 회귀 표현


  • 분류(분류모델 - 범주형 데이터) 분석
    - 이는 데이터를 어떤 기준(패턴)에 따라 여러 범주 중 하나로 나누는 것을 목표로 한다. 이진 분류는 두 개의 범주로 나누는 문제를, 다중 분류는 세 개 이상의 범주로 나누는 문제를 말한다.

    기준에 따른 분류 표현


비지도학습


 비지도 학습은 모델에 입력 데이터만을 제공하고, 모델이 스스로 데이터의 패턴이나 구조를 찾는 학습 방법이다. 비지도 학습은 주로 군집화 문제에 사용된다.

 

  • 군집(클리스터링, 군집모델) 분류
    - 이는 데이터를 스스로의 기준에 따라 여러 그룹으로 나누는 것을 목표로 한다. 여기서 중요한 점은 각 그룹 간에는 교집합이 없어야 하며, 이를 통해 데이터를 더욱 명확하고 정확하게 이해할 수 있게 된다.

    여러 그룹의 군집 표현

 


· 머신러닝의 학습 프로세스


 머신러닝은 주로 프래그래밍 언어와 라이브러리를 사용하여 구현한다. Python, R, Java 등의 언어와 scikit-learn, Tensor Flow, Keras 등의 라이브러리가 널리 사용된다.

머신러닝 학습 프로세스

 머신러닝 모델을 학습시키기 위해 데이터를 수집하고, 이를 분석하여 모델에 적합한 형태로 변환한다. 이 과정에서 데이터 내의 중요한 특징이나 패턴을 찾아내는 것이 중요하다. 이후에는 알고리즘을 선택하여 이 패턴을 학습하고, 학습된 모델을 바탕으로 새로운 데이터에 대한 예측을 수행한다.

 


· 머신러닝의 학습과정

 

머신러닝 학습과정

  1. 데이터 수집
    - 머신러닝의 첫 단계는 데이터를 수집하는 것이다. 이 데이터는 통계, 사용자 행동, 이미지, 텍스트 등 다양한 형태가 될 수 있다.

  2. 데이터 전처리
    - 수집된 데이터는 머신러닝 모델에 적합한 형태로 변환되어야 한다. 이 과정에서 결측치, 이상치, 중복 데이터를 처리하고, 데이터를 정규화(표준화)하는 등의 작업이 이루어진다. 여기서 말하는 정규화란 데이터의 단위를 표준화하는 작업을 말한다.

  3. 훈련 - 검증 - 테스트 데이터로 분류 (또는 훈련 : 테스트 데이터로 분류)
    - 전처리된 데이터를 훈련 데이터, 검증 데이터, 테스트 데이터로 분류한다. 일반적으로 데이터의 대부분을 훈련 데이터로 사용하며, 나머지를 검증과 테스트 데이터로 사용한다. 각 데이터의 비율은 일반적으로 '6 : 2 : 2' 또는 '7 : 2 : 1' 정도로 분류한다. 데이터가 작은 경우에는 '8 : 2' 또는 '7 : 3' 정도로 분류하기도 한다.

    - 훈련 데이터: 이는 모델을 학습시키는 데 사용되는 데이터이다. 훈련 데이터를 통해 모델은 주어진 입력에서  원하는 출력을 얻는 방법을 '배우게' 된다.


    - 검증 데이터: 이는 모델이 학습 과정에서 얼마나 잘 작동하는지를 평가하는 데 사용되는 데이터이다. 검증 데이터를 통해 모델의 성능을 확인하고, 필요한 경우 하이퍼파라메터를 조정하여 모델을 최적화한다. 이 과정을 통해 모델이 새로운 데이터에 대해 잘 작동할 수 있도록 일반화하는 데 도움이 된다.

    - 테스트 데이터: 이는 학습이 완료된 후, 최종적으로 모델의 성능을 평가하는 데 사용되는 데이터이다. 테스트 데이터는 모델 학습에 전혀 사용되지 않으므로, 모델이 실제로 알 수 없는 데이터에 대해 얼마나 잘 예측하는지를 확인하는 데 유용하다. 

  4. 모델 생성
    - 선택한 머신러닝 알고리즘을 바탕으로 모델을 생성한다. 이때, 모델의 구조를 정의한다. 특히, 객체 지향 프로그래밍에서 '클래스'는 객체를 생성하기 위한 템플릿으로 작용한다. '클래스 생성'은 머신러닝 모델의 구조와 동작을 정의하는 클래스는 만드는 과정을 의미한다. 파이썬의 scikit-learn 라이브러리에서는 각종 머신러닝 알고리즘들이 클래스의 형태로 제공되며, 이를 이용해 모델 객체를 생성할 수 있다.

  5. 모델 훈련 (훈련 - 검증 데이터 사용, 또는 테스트 데이터 사용)
    훈련 데이터를 사용하여 모델을 훈련시킨다. 이 때, 지도 학습 또는 비지도 학습 방법이 사용될 수 있다. 'fit 함수 사용'은 모델에 훈련 데이터를 '적합시키는' 과정을 의미한다. fit 함수는 모델의 훈련을 수행하는 메소드로, 훈련 데이터와 이에 대응하는 타깃 데이터를 입력으로 받아 모델을 훈련시키며, 이 과정에서 모델의 가중치 등 내부 파라미터가 최적화된다.

  6. 모델 평가(모델 선정)
    - 검증 데이터를 사용하여 훈련된 모델의 성능을 평가한다. 이를 통해 모델의 정확도를 확인하고, 필요하다면 모델을 수정하거나 개선하는 작업을 수행한다.

  7. 하이퍼파라메터 튜닝
    - 모델의 성능을 최적화하기 위해 하이퍼파라메터를 조정한다. 이는 학습률, 은닉층의 수, 은닉층의 노드 수 등 모델의 구조나 학습 방법에 관련된 파라미터를 조정하는 과정을 말한다.

  8. 5(모델 훈련) ~ 6(모델 평가)번 과정 수행
    - 튜닝된 하이퍼파라메터를 적용하여 모델을 다시 훈련시키고 평가하는 과정을 반복한다. 이를 통해 최적의 성능을 가진 모델을 찾을 수 있다.

  9. 최종 테스트 (테스트 데이터 사용 또는 새로운 데이터로 사용)
    - 최종적으로 선택된 모델을 테스트 데이터를 사용하여 평가하고, 실제로 예측 또는 분류 작업을 수행한다. 'pridict 함수'는 훈련된 모델을 사용하여 새로운 데이터에 대한 예측을 수행하는 메소드이다. 즉, 모델이 이미 학습한 패턴을 바탕으로 새로운 입력 데이터에 대한 출력을 예측한다. 이때, 출력된 예측값은 회귀 문제의 경우 연속적인 숫자일 수 있고, 분류 문제의 경우 특정 클래스 라벨일 수 있다.

 


· 머신러닝의 장점과 단점


 머신러닝은 많은 장점을 가지고 있지만, 동시에 몇 가지 단점 또한 가지고 있다.

장점

 

  1. 자동화와 효율성 : 머신러닝은 데이터의 패턴을 스스로 학습할 수 있으므로, 복잡한 계산이나 패턴 검색을 수동으로 수행하는 것보다 더욱 빠르고 효율적이다.

  2. 예측능력 : 머신러닝은 과거의 데이터를 바탕으로 미래를 예측하는 데 매우 유용하다. 이를 통해 사업 전력을 세우는 데 도움을 줄 수 있다.
  3. 대량의 데이터 처리: 머신러닝은 대량의 데이터를 처리하는 데 탁월하다. 수백만 개 이상의 데이터를 학습하고 이를 기반으로 패턴을 찾아낼 수 있다.

단점

 

  1. 데이터의 품질: 머신러닝은 학습 데이터의 품질에 크게 의존한다. 잘못된 데이터나 편향된 데이터를 학습하면, 모델의 성능이 저하되거나 잘못된 예측을 하게 된다.

  2. 과적합: 머신러닝 모델이 학습 데이터에 과도하게 적합하게 학습되면, 새로운 데이터에 대한 예측 성능이 저하되는 문제(과적합)가 발생할 수 있다.

  3. 해석의 어려움: 복잡한 머신러닝 모델은 종종 "블랙박스"로 묘사되곤 한다. 이는 모델이 어떻게 학습하고 예측을 하는지 이해하기 어렵다는 것을 의미한다.

  4. 데이터의 민감성: 머신러닝은 데이터의 민감성에 의존한다. 작은 데이터 변경이 큰 결과 변화를 초래할 수 있다.

 이러한 장점과 단점을 이해하고, 적절한 데이터와 방법을 선택하며, 모델의 성능을 평가하고 향상하는 것은 머신러닝을 성공적으로 이용하는 데 중요한 요소이다.