Pi는 각 class에 해당하는 값이 나올 확률

entropy 값이 1인경우 완전히 골고루 펼쳐진 상태. 에너지가 골고루 퍼진 상태. disorder값이 최대인상태

(Info 1.1) Entropy – Definition
https://youtu.be/LodZWzrbayY

X random variable은 conitinuous가 아니고 discrete이다.

log의 base는 10, e 자연상수를 사용할수도 있으나 information theory에서는 보통 2를 사용한다. 특별한 언급이 없는 경우는 2라고 생각한다. base가 2가 아닌 경우 Hb(X)와 같은 형태(b는 base값)로 표기한다.

8 1 Generative vs Discriminative Models
https://youtu.be/YQClUDd9ff4

8 2 Making features from text for discriminative NLP models
https://youtu.be/MemiaOYSB0k

empirical E() 는 실제 data를 이용해서 계산하고 model expectation은 P() 즉 확률을 이용하는 것 같다. 기대값 구하는 공식중에 확률에 확률값을 곱하면 기대값이 되었던 것을 기억하면 이해가 쉽다.

8 3 Feature Based Linear Classifiers
https://youtu.be/7-7MlBdy3EE

위 그림에서 location인지 아닌지를 평가하는 feature1의 결과는 1.8 feature2의 결과는 -0.6이다. 그래서 이를 합산하면 1.2가 된다.

exp 를 함으로써 합산된 features계산 값들이 양수가 되게한다.

참고) exp 그래프

https://youtu.be/VNEdufXVMaU6 1 What is Text Classification
https://youtu.be/kxImnFg4ZiQ

6 2 Naive Bayes
https://youtu.be/j39c7Gjx2gE

감마 기호는 function을 의미한다.

6 3 Formalizing the Naive Bayes Classifier

https://youtu.be/VNEdufXVMaU

d 는 document, c는 class를 의미한다.

P(d|c) 는 likelihood probability, P© prior probability

documents는 x features (단어들)의 연속으로 구성되어있다.

P(x1, x2, x3 …….  xn | c)의 경우 conditional 에 conditional에 중첩된 conditional probability 계산이 되는데 이런경우 복잡해지게 된다.

계산이 복잡해지는데 이를 간소화 시켜서 계산하는 방법을 사용한다. bag of words를 이용하거나 independent probability를 이용(모든 단어는 서로 independent하다고 가정)한다.

6 4 Naive Bayes Learning
https://youtu.be/3jR8TZG8T88

P(cj)는 전체 문서에서 특정 class의 문서가 나올 확률이다.

P(wi | cj)는 특정 class에서 특정 word가 나올 확률이다.

위의 내용을 간단히 정리하면 특정 class의 모든 문서(시그마부분에 해당)를 하나로 만들고 그 안에서 특정단어들이 나오는 횟수를 이용해 P(wi | cj)를 구한다.

training documents에 fantastic이라는 단어가 한번도 사용되지 않았다. 그런데 새로 주어진 문장에서는 이 단어가 사용되었다고 한다면 이전에는 한번도 나온적이 없었으므로 확률이 0이 되버리게 된다. 즉 새로운 단어에 대한 고려가 전혀 없는 것이다. 이 문제의 해결방법은 아래 그림 참조

모든 단어의 출현횟수를 1씩 늘려줌으로써 최소횟수가 0이 아닌 1이 되게된다.

우측 하단은 add alpha가 적용된 공식이다.

training doc에서 한번도 출현하지 않은 단어는 unknown word로 위와 같이 처리한다.

6 5 Naive Bayes Relationship to Language Modeling
https://youtu.be/LRFdF9J__Tc

6 6 Multinomial Naive Bayes A Worked Example
https://youtu.be/OWGVQfuvNMk

P©는 전체 문서들중에 class c 문서가 나올 확률이다. 여기서 사용된 P(w | c)는 add one smoothing이 적용된 특정 class에서 특정 단어들이 나올 확률이다.

위의 예제는 주어진 training data를 이용해 만든 모델로 test doc의 class를 예상하는 과정이다. 오른쪽 하단의 내용은 주어진 문서 d5가 어떤 클래스인지를 비교 추측하는 것이다. 각 c , j class일 확률을 비교 한다. 이때 d5는 공통으로 들어가는 부분이므로 생략했다.

6 7 Precision, Recall, and the F measure
https://youtu.be/81j2nzzBHUw

참조자료)

andrew ng https://youtu.be/wGw6R8AbcuI

https://youtu.be/W5meQnGACGo

위그림이 좀더 이해하기 쉽다.

accuracy 측정 방법

6 8 Text Classification Evaluation
https://youtu.be/TdkWIxGoiak

6 9 Practical Issues in Text Classification
https://youtu.be/uIvSHmsLs-U

text classification에 대한 전반적인 내용을 다루고 있다.

training data가 없는 경우 개발자가 직접 손수 rule을 만든다.

knn k nearest neighbors를 말한다.

보통 training data의 양이 많은 경우 classifier간의 성능차는 별로 없어지게 된다.

자동, 수동 섞어서 처리한다.

확률의 곱이 많이 이어지는 경우 그 숫자가 매우 작아지는 경우가 생기는데 이를 underflow라고 한다. 이를 방지 하기 위해 log값을 이용한다. log에서는 두 값이 곱이 합으로 계산되기 때문이다.

upweighting : 단어의 위치나 사용방법에 따라 가중치를 두는 방법이다.

5 1 The Spelling Correction Task
https://youtu.be/iYFqYL9RsRs

5 2 The Noisy Channel Model of Spelling
https://youtu.be/q6BFerSaUEA

원래의 단어가 noisy channel를 거쳐 noisy word가 될수 있다고 가정하고 noisy word (spelling이 맞지 않는 단어)를 가지고 원래 어떤 단어가 되어야 하는지 추측하는 과정을 보여주고 있다.

x 는 misspelled된 잘못된 단어이다. 잘못된 단어 x가 주어진 상태에서 원래 단어 w일 확률을 구한다. 이를 beyes rule을 이용 변형하면 두번째 공식이 되고 여기서 P(x)는 최대값을 구하는 과정에서 중요하지 않으므로 생략할수 있다.

결과적으로 나온 맨 밑줄의 공식에서 P(x|w)를 channel model, error model이라고 한다. P(w)를 language model이라고 한다.

기존 edit distance는 insertion, deletion, substitution 만을 이야기 했다. Damerau-Levenshtein은 여기에 transposition을 추가 했다.

“acress” 의 edit distance 1의 예

80%의 spelling 문제는 edit distance 1 안에서 발생. 대부분은 edit distance 2안에서 발생한다.

이전 강의에서 배운 기존의 language model을 사용한다.

unigram을 이용한 language model을 보여주고 있다.

confusion matrix의 예를 볼수 있는 곳

이부분은 잘 이해하지 못했다. (원래 논문 https://www.aclweb.org/anthology/C90-2036)

confusion matrix를 이용 channel modle의 확률을 구하고 language model을 통해 구해진 확률을 곱하면 최종의 확률을 얻을수 있다.

한 단어(이 강의에서는 unigram을 language model로 사용)의 철자들을 이용해 얻은 확률보다 때로는 bigram을 이용해 보완하면 보다 좋을 결과를 얻을수 있는 것을 보여주고 있다.

자신이 만든 모델을 평가하고 싶을때 참조사용할만한 웹페이지를 보여주고 있다.

5 3 Real Word Spelling Correction
https://youtu.be/bZNU2FwTXDc

실제 존재하는 단어로 misspelled되는 경우가 전체 misspelled 문제의 25 – 40%를 차지한다. 예를 들어 minutes를 사용해야하는데 minuets를 사용하는 경우

단어 하나 하나 마다의 틀린 스펠 단어의 후보를 여러개 뽑아 놓는 것을 보여준다.

각 단어마다의 여러 후보를 뽑고 이의 총 조합 경우를 확인한다.

각 단어별로 여러개의 단어후보를 뽑아 모든 조합의 경우를 확인하는 것이 번거로울수 있다. 보통은 한 문장에서 한단어가 문제가 있는 경우가 많기 때문이다.

non-word spelling problem에서 사용했던 channel model방법을 그대로 사용한다 다만 real-word spelling problem의 경우 맞는 단어가 주어진 상황에서 맞는 단어일 확률을 추가해서 확인해준다.

5 4 State of the Art Systems
https://youtu.be/aAvOOZRsby8

spelling correction 결과의 신뢰도에 따른 실제 어플리케이션에서 사용자에게 제시하는 방법들

이론상으로 channel model (error model) 과 language model (prior model) 의 곱으로 spelling의 맞을 확률을 구한다고는 했으나 사실 순수하게 두 값의 곱으로 결과값으로 사용하지는 않고 위의 그림처럼 람다값을 이용해 준다. 이 람다값은 test set을 이용해 통해 얻는다.

위의 3개의 그림처럼 다양한 기법을 총체적으로 사용한다.

classifier 에 따라 어떤 단어를 선택할지를 정할수 있다.

19 MOOCs on Mathematics & Statistics for Data Science & Machine Learning

original source : StatQuest: Linear Discriminant Analysis (LDA) clearly explained.

https://youtu.be/azXCzI57Yfc

바로위 그림은 PCA를 이용한 경우를 보여주고 있다.

바로위 그림은 PCA를 이용한 경우를 보여주고 있다.

아래그림이 LDA를 이용한 경우를 보여주고 있다.

## 8 1 Generative vs Discriminative Models

https://youtu.be/YQClUDd9ff4

## (ML 1.5) Generative vs discriminative models

https://youtu.be/oTtow2Ui8vg

## 7 2018 05 09 Data Science Generative Vs Discriminative Models

https://youtu.be/gwV7spVO5Z0

generative에서는 일단 확률밀도함수를 구한다. 그리고 이를 이용해서 각 지점의 확률값을 얻게 된다.

discriminative는 예상값과 실제값과의 손실을 비교해서 가장 손실이 적은 모델을 찾아간다.

## Machine Learning interview questions-what is difference between generative and discriminative model

https://youtu.be/uhRPeyzTZ9o

Discriminative Learning Algorithms

머신러닝의  분류 알고리듬을 다음과 같이 풀어서 설명할수 있다.

어떤 입력값(input) x가 주어졌을때 그 결과값(label)이 y일 확률을 알아내는 것

=>  p( y | x )

=> x라는 값들이 충분히 의미있는 데이터일때 그 데이터를 기반으로  y가 0일지 1일지를 확률 적으로 예측

=> 결과적으로 구분선을 찾아내는 것이 중요하다.

이렇게 입력값과 출력값을 직접적으로 연결시키는 방식을 Discriminative(변별) Algorithm이라고 한다.

Discriminative방식의 머신러닝은 다음의 과정으로 이루어진다.

1. 특정 입력값X에 대한 조건부 확률 분포를(Conditional Probability Distribution) 만들어낸다.

=> 조건부 확룰 분포는 입력값 x가 특정 값이라는 조건으로 주어질때의 Y값의 분포도를 기술하는 데이터형식이다.

2. 조건부 확률 분포에 근거해서 x input과 y label(output)로 벡터를 만들어낸다.

3. x값들의 성질(결과값, 즉 y값)이 0인 것 들과 1인 것들을 잘 구분할수 있는 선(직선 혹은 곡선, decision boundary)을 만들어낸다.

4. 만들어진 선을 기반으로 새로운 데이터(x’)가 입력되었을때 선으로부터 음 혹은 양의 방향으로의 거리를 재어 확률을 구한다.

그림으로 살펴보면 다음과 같다.( 모든 원들을 x를 의미, 노랑/파랑은 y=0/y=1을 의미, 곡선은 구분선을 의미, 세모는 새로운 입력을, distant는 선분으로부터 음/양의 거리를 의미)

대표적인 방식이 Logistic Regression이다.  그 외에도 Conditional Random Field, Support Vector Machine, Linear Regression, Neural Network 등의 알고리즘들이 있다.

장점:

데이터가 충분할경우 좋은 성능을 보여준다.

단점:

데이터를 구분하는데 목표를 두고 있으므로, 데이터가 실제 어떤 모습인지 본질을 이해하기는 어렵다.

Generative Learning Algorithms

그런데 이러한 Discriminative 방식과는 다른 방식의 분류 알고리듬이 있다. 구분해내는 것을 넘어서 분류 카테고리에 맞는 데이터를 생성해내는 방식이다.

생성되는 입력과 결과 데이터는 분류 클래스별로 특정한 통계적 분포를 따른다고 가정하는 방식이다.

다음과 같이 풀어서 설명할수 있다.

=>  입력값 x와 결과값(라벨)y가 주어질때,  이들은 일정한 분포 규칙속에서 존재한다. 그 분포 규칙은 분류 클래스마다 다르다.

=> 이러한 분포 규칙은 Normal Distribution등의 통계적인 방법론을 따른다.

=>  분포규칙은 수식적으로는 결합 확률 분포 – p( x , y)  로 표현한다. ( 결합 확률 분포- joint probability distribution )

=> 실제로 분류에  필요한 사후확률 p ( y | x)은 p(x,y)로 부터 유도할수 있다. (변경과정은 아래 부록1에 )

=> 핵심은 카테고리별로  분포규칙을 표현하는  확률 분포 모델의 파라미터들을 찾아 내는 것이다.

이렇게 입력값과 출력값 사이에 분포규칙의 개념을 적용한 방식을 Generative(생성) Algorithm이라고 한다.

Generative방식의 머신러닝은 다음의 과정으로 이루어진다.

1. 주어진 데이터와 결과값을 이용해 모든 x와 모든 y에 대해 결합 확률 분포 (Joint Probability Distribution)를 만든다.

2. 결합확률 분포로 부터 어떤 확률 분포모델이 데이터 분포모델에 적한한지 측정(estimation)한다. (어려운 과정)

3. 측정해낸 확룰 분포모델을 기반으로 사후확률을 알아낼수 있다.

p(y|x) =  p(x|y) * p(y) / p(x)

사후 확률 = 결합확률(p(x,y))  / p(x) –

4.즉  x가 주어질 경우, y의 확률을 예측하려면,  x,y에 대한 결합확률분포공식(모델)과 x의 확률(경계확률)을 알면 구할 수 있다.

그림으로 살펴보면 다음과 같다. (작은 원들을 x를 의미, 노랑/파랑은 y=0/y=1을 의미, 세모는 새로운 입력을, 큰 타원은 확률 분포를 의미)

대표적인 방식은 Naive Bayes가 있으며 이외에도 Gaussian discriminant Analysis(GDA), Gaussian Mixture Model(GMM), Hidden Markov Model(HMM), Latent Dirichlet Allocation(LDA), Restricted Boltzmann machine(RBM), Generative Adversarial Network(GAN)등이 있다.

Naive Bayes의 경우에도 주어진 관측데이터 결합확률 분포를 통해 확률모델로 만들어내기때문에 Generative Model이다.

장점:

데이터 셋이 적어도 할만하다.

데이터 자체의 특성을 파악하기에 좋다.

데이터를 생성해 내어 새로운 결과물을 얻어낼수 있다.

단점:

데이터가 많은 경우, Discriminative에 비해 성능이 떨어 질수 있다.

결합확률분포표 와 조건부확률분포표

아래는 입력값 X가 0 ~ 2에 걸쳐서 이산분포하고, 결과값 Y가 0~2에 결쳐서 이산분포할때 의 결합확률과 조건부 확률을 비교한 것이다.

문제를 통해서 결합확률과 조건부확률간의 비교를 해보자.

결합확률분포표(Joint Probability Distribution)

조건부확률분포표(Conditional Probability Distribution)

X가 1로 주어졌을때, Y가 1일확률은 0.8로서 다른 Y class들(0,2)에 비해서 가장확률이 높다.  (checksum이 0.30에서 1.0으로 바뀐것을 확인)

즉 x가 1일때 예측값은 1이다. 수식은 다음과 같다. argmax는 입력값중에 가장 큰 값을 선택하라는 의미이다.

class = argmax( P(Y|X=1) ) = 1

부록1) 베이즈룰에 따라 결합확률에서 사후확률로 변경되는 과정

=> p(x,y) = p(y|x) * p(x)  베이즈룰에 따라, 결합확률은  x(input data)가 y(label) 일때의 사후 확률(posterior)과  x의 경계확률의 곱으로 표현할수 있다.

=> p(x,y) = p(x|y) * p(y)  베이즈룰에 따라, 결합확률은  y(label)가 주어졌을때  x(input) 일때의 가능도(likelihood)와  y의 사전확률(prior)의 곱으로 표현할수 있다.

=> p(x,y) = p(y|x) * p(x) = p(x|y) * p(y) 라는 베이즈 확률 공식에 따라, p(y|x) =   p(x|y) * p(y) / p(x) 로 표현할수 있다.

=> p(y|x) = p(x|y) * p(y) / p(x) .

즉 입력값 x가 주어질때의 사후확률은 라벨 y 가 입력값 x 일 경우의 가능도와 라벨 y 의 사전확률을 곱한것을 x 일경우의 모든 경계확률로 나눈것이다.

참고)

Open AI의 Generative Model – “What I Cannot Create, I do not understand”(만들지 못하면 이해하지 못한거야) – https://blog.openai.com/generative-models/

Andrew Ng의 표준분포를 이용한 Generative Learning algorithms  – http://cs229.stanford.edu/notes/cs229-notes2.pdf

결합확률분포표과 조건부 확률분포표의 계산 – https://onlinecourses.science.psu.edu/stat414/node/116

의미적 의존 링크 토픽 모델을 이용한 생물학 약어 중의성 해소 – http://kiise.or.kr/e_journal/2014/9/JOK/pdf/07.pdf