728x90

한 특성만 보는게 아니라 여러개를 보는 경우 특징을 위주로 보는게 좋을까?

신용카드 발급 여부 문제에서 계속 이어나가보자

 

엔트로피 entropy

- 어떤 특성이 더 좋은것인가?를 보여주는 지표

 -> 아까 본 A9의 속성으로 분할한 경우 속성 값이 t일때 284개가 긍정, 77개가 긍정

    => 속성 값이 t일때 긍정이 나올 가능성이 크므로 A1보다 불확실성이 작다고 할 수 있음.

 -> A1속성으로 분할한 경우 속성 값이 a일떄 98개가 긍정, 112개가 부정.

    => 긍정과 부정이 나올 수가 비슷하므로 불확실성 uncertainty이 크다고 할수 있음.

 

- 불확실성의 측정 지표로서의 엔트로피

 -> 하나의 특징, 속성을 확률 변수 random variable로 볼수 있다!

    ex. 항상 3만 나오는 주사위 -> 항상 확실하므로 불확실성이 없다.

    ex. 모든 면이 1/6확률로 나오는 주사위 -> 불확실성이 존재하다.

 -> 엔트로피가 크다 = 불확실성이 크다

 -> 아래는 엔트로피를 구하는 함수.

- 조건부 엔트로피를 구하자

 -> 특징이 주어질때 해당 클래스의 엔트로피를 구하자.

 

 

정보 게인 Information Gaion

- 이제 확률변수 A1과 A9의 엔트로피를 구할수가 있겠다.

- 조건부 엔트로피를 통해 특징이 주어질때 클래스별 엔트로피를 구할수가 있다.

- Y라는 클래스의 엔트로피를 위의 엔트로피 구하는 식을 통해 구햐보자

 

 

- A1, A9 특징이 주어질때 Y가 나올 엔트로피를 구해보자

 

- 우리가 원하는 것은 클래스별 엔트로피를 불확실성을 없애는 방향으로, 확실한 방향으로 만들어야 한다.

 -> 어떤 정보를 추가해야 불확실성이 사라질까?를 파악하기위헤 조건부 엔트로피를 사용

    => A1의 정보를 주었을때 엔트로피가 어떻게 되는가 -> H(Y | A1)

    => A9의 정보를 주었을때 엔트로피가 어떻게 되는가 -> H(Y | A2)를 알아야 한다.

 

- 어떤 클래스 엔트로피가 주어졌을때, 어떤 속성 특징을 사용한 경우(조건부) 해당 클래스의 엔트로피가  클래스의 엔트로피가 얼마나 크게 변하였는가

 -> 원래 클래스 엔트로피와 특징이 주어진 경우 엔트로피가 얼마나 크게 차이나는가 = 정보 게인

=> 불확실성이 작은 A9 속성이 정보 게인이 크다.

 

 

 

신용카드 발급 데이터를 이용한 결정 트리 만들기

1. A1 부터 A15까지 모든 정보 게인을 측정하자

2. A9이 제일 좋구나(정보 게인이 크다)-> A9으로 트리 루트를 사용하여 분리.

3. 분리된 데이터로 다음에는 어느 속성의 정보게인이 가장 큰가를 판단하여 노드 분리

4. 3번 과정을 여러번 반복

5. 결정 트리 완성

 

 

 

결정 트리의 문제

- 모든 속성을 다루는 큰 결정 트리를 만든 경우의 문제

 -> 학습된 경우는 처리할수 있으나 현실에 존재하는 노이즈나 이상한 경우를 대응하지 못함.

- 아래의 그림을 보면 x축은 트리의 크기, y는 정확도를 보야주고 있음.

 -> 결정트리가 커질수록 파란선(훈련 데이터)은 높아지나, 빨간 선(테스트 데이터)은 피크를 지난 후 정확도가 내려감

  => 가지고 있는 데이터에 정확하게 만들수 있으나 학습되지 않은 세세한 경우를 다루지 못해 떨어진다.

 

300x250
728x90

규칙 기반 머신러닝의 한계

- 우리가 살고 있는 현실에는 노이즈가 존재하여 관측되므로 원하는 결과를 구하기 힘듬.

 

우리가 필요한 것들

- 노이즈가 있는 데이터에 더 강건해야하는 방법

- 가설을 더 명확하게 설명할수 있는 방법

 

규칙 기반 머신러닝 기법으로 나가 놀지 여부를 결정 트리로 표현 하는 경우

 

 

 

신용 평가 데이터셋을 사용한 머신 러닝

- 신용카드를 발급해줄지 말지를 이 데이터셋으로 판단해보자

- 690개의 인스턴스, 307개의 긍정 케이스(신용 카드 발급)

- ref : http://archive.ics.uci.edu/ml/datasets/Credit+Approval

- 신용 평가 정보 Attribute Information:

A1: b, a.
A2: continuous.
A3: continuous.
A4: u, y, l, t.
A5: g, p, gg.
A6: c, d, cc, i, j, k, m, r, q, w, x, e, aa, ff.
A7: v, h, bb, j, n, z, dd, ff, o.
A8: continuous.
A9: t, f.
A10: t, f.
A11: continuous.
A12: t, f.
A13: g, p, s.
A14: continuous.
A15: continuous.
A16: +,- (class attribute)

 

 

 

A1속성만으로 판단하는 경우

- A1 속성 값이 a인 경우 98개가 긍정이고, 112개가 부정

- A1 속성 값이 b인 경우 206개가 긍정, 262개가 부정

- A1 속성 값이 알수없음 ?인 경우 3개가 긍정, 9개가 부정

   => 가능한 모든 경우의 총 긍정 307, 총 부정 383

=> A1 속성만으로는 긍정과 부정 여부를 잘 분류하지 못한다고 볼수 있다. 거의 50:50 비율로 판별하므로

 

A9 속성 만으로 판단하는 경우

- A9 속성 값이 t인 경우 284개가 긍정, 77개가 부정

- A9 속성 값이 f인 경우 23개가 긍정, 306개가 부정

=> A9 속성이 t일때 긍정을 많이 찾고, f일때 부정을 많이 찾는다. => A1 속성보다는 잘 분류해낸다.

 

300x250
728x90

목표

  • 머신러닝의 고전적 방법들을 배워보자
    • 규칙 기반 방식 rule based approach
    • 고전 통계적 방식 classical statisitc approach
    • 정보 이론 방식 information theory approach
  • 규칙 기반 머신러닝
    • 어떻게 특성화되거나 일반화 할수 있는 규칙을 찾는지 알아보자
    • 왜 이러한 규칙이 쉽게 깨지는지 알아보자
  • 결정 트리
    • 어떻게 훈련 데이터셋으로 결정 트리를 만들어낼까
    • 왜 새로운 데이터셋에 대해 트리가 약한 분류기가 될까.
  • 선형 회귀
    • 어떻게 훈련 데이터셋으로 파라미터를 추론하는가
    • 왜 피처 설정이 한계를 가지는가.

규칙 기반의 머신 러닝 rule based machine learning

  • 완벽한 세상에서의 규칙 기반의 머신 러닝 : 아래와 같은 가정을 할때
    • 관측 에러가 없고, 항상 일관된 관측 결과를 구할 수 있다.
    • 관측 결과에 확률적인 영향, 임의에 의한 영향이 존재하지 않다.
    • 시스템을 설명할수 있는 모든 정보를 얻었다.
  • 사람이 기상을 관측해서 나가서 운동할수 있는지의 여부, 규칙을 이용한 머신러닝으로 판단하자.
    • <기상, 온도, 습도, 바람, 수온, 기상 변화> 정보를 얻고, 이 정보로 운동할수 있는지 예측하자.

함수 근사 function appraoximation

  • 머신 러닝이란?
    • 머신 러닝은 더 나은 근사 함수를 만드는 작업이라 할 수 있다.
  • 이전에 정의한 완벽한 세상에서 운동을 할수 있는지의 여부를 다루자.
    • 인스턴스 X
      • 피처 O : <화창, 따뜻, 보통, 강함, 따뜻, 같음>
      • 라벨 Y : <운동 가능>
    • 훈련 데이터셋 D
      • 인스턴스 관측 집합
    • 가설 H
      • X로 Y를 얻을수 있는 어떤 함수, 가설들이 존재할까?
      • h_i : <화창, 따듯, ?, ?, ?, 같음> -> 운동 가능
      • 얼마나 많은 가설이 존재할까?
    • 타겟 함수 c
      • 피처와 라벨로 알수 없는 타겟 함수. 가설 H의 목표가 되는 함수.

함수 근사를 시각적으로 살펴보기

  • 다음의 인스턴스 x가 존재할때,
    • x1 : <화창, 따뜻, 보통, 강함, 따뜻, 같음>
    • x2 : <화창, 따뜻, 보통, 약함, 따뜻, 같음>
    • x3 : <화창, 따뜻, 보통, 강함, 따뜻, 변함>
  • 아래의 가설 H가 존재한다고 하자
    • h1 : <화창, ?, ?, ?, 따뜻, ?> -> 기상이 화창하고, 수온이 따뜻한 경우 -> 운동 가능
    • h2 : <화창, ?, ?, ?, 따뜻, 동일> -> 기상이 화창하고, 수온이 따뜻하며, 기상 변화가 없을때 -> 운동 가능
    • h3 : <화창, ?, ?, 강함, 따뜻, ?> -> 기상이 화창하고, 바람이 강하며, 수온이 따뜻할 때 -> 운동 가능
      • x2를 h3 가설을 기준으로 판별시 -> 운동 불가로 판단.
      • x3는 h3 가설을 기준으로 판별 시 -> 운동 가능로 판단.
  • 어느것이 가장 나은 함수 근사, 가설이라 할수 있을까?
    • 일반화특수화에 달린 문제
    • 가설 h1은 약한 조건을 가진 가설(일반화 가능한 가설)
    • 가설 h3은 강한 조건을 가진 가설

규칙 기반 알고리즘 살펴보기

S 탐색 알고리즘(Find S Algorithm)

  • 최적의 가설 h를 구한다.

  • 데이터셋 D에서 모든 인스턴스 x에 대해

    • x가 긍정이라면, 위 예시를 들면 운동 가능하다면
      • 모든 피처 f에 대해, 피처와 가설이 동일하면 -> 아무것도 하지 않음.
        • ex ) 가설 h3의 기상 특징이 화창, 인스턴스 x_i의 기상 특징이 화창인 경우 아무런 동작을 하지 않음
      • 해당 인스턴스 x의 피처 f와 가설의 f가 동일하지 않다면 -> 가설에 포함시킴
        • ex ) 가설 h3의 기상 변화특징이 동일, 인스턴스 x_i은 변화인 경우 다르므로 합집합 가설을 구함.
  • 다음의 인스턴스 x가 주어지고

    • x1 : <화창, 따뜻, 일반, 강함, 따뜻, 동일>
    • x2 : <화창, 따뜻, 일반, 약함, 따뜻, 동일>
    • x4 : <화창, 따뜻, 일반, 강함, 따뜻, 변화>
  • 다음의 가설이 주어지면

    • h0 = <0, 0, 0, 0, 0, 0>
    • h1 = <화창, 따뜻, 일반, 강함, 따뜻, 동일>
    • h_{1, 2, 3} = <화창, 따뜻, 보통, ?, 따뜻, 동일>
      • h1에 x2를 반영하면, 바람 특징이 약함(x2), 강함(가설)으로 다름 -> 해당 특징은 ?가 된다.
    • h_{1, 2, 3, 4} = {화창, 따뜻, 보통, ?, 따듯, ?}
      • x4를 반영하면서 기상 변화 특징이 동일 + 변화 -> ?가 됨.
        • 어떤 문제가 존재할까?
        • 가능한 가설들이 너무 많아 정리 할수 없음.

버전 공간 version space

  • 너무 많은 가설이 존재할 수 있어, 하나의 가설로 모으기가 힘듬
  • 특정 가설을 찾기 보다는 범위에 속하는 것을 가설들을 찾아보자
  • 가능한 가설 집합 == 버전 공간 : 구간을 정해주자
    • 일반 구간 G : 버전 공간의 최대 일반화 가설 집합
      • 특정 구간 S : 버전 공간의 최대 특수화 가설 집합
      • 버전 공간에 속하는 가설 VS_{H, D}는 일반 구간 G와 특정 구간 S에 속하는 가설들을 갖는다.

후보자 제거 알고리즘 candidate elimination algorithm

  • 버전 공간을 만들기 위해서 가장 일반, 가장 특수한 가설들을 제거해 나가면서 특정 버전 공간을 만드는 알고리즘
  • 가장 특수한 가설들을 만들어 주자 -> ex S0 : <0, 0, 0, 0, 0, 0, 0> 무조건 운동 x
  • 가장 일반적인 가설 -> ex) G0 : 무조건 나가 운동
  • 데이터셋 D의 모든 인스턴스 x를 사용
    • x의 라벨 y가 참이라면
      • 인스턴스를 품을수 있을 만큼 특수화 된 가설 S를 일반화
    • 거짓 이라면
      • 일반 가설 G를 특수화.
        • 특정 특징이 가장 일반화, 특수화 된 경우가 동일하다면 더이상 특수, 일반화가 불가

이게 잘 동작하는가?

  • 후보자 제거 알고리즘으로 올바른 가설들을 구할수 있는가?

    • 수렴하는가? -> 가설을 구할수 있어야 한다.
    • 올바른가? -> 관측하여 얻은 가설은 참이어야 한다.
  • 다음의 가설이 주어진다면, 잘 동작한다고 할 수 있다.

    • 관측 오차와 관측 불일관성이 존재하지 않고,
    • 임의 오차가 존재하지 않고
    • 모든 관측 정보로 시스템을 예측할수 있는 경우
  • 하지만 위 가정을 할 수 있는 완벽한 세상은 존재하지 않는다.

    • 데이터 셋 D의 x인스턴스의 어느 특징에든 노이즈를 가지고 있고,
    • 노이즈로 인해 올바른 가설이 제거될수도 있어 올바르게 동작한다고 할 수 없다.
  • 이러한 규칙 기반 머신 러닝 기법의 한계로 노이즈에 강인한 결정 트리가 나옴

300x250
728x90

이전 부터 인공 지능에 대해 무크 사이트에서 공개 강의로 올라와 있는건 알고 있었지만

그 동안 볼때마다 확률, 통계, 공업 수학 등 이론적 배경이 부족하다 보니 이해하는데 어려움이 많았었다.

그래서 전에는 포기하고 제대로 보지 않았는데

오늘 네이버 메일로 이 강의가 다시 와있더라

kaist.edwith.org/machinelearning1_17/lecture/40603/

그 동안 배경 이론들을 많이 연습했으니 이제 볼수 있을것 같아 한번 보았다.

머신 러닝 기법 응용사례로

스팸 메일 여부, 주가 예측, 헬기 제어 등을 보여주더라

머신러닝 분야

  • 지도 학습 : 인스턴스 별 결과, 라벨을 아는 경우 머신 러닝
  • 비 지도 학습 : 인스턴스 별 결과, 라벨이 주어지지 않는 경우의 머신 러닝
  • 강화 학습 : 목표가 있으나 어떻게 목표에 도달하는지에 대한 정보가 없는 경우의 머신러닝

지도 학습 supervised learning

  • 실제 결과를 알고 있는 문제를 학습하는 경우
  • 예시
    • 스팸 필터링
    • 자동 물품 카테고리 분류
  • 분류 classification와 회귀 regrssion
    • 참 거짓 맞추기 Hit or Miss : 양성, 음성 분류하기
    • 점수 매기기 Ranking : A+, B, C, F중 무엇을 받았을까?
    • 값 예측 value prediction : 물품의 가격 예측하기

비지도 학습 unsupervised learning

  • 결과를 주어지지 않고, 주어진 데이터만으로 학습하는 문제
  • 비지도 학습 예시
    • 군집 찾기 cluster
    • 숨겨진 인자(요소) latent factor 찾기
    • 그래프 구조 찾기
  • 클러스터, 필터링,
    • 텍스트 데이터로부터 주제 단어 찾기
    • 얼굴 데이터로부터 latent 중심 이미지 찾기
    • 궤적 뎅이터에서 노이즈 필터링 하기

압정 문제 Thumbtack Question

  • 압정을 던졌을 때 기울어져 있을까? 뒤집혀 있을까?
  • 동전은 앞뒷면이 동일하니 50:50이지만 압정은 다른 결과가 나올것임
  • 5번 던졌을때, 3번은 뒤집혀 있었고(핀이 위), 2번은 기울어 져있었(머리가 위)다고 하자.
    => 시행 결과 핀이 위일 확률은 3/5, 머리가 위일 확률을 2/5

이항 분포

  • 이산 확률 분포중 하나로 상호 배반 사건만 존재하는 시행들(베르누이 시행)으로 나타나는 확률 분포
  • 압정 던지기는 iid 라는 가정을 함. 독립적(independent)이고, 동일한(identically distributied) 확률 분포를 가짐.
  • 데이터 D = H, H, T, H, T로 주어질때,
    • n = 5
    • k = a_H - 3
    • p = theta(H가 나올 확률)
  • P(D | theta) = theta^(a_H) (1 - theta)^(a_T) : theta 가 주어졌을때, D가 관측될 확률
  • 이항 분포의 PMF : f(k; n, p) = P(K = k)=

최대 가능도 추정 Maximum Likelihood Estimation

  • P(D | theta) = theta^(a_H) (1 - theta)^(a_T)
  • 우리의 가정 : 압정 던지기 결과는 theta 확률의 이항 분포를 따른다.
  • 어떻게 theta를 설정할때 가장 이 데이터를 가장 잘 설명을 할수 있을까?
    • 관측 결과를 가장 잘 나타내는 분포를 찾아야 한다.
    • 최적의 theta를 구하여야 한다. 어떻게 theta를 구할까?
  • 최대 가능도 추정 : 관측된 데이터들의 확률을 최대화 하는 theta를 찾는 방법
    • hat{theta} = argmax_{theta} P(D|theta)
    • 위 압정 시행을 통해 추정한 hat{theta} = a_H/(a_t + a_H)

시행 횟수와 에러 구간

  • 추가적인 시행은 추정 오차를 줄여주게 된다.
  • 추정 모수 hat{theta}, 진짜 모수 theta^*라고 할때
  • Hoeffding의 부등식에 따르면 다음의 확률 상한을 얻을 수 있음.
    • 시행 횟수가 늘어날수록 실제 오차와 추정 오차 간격이 줄어듦.
    • P(|hat{theta} - theta^*| >= e) <= 2 e^{2Ne^2}
  • 이것은 PAC(Probably Approximate Correct) learning
    • 추정량 hat{theta}는 위 확률 범위와 오차 범위 내에서 올바름

베이즈와 사전 확률

  • 사전 정보를 파라미터 추정 과정에 반영 할수 있음(사전 확률)
  • 사전 정보를 가미한 추정량을 구하자
  • P(theta | D)Posterior = P(D|theta)Likelihood x P(theta)Prior/ P(D)Normalizing Constant
    • 이전에 P(D|theta)는 정의하였음.
    • P(D | theta) = theta^(a_H) (1 - theta)^(a_T)
  • 50:50이 사전 확률 P(theta)로 사용 될 수 있음.
  • 사전 확률과 데이터를 반영한 P(theta | D)를 구해보자

베이즈 관점에서 살펴보기

  • P(theta | D) 비례 P(D | theta) P(theta)
    • P(D | theta) = theta^(a_H) (1 - theta)^(a_T)
    • P(theta) = ????
    • 가능도 P(D | theta)가 이항분포를 이용하여 구한것 처럼 P(theta)도 확률 분포를 이용하여 구할 수 있다!!
  • 베타 분포로 사전 확률을 사용하자.
    • 베타 분포의 확률 밀도 함수 P(theta) (이항 분포에서 앞면, 뒷면 횟수로 가능도를 구한것 처럼, alpha와 beta가 필요)

  • 사후확률 P(theta | D)를 정리하면..
  • P(theta | D) 비례 P(D | theta) P(theta) 비례 theta^(a_H) (1 - theta)^(a_T) theta^{alpha -1} (1 - theta)^{beta -1} = theta^{a_h + alpha - 1} (1 - theta)^{a_t + beta - 1}

베타 분포로 사전 확률을 사용하자.

사후확률 최대화 MAP Maximum A Posterior

  • MLE에서는 가능도 P(D | theta)를 최대화 하는 추정량 theta를 구하였었다.
    • hat{theta} = argmax_{theta} P(D | theta)
    • hat{theta} = a_h/(a_h + a_t)
  • MAP는 가능도가 아닌 사후확률을 최대화 하는 추정량 theta를 구하는 방법
    • P(theta | D) 비례 thet^{a_h + alpha - 1} (1 - theta)^{a_t + beta - 1}
    • hat{theta} = (a_H + alpha - 1) / (a_h + alpha + a_t + beta - 2)
  • MLE에는 사전 확률을 반영할수 없으나 MAP는 사전확률을 반영할수 있게 된다!!
300x250

+ Recent posts