pbj0812의 코딩 일기

[패턴인식_오일석] 2. 베이시언 결정 이론[미완] 본문

강의_자격증 요약/독후감

[패턴인식_오일석] 2. 베이시언 결정 이론[미완]

pbj0812 2018. 3. 10. 23:34

첨부파일 : 오일석 교수님 강의 자료 chap2.ppt

(url : http://cv.jbnu.ac.kr/index.php?mid=pr)


- 사람은 인식을 할 때 가장 그럴듯한 쪽으로 인식을 하기 때문에, 패턴 인식도 이와 같은 법칙을 따른다.(수학을 통해서...)


- x라는 조건 하에서 그것이 Wi 일 확률 P(Wi|x)를 구하고, 가장 큰 확률을 가진 부류로 분류한다.


- 주사위를 던졌을 때 3이 나올 확률은 1/6이다.

  -> P(X=3) = 1/6 (X : 랜덤 변수)


- 주사위 같은 변수는 이산 값을 갖지만, 사람의 키 같은 경우에는 연속 값을 갖는다.


- 키의 확률 분포는 확률 밀도 함수(PDF(Probability Density Function))로 표현해야 한다.


- 확률은 항상 0보다 크거나 같아야 하며 모두 더하면 1이 되어야 한다.

* P(.) : 이산 값의 확률, p(.) : 연속 값의 확률 밀도 함수


- 어떤 조건 하에서의 확률 : 조건부 확률(conditional probability)


- 결합 확률(joint probability) : 두 가지 서로 다른 사건이 동시에 일어날 확률

* 결합 확률은 두 확률의 곱으로 구하고, 이를 곱 규칙(product rule)이라고 한다.


- 주변 확률(marginal probability) : 경우의 수의 확률을 더한 값? 예를 들면 큰 바구니에 A,B 바구니가 있고 A 바구니에 흰색, 검정색 공이 있고, B 바구니도 그렇다고 할 때, 흰색 공을 뽑을 확률은 큰 바구니에서 A바구니를 뽑고 A 안에서 다시 흰색 공을 뽑을 확률과 B에도 동일하게 적용한 확률을 더해야 한다.


- 독립(independent) : 두 랜덤 변수가 서로 영향을 미치지 못할 때를 말한다.

* P(X, Y) = P(X)P(Y)를 만족해야 한다.


- 사전 확률(prior probability) : 두 번째 사건이 발생하기 전에 작용하는 확률


- 우도(likelihood) : 어떤 현상이 발생(Y)하였을 때 이전의 사건(X)에 따른 확률(P(Y|X)) 이다. 사전 확률 P(X)와 우도(P(X|Y))를 모두 고려해야만 합리적인 의사 결정이라고 할 수 있다.


- 사후 확률(posterior probability) : 사건 Y가 일어난 후에 따지는 확률(P(X|Y))


- 베이스 정리(Bayes rule)

* P(X|Y) : x 바구니에서 y공이 나올 확률



* 베이스 정리를 따르면 신뢰도를 제공할 수 있다.


- 공분산(covariance) : 랜덤 벡터를 구성하는 랜덤 변수간의 관계를 표현한다.




예시 코딩하기

* 각 행은 학생을 나타내며 첫째 열은 키, 둘째 열은 몸무게, 마지막 열은 학점을 나타낸다. 각 성분마다의 공분산를 구하자.


import numpy as np

student = np.array([

            [170, 60, 4.1],

            [165, 55, 3.0],

            [174, 75, 2.8],

            [169, 67, 2.9],

            [155, 49, 3.1],

            [172, 63, 3.6],

            [166, 58, 3.7],

            [168, 61, 4.0]

            ])


s_row, s_col = np.shape(student)

print(s_row, s_col)


# average of height

avg_h = np.average(student[:,0])

print('avg_h', avg_h)


# average of weigth

avg_w = np.average(student[:,1])

print('avg_w', avg_w)


# average of score

avg_s = np.average(student[:,2])

print('avg_s', avg_s)


stu_result = np.zeros((3,3))


print(stu_result)

for i in range(s_row):

    a_1 = np.subtract([student[i,:],],[[avg_h, avg_w, avg_s],])

    a_2 = np.transpose(a_1)

    a_dot = np.dot(a_2,a_1)

    stu_result += a_dot

print(stu_result/(s_row-1)) # -1 빼는 건 공식이 그래서... 자유도 나타내는거 같은데 따로 검색해 봐야 할 듯. 샘플이 많을수록 좋다 이런 말도 될 거 같고...


결과


[[ 33.69642857  39.42857143   0.37142857]

 [ 39.42857143  60.85714286  -0.94285714]

 [  0.37142857  -0.94285714   0.26285714]]


* 키와 몸무게 사이의 공분산은 39.4...의 값을 나타내며 상관도가 크다는 것을 알 수 있고, 키와 학점은 0.371, 몸무게와 학점은 -0.943으로 상호 관련이 적음을 알 수 있다.


추가~~~~

Comments