인공지능-머신러닝-맛보기02

아래의 글은 elice(엘리스) 에서 진행한 인공지능/머신러닝 맛보기 수업을 듣고 개인 공부를 목적으로 정리한 글입니다.
학습자료가 따로 있기에 그림이나 예제등 자세한 내용 없이 키워드와 기억하고 싶은 내용, 궁금해서 따로 검색해 놓은 내용만 적어놓은 것임을 밝힙니다.


확률론 & Naive Bayes 분류기

확률이란?

어떤 사건이 일어날 것인지 혹은 일어났는지에 대한 지식 혹은 믿음 을 표현하는 방법

Early Probability Theory

사실은 도박으로 시작된 학문
게임을 해서 돈 내기를 했는데 중간에 게임이 중지되었다.
그 돈을 나누는 과정에서 확률 이론이 정립.
처음엔 그동안 이긴 횟수로 나눠서 상금을 나눠갖는 것이 어떨까? (Luca Pacioli)
-> 최종 승리를 위해 나머지 경기의 결과를 확률로 계산해서 나눠야 한다.(Blaise Pascal)

확률 기초

  • 합집합 : P(A ∪ B)
  • 교집합 : P(A ∩ B)
  • 조건부 확률 : P(A | B) = P(A ∩ B) / P(B) : 사건 B가 일어났을 때 A가 일어날 확률

확률로 π 구하기 -> 정사각형에 내접하는 원을 그리고 수많은 점을 찍어서 원 안에 들어오는 확률을 활용해 파이(π)를 구할 수 있다.(Monte Carlo(유명한 도박사-다양한 확률론 정립) 방법)


베이지안 확률(Bayesian probability) / 통계론

빈도 주의자 vs 베이즈 주의자

“동전 하나를 던졌을 때 앞면이 나올 확률은 50%이다.”

  • 빈도 주의자 : 이 동전을 수천, 수만번 던졌을때 그중 앞면이 50%, 뒷면이 50%나온다. -> 경험주의적
  • 베이즈 주의자 : 동전 던지기의 결과가 앞면이 나올 것이라는 확신(혹은 믿음) 이 50%이다.

  • 베이지안에서 확률 = 사건이 발생할지 믿는 정도 -> 개개인 마다 다를 수 있다.

  • 빈도 주의적인 생각의 반례 :

    • 신이 존재할 확률은 얼마인가?
    • 미 대통령 선거에서 트럼프가 당선될 확률은 얼마인가?
  • 사전 확률 : 사건을 관찰하기 전 가지고 있는 지식 / 믿음

  • 사후 확률 : 사건을 관찰한 후에 가지고 있는 지식 / 믿음

베이즈 법칙

  • P(A|X) = P(X|A)P(A) / P(X)
  • P(X) = P(X ∩ A) + P(X ∩ ¬A) = P(X|A)P(A) + P(X|¬A)P(¬A)

Naive Bayes 분류기

  • 분류기
    주어진 데이터가 어떤 클래스에 속하는지 알아내는 방법을 자동으로 학습 하는 알고리즘

  • P(A|X)와 P(B|X) 를 비교하면 어떤 것이 더 클까?
    P(A|X) : P(B|X) = P(X|A)P(A) / P(X) : P(X|B)P(B) / P(X)
    = P(X|A)P(A) : P(X|B)P(B)

  • 결과값이 아주 작아서 비교가 힘들경우 두 값이 더해서 1이 되도록 표준화(Normalize)를 거쳐서 눈으로 비교하기 좋도록 표시한다.

Likelihood(우도/가능도)

우리가 만든 모델이 관측값을 만들어낼 확률
P(X|A) : X - observation(관측), A - model


Bag-of-Words

  • 처리과정
    오늘 나는 밥을 먹었다. 어제 나는 햄버거를 먹었다.
    -(특수 문자 제거) ->
    오늘 나는 밥을 먹었다 어제 나는 햄버거를 먹었다
    -(Tokenize) ->
    오늘/나는/밥을/먹었다/어제/나는/햄버거를/먹었다
  • 순서는 중요하지 않음.
  • 단점 : 문장이 사라지고 단어들만 남는다.
    간단한 분석은 이정도로 충분.
    기존 문장정보를 가지고 있는 기술도 있다.

감정 분류기(Sentiment Classifier)

위의 Naive Bayes 분류기처럼 긍정과 부정 집단을 만든다.
긍정/부정 BoW 는 어떻게 알아내야 하나?
-> 기계학습 알고리즘으로 자동으로 학습하도록 한다.
학습방법은 긍정적인 문서 묶음과 부정적인 문서 묶음을 다 조사해서 각각의 문서 셋들에서 나오는 단어의 빈도 수를 측정시킨다.
각각의 BoW를 만드는것.

  • 단어가 없으면 어떻게 할까?
    0이 나오면 모든 확률이 0으로 변해 망한 모델이 된다. -> 엄청나게 작은 수를 대입시켜서 다른 단어에 영향을 미치지 않도록 한다.
    이런 방식을 Smoothing 이라고 한다.

마치며

이번 시간엔 이론 공부와 실제로 데이터를 다루는 실습이 같이 이루어지면서 앞에서 배웠던 개념들을 “왜?” 그리고 “어떻게?” 사용하는지 코드로 확인해보았습니다.
많은 데이터들을 분류하고 10년 전에 배운 확률에 대한 개념을 다시 끄집어내면서 수학에 대한 흥미를 다시 불러일으켰습니다.
사실 어렸을 때 제일 좋아했던 과목이 수학과 체육이었는데, 어느 순간 수학이 사회에서 쓸데가 있을까 하고 생각했던 적이 있었을 만큼 현실세계와의 접점을 찾지 못했었는데, 이번 수업들을 통해 그 접점이 채워져서 너무 만족스럽습니다.(전공이었던 전자공학을 공부할때는 현실세계와의 접점이라기 보다는 전공공부라고 생각했던것도 문제였고.. ㅎㅎ)
꼭 인공지능이나 머신러닝쪽이 아니더라도 개발자로써 수학공부에 다시 열정을 불러일으키게된 계기가 되었습니다.
어렸을 때 심심하면 수학문제를 풀던 그 시절 알고리즘과 코딩을 알았으면 어땠을까하는 아쉬움도 남지만 그 아쉬움을 연료로 삼아 앞으로 꾸준히 다양하게 공부하기로 다짐합니다.

Share 0 Comments