Skip to content

Latest commit

 

History

History
96 lines (65 loc) · 6.04 KB

1주차_1장_나의_첫_머신러닝_윤서환.md

File metadata and controls

96 lines (65 loc) · 6.04 KB

나의 첫 머신러닝(1-1 ~ 1-3)

1장 전체 내용을 정리함을 서두에 밝힙니다.
책 내용에서 보다 깊이 있게 다루면 좋을 요소 위주의 정리를 진행했습니다. 따라서 책 전체 내용의 기술되어 있지 않을 수 있습니다. 궁금한 사항이나, 잘못된 부분이 있다면, 언제든 issue에 의견을 남겨주시면 감사하겠습니다.

AI(Artifical Intelligence)

  • "사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술"
  • 지능의 대한 정의가 중요
  • Model의 Algorithmn을 고려했을 때, 하나의 확률로서 정의 가능
  • 즉, 지능이란 확률이고 좋은 AI(지능)은 상황에 대한 높은 확률을 의미

인공지능 태동기

  • 1950년 Turing Test의 발표 - 컴퓨팅 기계와 지능 논문
  • 5분간 대화를 나눈 후 컴퓨터 프로그램과 의사소통이 가능한지 여부를 판별하는 테스트
  • 인간과 컴퓨터를 구별하기 어려워 짐

인공지능 황금기

  • Perceptron의 등장
  • 인간의 뇌를 모방한 model
  • ANN의 한 종류로, 이후 DL 발전의 기원이 됨

인공지능 겨울

  • HW와 성능의 한계
  • 연구와 투자의 감소로 인한 수축

AGI(Artificial General Intelligence)

  • 특정 Task에 국한되지 않는 AI
  • 즉, 높은 지능(확률)로 다양한 task를 수행하는 AI

ML(Machine Learning)

  • Rule base에서 벗어난 Algorithmn을 연구하는 분야
  • 통계학과 연관성이 높음
  • Scikit-learn이 대표적 라이브러리 [공식 문서]

DL(Deep Learning)

  • ANN(인공 신경망)을 이용한 학습구조
  • LeNet, AlexNet의 등장으로 이전에 불가능한 task의 구현
  • TensorFlow, PyTorch 등의 Framework

생선 분류 문제

현재 문제 상황은 생선의 정보를 가지고, 어떠한 생선인지를 분류하는 것이 핵심 문제 상황입니다. 책을 읽거나, 데이터를 바라볼 때, 항상 어떠한 문제 상황을 가지고 해결하려는지 염두하시면 좋겠습니다.

선형 vs 비선형(Linear or Non-linear)

책에서는 단순히, 직선에 가까운 형태라고 다루고 있습니다. 그러나 이는 틀린 설명은 아니지만, 모든 상황에서 정의되지는 않습니다. 예를 들어 3차원 공간상에서는 하나의 평면이 선형적으로 간주됩니다. 즉, 넓은 범위에서 도형으로 다루는 것이 명확합니다. 이를 수학적으로 표현하면 다음과 같습니다. image

비선형은 어떤 의미인지 생각해보면, 대부분 곡선 또는 곡면과 같은 형태로 생각합니다. 이 역시, 틀리지는 않습니다. 보다 명확하게 비선형의 의미는 선형적이지 않다 로 생각하시면 좋을 것 같습니다.

KNN(K-최근접이웃)

해당 알고리즘을 보다 명확하게 이해할 필요가 있습니다. 54~55p에 정의된 KNN은 추상적으로 설명되어 있습니다. 여기서 몇가지를 짚고 넘어가겠습니다,

직선거리(Euclidean distance)

  • 여기서의 직선거리는 유클리디안 거리(Euclidean distance)를 의미합니다.
  • 고교 과정에서 배운 점과 점 사이의 거리 공식과 동일합니다.
  • 이를 제곱이 있기 때문에 2-Norm이라고 부릅니다.
  • 이를 일반화한 정의는 민코프스키 거리(Minkowski distance)라고 합니다. image

Voting(투표)

  • 가장 가까운 K개를 선택합니다.
  • 여기서, 다수결에 따른 방식을 택하고 이를 voting이라고 부릅니다.
  • 중요한 점은, 일반적으로 K는 홀수로 설정합니다
  • 짝수의 경우 동률이 나와 50:50의 상황이 발생할 수 있기 때문입니다.
  • 이렇게 사용자가 직접 설정해야 하는 파라미터를 "하이퍼 파라미터" 라 합니다.

즉, 정리하면, 유클리안 거리가 가장 가까운 k개 중, voting방식을 통해 해당 data의 class를 결정하는 알고리즘이 KNN입니다.

Score() 메소드

현재 KNN에서는 score를 통해 결과를 비교합니다. 여기서 score는 무엇을 의미할까요? image
sklearn 공식문서에 따르면 score 메소드는 정확도를 의미합니다. 정확도란, True를 True로 맞춘 갯수 + False를 False로 맞춘 갯수를 전체 class 갯수로 나눈 수치입니다. 즉, 정확도만 가지고는 model이 얼마나 성능이 좋은지 알기 어렵습니다.

예를 들어, 정확도가 50%인 model이 있습니다. 여기서 50%는 도미를 도미로 맞춘 확률 + 빙어를 빙어로 맞춘 확률이 더해진 값 입니다. 만약, 도미를 100% 다 맞추고, 빙어를 하나도 맞추지 못했더라고, 모델의 정확도는 50% 가 됩니다. (도미와 빙어의 갯수가 동일하다고 가정) 그렇기 때문에, 이후 model의 성능을 비교할때는 정확도 이외의 recall, f1-score등 다양한 지표를 통해 관측하는 것이 중요합니다. 해당 지표에 대한 설명은 아래 링크를 별첨하겠습니다. https://sumniya.tistory.com/26


해당 챕터에서는 KNN을 이용하여, 도미와 병어를 분류했습니다. 처음에 정의한 문제상황은 물고기 정보만을 이용하여 생선을 분류하는 작업이었습니다. 엄밀하게 따지면, 해당 예시는 Data Leakage 문제가 있습니다. 저희는 어떤 물고기인지를 모르는 상태에서 물고기를 분류해야 하지만, 이미 어떤 물고기인지를 아는 상태에서 실제 정답인지 아닌지를 비교했습니다. 즉, 학습 과정에서 이미 정답 정보를 이용하여 문제를 해결했습니다. 이러한 문제를 Data Leakage라고 합니다.