매일공부

[머신 러닝] 머신러닝을 알아보자 본문

임베디드 개발자/코딩

[머신 러닝] 머신러닝을 알아보자

임베디드초보자 2022. 2. 22. 14:50

1. 머신러닝이란?

  • 인공지능(AI)의 하위 집합으로 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있또록 하는 알고리즘을 개발하는 연구 분야

2.학습 종류에 따른 분류

  • 기계학습 문제들은 학습 종류에 따라 지도학습(문제와 답이 존재), 비지도 학습(문제는 존재하지만 답은 알아야함) 강화학습(문제도 답도 알아서 찾아야함) 3가지고 나뉜다.
  • 이 때 지도 학습과 비지도 학습은 레이블(label)의 유무에 따라 나뉜다. 
    • label: 학습 데이터의 속성을 무엇을 분석할지에 따라 정의되는 데이터를 말한다.
  • 2_1 지도학습
    • 사람이 교사로서 각각의 입력(x)에 대해 레이블(y)를 달아 놓은 데이터를 컴퓨터에 주면 컴퓨터가 그것을 학습하는 것
    • 사람이 직접 개입하여 정확도 높은 데이터를 사용할 수 있다는 장점이 있다.
    • but 직접 레이블을 달아야하므로 인건비 문제가 있고 데이터 양이 적다.
      • 분류(classification): 레이블 y가 이산적인 경우(y가 가질 수 있는 값이 [0,1,2,...]와 같이 유한한 경우 ) 분류 혹은 인식 문제라고 부른다. 일상에서 가장 접하기 쉬우며 연구가 많이 되어있고 기업들이 가장 관심을 가지는 문제 중 하나이다

           ○주차시에 번호판 인식, 페이스북 구글 등의 얼굴 인식, 음성 인식 등..
      • 회귀(Regression): 레이블 y가 실수인 경우 회귀 문제라고 부른다. 데이터들을 쭉 뿌려놓고 이 것을 가장 잘 설명하는 직선 하나 혹은 이차함수 곡선 하나를 그리고 싶을 때 회귀기능을 사용한다.
  • 2_2 비지도 학습
    • 사람 없이 컴퓨터가 스스로 레이블 되어 있지 않은 데이터에 대해 학습하는 것 즉 y 없이 x만을 이용해서 학습하는 것이다.
      • 군집화(clustering): 데이터 간 거리에 따라 데이터 몇개의 군집으로 나눌 수 있다. x만 가지고 군집을 학습하는 것이 군집화이다.
      • 분포 추정(Underlying Probability Density Estimation): 군집화에서 나아가 데이터들이 흩어저 있을 때 어떤 확률 분포에서 나온 샘플들인지 추정하는 문제
  • 2_3 반지도 학습
    • 레이블이 있는 데이터와 없는 데이터 모두를 활용해서 학습하는 것, 대개의 경우 다수의 레이블 없는 데이터를 약간의 레이블 있는 데이터로 보충해서 학습하는 종류의 문제를 다룬다.
  • 2_4 강화 학습
    • 현재의 상태에서 어떤 행동을 취하는 것이 최적인지 학습하는 형태
    • 행동을 취할 때마다 외부 환경에서 보상이 주어지는데 이러한 보상을 최대화하는 방법으로 학습 진행

3. 지도 학습 알고리즘 저이

  • 지도 알고리즘을 기반으로 코드를 해석할 것이기에 지도 알고리즘들에 대하여만 알아보도록하겠다.
    • 1. 최근접 이웃(K-NN):
      • 데이터 포인트에서 가장 가까운 훈련 데이터 포인트, 최근접 이웃을 찾는 알고리즘, 작은 데이터 세트일 경우에 기본 모델로서 좋고 이해하기 쉽다.
    • 2. 선형 모델:
      • 선형적인 직선이나 평면, 초평면 등을 이용하여 출력을 찾는 알고리즘, 첫 번째로 시도하기 좋으며 대용량 데이터 세트와 고차원 데이터 세트에 가능하다.
    • 3. 나이브 베이즈:
      • 데이터의 특성을 독립적이라 가정하여 각 상황의 확률을 계산하여 결과를 출력한다. 분류 문제에만 적용할 수 있다. 대용량 데이터 세트와 고차원 데이터에 사용 가능하다. 선형 모델보다 훨씬 빠르나 정확도는 떨어진다.
    • 4. 결정 트리:
      • 데이터를 이진 분류하는 것을 반복하여 최종적으로 결과를 출력한다. 매우 빠르고 데이터 스케일의 조정이 필요 없다. 시각화하기 좋고 설명하기 쉬우나 과대적합되는 경향이 있다.
    • 5. 랜덤 포레스트: 
      • 과대적합된 단일 결정 트리를 여러 개 묶어 하나의 모델로 만든 것. 결정 트리 하나보다 거의 항상 좋은 성능을 낸다. 매우 안정적이고 강력하며 데이터 스케일의 조정이 필요가 없다. 다만 시간이 오래 걸리고 텍스트 같은 고차원 희소 데이터에는 잘 맞지 않는다.
    • 6. 그래디언트 부스팅 결정 트리:
      • 깊이가 깊지 않은 단일 결정 트리를 여러 개 묶어 하나의 모델로 만든 것. 랜덤 포레스트 보다 조금 더 성능이 좋다. 랜덤 포레스트 보다 학습은 느리나 예측은 빠르고 메모리를 적게 사용한다. 
    • 7.서포트 벡터 머신(svm):
      • 클래스 사이의 경계에 위치한 데이터 포인트(서포트 벡터) 간의 거리를 최대화하여 결과를 찾는 알고리즘, 비슷한 의미의 특성으로 이루어진 중간 규모 데이터 세트에는 잘 맞지만, 데이터 스케일의 조정이 필요하고 매개변수에 민감하다.
    • 8. 신경망: 
      • 대용량 데이터 세트에서 매우 복잡한 모델을 만들 수 있다. 다만 매개 변수의 선택과 데이터 스케일에 민감하며, 큰 모델에는 학습이 오래 걸린다.

다음 시간에는 코드를 통하여 머신러닝을 맛보도록하겠다.