Association Analysis Basic Concepts and Algorithms


보통 비지니스에서 거래의 결과를 분석하기 위해서 많이 쓴다.

가장 성공적인 사례가, 아기 기저귀 옆에 맥주이다.

기저귀를 사고 맥주를 많이사는 연관 관계를 찾아낸 것이다.


위와 같이 거대한 데이터 셋에 숨어 있는 재미있는 관계가 존재할 수 있다.

Bioinformatics, medical diagnosis, Web Mining, 그리고 Scientific data analysis.


Earth science data의 경우 ocean, land 그리고 atmosphere processes간의 재미 있는 관계를 파악할 수 있다.

각각의 Earth system element들이 서로 어떻게 상호 작용하는지을 알아 낼 수 있기 때문이다.


비록 이겨서는 market basket data를 가지고 설명하지만, 다양한 분야에 적용할 수 있음을 염두 해야 한다.



Association analysis를 market basket data에 적용하려 할때 생기는 큰 2가지 이슈가 있다.

1) pattern을 거대한 거래 데이터로 부터 찾아내는것은 많은 컴퓨팅 파워를 필요로 한다.

2) 발결된 패턴이 거짓일 수도 있다.


따라서, 어떻게 효과적으로 마이닝을 할 것인가와

어떻게 이러한 생성한 연관 규칙을 평가해서 거짓을 찾아낼 것인가에 대한 것으로 나눠서 설명 한다.



Apriori Algorithm


Association Rule이라고 하면 가장 기본적으로 배우는 알고리즘이 Apriori Algorithm이다.


Association Rule은 원인과 결과의 개념이 아니다.

이것은 의미는 2개의 사전이 같이 발생할 가능성이 높다는 의미를 나타낸다.




위의 요소로 했을 때 Support와 Confidence를 계산해 보자.


X->Y 라는 규칙이 있다고 할 때

Support(s)의 경우 X와 Y가 존재하는 transaction의 수를 의미한다.

Confidence(c)의 경우 X를 포함하는 Transaction중에서 Y를 포함하는 것의 수를 의미 한다.


각각에 대해서 계산 하면 아래와 같다. 





Confidence는 당연히 생성괸 규칙의 신뢰성을 의미하므로 높을 수록 좋다고 할 수 있다.

X->Y 일때의 가능성의 1이면 가장 좋은 것이다.


그러면 Support의 의미는 무엇일까?

가량 support가 낮다면 그것은 어떠한 문제점을 내포하고 있을까?


그것은 support가 낮을 경우 confidence가 아무리 높다고해도 그것이 가지는 의미가 약할 수 밖에 없다.

가량 1만개의 Transaction에 대해서 단 10개 정도의 Transaction에서만 나오는 Confidence 1 짜리 규칙이 있다고 하자.

이러한 규칙은 일반적인 사살이라고 보기 어렵다. 왜나하면 10만개중 단 10개의 support 값만을 가지기 때문이다.

이러한 관점에서 Support는 중요하다고 할 수 있다.



Rule Mining Task


최소 support와 최소 confidence를 지원하기 위해서 그것을 데이터 셋속에서 찾아내는 것이 중요하다.

가장 기본적인 알고리즘은 Brute-force approach 이다.


하지만 이 방법은 계산 복잡도가.


이므로 실제 사용하기가 어렵다.





위 같은 예제를 Brute-force approach로 계산할 경우 602번의 계산 연산을 필요로 한다.


모든 support 값이 0.4 이다.

결국 Itemset이 같기 때문이 발생하는 문제점 이다.

따라서 support와 confidence를 decouple하여 계산하면 계산의 복잡도를 줄일 수 있다.



4개의 원소에 대한 부분집합의 갯수는 2^4으로 16개이다.

각각은 아래와 같다.





Brute force approach를 계산하는 복잡도는



O(NMw) 인데 여기서 M이 2^d므로 그 복잡도를 무시할 수가 없다.



Apriori Algorithm



Mining Association Rule은 크게 2단계로 이뤄 지며 각각에 대해서 최적화를 하는 방법을 다루겠다.


1) Frequent itemset generation

- generate all itemsets whose support >= minsup


2) Rule Generation

- Generate high confidence rules from each frequent itemset, where each rule is a binary partitioning of a frequent itemset



1) Frequent itemset generation


원칙

만약 어떤 아이템셋이 빈번한 빈도를 가진다면 그것의 부분집합들은 반드시 빈번한 빈도를 가진다.


이 말의 의미는 당현이 ABC의 support가 50이 넘었어서 frequent itemset으로 정해졌다면,

그것의 부분집합인 AB와 BC 같은 것들의 support는 당연히 50을 넘는 다는 의미이다.


이것을 다시 정리하면 아래와 같은 수식을 얻는다.


어떤 item-set의 support 값은 절대로 그것의 subset들의 support 값을 초과할 수 없다는 의미를 가진다.

이러한 특성은 anti-monotone이라는 특성으로 잘 알려져 있다.



이러한 특성을 통해서 pruning을 할 수 있다.


만약 AB가 infrequent 하다면 그것의 subset은 모두 계산할 필요도 없다.




Algorithm





2) Candidate Generation


1단계: Candidate Generation

새료운 후보 아이템 셋 k개를 빈도 아이템 셋 k-1개에서 뽑아낸다.


2단계: Candidate Pruning

support-based pruning 전략을 사용해서 

후보 k-itemset을 제거 한다.


support 값에 기반해서 pruning은 할 수 있는데 추가로 중복값을 제거하는 것도 중요 하다.


Candidate 생성 방법


Brute force method

모든 k 아이템에 대해서 생성할수 있는 Candidate로 고려 한다.


레벨 3으로해서 즉 k=3

d가 6개라고 하면, Brute force method로 할 경우


 의 조합으로 계산을 해야 한다. 20개가 후보가 되고 아래와 같이 많은 후보군이 생성 된다.

후보군을 생성하는 것 자체는 복잡한 일이 아니지만, 그것을 pruning 하는것은 복잡한일 이다. 그래서 이방법은 좋지 않다.








F_k-1 X F_1 Method











3) Rule Generation


만약 4개의 속성이 있다면 그것에 대한 rule은 아래와 같다.

그리고 |L|의 숫자는 k이고 이것은 2^k 이다.



어떻게하면 효율적으로 rule을 frequent itemset으로 부터 생성할 수 있을까?


일반적으로 confidence는 anti-monotone한 성질이 없다.

c(ABC->D)는 c(AB->D)보다 클수도 잇고 작을 수도 있다.


하지만, 같은 itemset으로 부터 생성된 rule의 confidenceanti-monotone한 성징을 가진다.



Confidence는 오른쪽의 아이템 숫자에 관해서 anti-monotone한 성질을 가진다.




약간 반대의 개념이 된다. support pruning일 때와


왜냐하면 support가 크다면, confidence 계산은 분모가 커지므로 값이 작아 지기 떄문이다.





위 처럼 subset이 high confidence를 가지지 않을 경우 그것의 superset은 그것보다 작은 confidence를 가지기 때문에 pruning의 대상이 된다.

앞선 support와 반대의 개념을 가지는 것을 알 수 있다.

핵심은 RHS의 super와 sub의 관계를 봐야한다는 것이다. 왼쪽이 아니라 오른쪽이다.



Apriori Algorithm의 Complexity


Choice of minimum support threshold

- lowering support threshold results in more frequent itemsets

- this may increase number of candidates and max length of frequent itemsets


Dimensionality (number of items) of the data set

- more space is needed to store support count of each item

- If number of frequent items also increases, both computation and I/O costs may also increase


Size of database

- since apriori makes multiple passes, run time of algorithm may increase with number of transactions


Average transaction width

- Transaction width increases with denser data sets

- This may increase max length of frequent itemsets and traversals of hash tree (number of subsets in a transaction increases with its width)








연습문제 (exercise)


 

min-support = 2/10 일때 Frequent itemset을 구하라.


 {e} = 8 / 10

 {b,d} = 2 / 10

 {b,d,e} = 2 / 10


계산해 본결과 subset들이 당연히 support 값이 더 높거나 같았다.




위와 같은 공식을 가지고 아래 계산을 수행해 보자.


{b,d,e} 총 6개가 생성 된다.

{b,d,e}의 support는 2/10으로 minsup를 만족하기 때문에 frequent itemset으로 고려 한다.



b,e -> d  2/5

d,e -> b 2/5

e -> b,d x  2/8  (b의 superset)

d -> b,e x  2/6  (b의 superset)


b->d,e 2/6 (e의 superset)

b,d->e  2/2




FP-growth Algorithm


Apriori algorithm을 대체하는 새로운 Algorithm 이다.
이것을 통해서도 frequent itemset을 찾을 수 있다.


이것은 FP tree라고 불리우는 것을 사용 하는 것이다.


FP tree를 생성한 다음에 divide and conquer 방법을 통해서 frequent itemset을 찾을 수 있다.



일단 item 셋들을 아래와 같이 support count가 내림차순으로 정렬 한다.

왜냐하면 맨 첫번째 아이템이 root node가 되므로 가장 빈번한 아이템 셋으로 시작하는것이 tree가 올바르게 그려지게 된다.

그렇지 않으면 root에서 너무 많은 branch들이 생성되서 tree 생성이 복잡하며 해석이 어려워 진다.




이제 각각의 Transaction을 이용해서 tree를 생성하면 아래와 같다.


생성방법

Prefix paths ending in x (특정 노드로 끝나는 트리 생성)

-> frequent itemset 을 찾아서 넣음.

해당노드와 관련없는 것들의 빈도를 줄임

해당 노드 제거

모든 관련 없는 infrequent item제거


-> 새로운 트리 생성됨

-> frquent imtemset 찾아서 넣음











이렇게 만들어진 tree를 이용해서 이제 frequent itemset을 생성 하게 된다.

바닥에서 top으로 점진적으로 올라가면서 그것을 찾게 된다.


recursive divide and conquer 방법을 이용해서 하게 된다.


de, ce, be, ae 로 끝나는 것들에 대해서만 그것을 찾게 된다.

모든 path의 node가 다 처리 될 때까지 반복 한다.



어떤 특정 경우에서는 FP-Growth algorithm이 apriori algorithm보다 성능이 수십배가 좋게 된다.

단점으로는 tree가 메모리에 모두 올라가야 하므로 압축률이 좋아야 한다. 

너무 큰 데이터 사이즈에 대해서는 수행이 쉽지 않다.



예제


minimum support count: 2


우선 e로 시작 한다.


위와 같이 생성된 tree를 가지고 e로 끝나는 포인트들을 찾으면 3개가 있다.

3/10 support를 가지므로 minsup를 만족 한다.

따라서 frequent itemset이다.



트리를 재조정 한다.

1) prefix 노드들을 e를 가지는 것들에 대해서만 고려해서 frequency count를 업데이트 한다. 

-> 그냥 단순히 트리 경로를 계산 하는것이 아니라 가지고 있는 데이터 샘플 중에서 e를 포함한 경로들을 카운트 해줘야 한다.


2) 노드 e를 제거 한다.

3) 모든 infrequent item을 제거 한다.


최종적으로 아래와 같은 모습이 된다.



e를 위한 FP-tree로 부터 prefix path가 d인것들만 다시 수집 해서 tree를 형성 한다. 

여기서 다시 계산을 해보면 d가 frequent itemset인 것을 알 수 있다.

따라서, {d,e}는 frequent itemset이 된다.



빈도수를 d를 포함하는 것들로만으로 재종함.

d를 제거함

infrequent itemset을 제거함. 그럼 c가 제거대고 아래와 같은 FP-tree가 구성됨. 



이 트리를 이용해서는 {a,d,e}를 뽑아 낼 수 있다.


이제 e->d는 모두 했으니,

다른 경로인 e->c를 수행 하자.


c를 시작으로하는 것으로 tree를 구성한다.

c는 frequent itemset이다.

따라서 {c,e}로 설정 된다.


그다음 {c,e}를 가지고 FP-tree를 구성 하게 되면

c에 의해서 발생된 것들에 대해서만 빈도수를 재조정하고

c를 제거한다음

infrequent itemset에 대해서 설정을 하면 null만 아래 처럼 남는 FP-tree가 구성 된다.




마지막으로 a를 prefix path로 고려해서 시작하면

위와 같은 tree를 구성하며 a가 frequent itemset이기 때문에

{a,e}는 frequent imtemset이 된다.


이제 suffix e에 대한 FP-tree를 이용한 Divide and conquer 방식을 모두 수행 했다.

최종적으로 찾아낸 frequent Itemset은

{e}, {d,e}, {a,d,e}, {c,e}, {a,e} 이다.


이러한 과정을 suffix 

d,c,b,a,에 대해서도 모두 수행하면 아래와 같은 표를 얻을 수 있다. 


















'AI > Theory' 카테고리의 다른 글

Unsupervised Learning: Cluster Analysis  (3) 2015.06.03
Deep Learning  (0) 2015.06.03
Bayesian Classifiers  (0) 2015.04.23
K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19

Bayesian Classifier


Conditional Probability를 이용해서 Classifier를 구현 하는 방법이다.

이번 장에서는 Theorem에 대해서 주로 다루고 실제 구현은 R을 통해서 수행한다.

구현 부분이 궁금하다면 Naive Bayes Classification with R을 보자.


Conditional Probability 계산법

$$P\left( { C }|{ A } \right) =\frac { P(A\cap C) }{ P(A) } $$

이라면, A일때 C의 확률을 구하는 조건부 확률 문제이다.


하지만, A 조건이 결합 확률로써 여러 조건들이 연속적으로 발생 할때의 확률이라면 계산하기는 쉽지 않다.

이때 Bayes Theorem을 적용하면 쉽게 계산을 할 수 있게 된다.



이 알고리즘은

P를 정확히 계산할 수 있다는 전제 하에 가장 성능이 좋은 알고리즘으로 알려져 있다.

하지만 이것은 이론상 그런것일 뿐 실제로는 P를 정확히 계산하기 어렵기 떄문에 그렇지는 않다.




Bayes Theorem의 기초 문제



팀 0은 65% 승리, 이중 30%만이 팀1의 Home 장소에서 이긴것이다.


팀1의 경우 35%의 승리가 있고 그중 75%가 자신의 홈에서 승리한 것이다.


이러한 상황에서 

팀 1이 팀0의 홈에서 경기를 한다면 확률상 어느 팀이 승리할 것인가?



해설


X는 홈이 되는 팀을 나타낸다.

Y는 경기에서 승리한 팀을 나타낸다.

이럴때, X와 Y는 각각 {0,1}사이의 값을 가질 수 있다.


P(Y=0) = 0.65

P(Y=1) = 0,35


P(X=1 | Y=1) = 0.75

P(X+1 | Y=0) = 0.3


이것을 예측하기 위해서는 다음과 같다.


P(Y=1|X=1)와 P(Y=0|X=1) 이 둘의 확률을 계산해서 더 큰 쪽으로 Prediction 하면 된다.


계산 방법은 아래와 같다.



Bayesian Classifier



Bayes Theorem을 이용해서 모든 class에 대한

posterior probability를 계산하여 classifier를 만드는 것이다.





그런다음, 각각의 Class에 대한 확률 값 P중에서 최대가 되는 것을 선택해서 예측 하게 된다.

Bayes theorem을 쓰면, 원래 수식 보다는 조건부가 더 간단해져서 계산하기 쉽지만, 

그래도 여전히 아래와 같이 Joint Probability 이므로 계산하기 쉽지 않다. 







Naive Bayes Classifier 



주어킨 class에 대해서 모든 각각의 Attribute들이 독립적이라고 가정 하면, 
Joint Probability 문제가 간단해 진다.



그렇다면, 어떻게 Data로 부터 Probability를 얻어내는가?


Traning set으로 부터 counting하여 P를 얻어낸다.

결국 discrete attribute에 대해서는 아래와 같은 식이 성립 한다.




□ Example of Naive Bayes Classifier (1) 


아래와 같이 트레이닝 데이터가 주어졌다고 했을때,


x = (Refund = no, Martial Status= Married, Income = 120K)의 Record에 대해서 prediction을 수행 해라.





Taxable Income에 대해서는 Normal Distribution을 따른 다고 가정한다.


sample mean = 110 

sample variance = 2975




문제를 풀기 위해서 주어진 record에 대해서 class = Yes 일때와 No일때의 확률을 구하는 수식은 아래와 같다.






위를 계산하면,

P(X|yes) = 0 이고 P(X|no) = 0.0024 이다.

따라서 Class는 No로 Prediction 된다.




□ Example of Naive Bayes Classifier (2)






독립이라는 가정하에 각각의 Class의 확률을아래와 같이 분리 할 수 있다.







결국 분모는 P(X)로 같으므로, 분자만 비교하면 P(mammals|x) > P(non-mammals|x) 이므로

test record x는 mammals로 prediction 된다.




Probabilistic Learning - Classification using Naive Bayes


과거의 데이터를 분포를 가지고 확률에 기반에서 미래를 예측 하는 기술이다.

18세기 수학자 Thomas Bayes에 의해서 고안된 기초적인 수학 원칙인 Bayesian method에 기반한다.


Bayesian classifier는 

Text classification, such as junk email (spam) filtering, author identification, or topic categorization

Intrusion detection or anomaly detection in computer networks

Diagnosing medical conditions, when given a set of observed symptom


기본적으로 Basian classifier는 정보가 다양한 속성으로 부터 동시에 고려되져야 한다면, 그것을 통해서 확률적인 결과를 예측 해야 한다면

그러한 상황에서 적용할때 최적의 방법으로 알려져 있다.


많은 알고리즘은들은 weak effect를 가지는 feature 들을 무시하는 방법을 택하지만 Bayesian 방법은 모든 미묘한 변화와 가능성을 고려하는 방법을 택한다.


스팸의 경우 스팸이 20% 이면 스팸이 아닌것은 80%인 둘은 항상 총합이 100%가 되는,

Mutually exclusive 하며 exhaustive한 관계를 가지고 있다.









The Laplace estimator


spam filter를 하기위해서 몇가지를 더 고려한다고 가정해보자.

money, groceries, 그리고 unsubscribe 이 세개를 Viagra와 함께 추가로 고려 한다.

이럴때, Naive baytes algorithm을 적용하기전에 spam일 때의 likelihood를 계산해 보면,

$$(4/20)\times (10/20) \times (0/20) \times (12/20) \times (20/100) = 0$$


이렇게 계산 했을 때, ham의 경우

$$(1/80) * (14/80) * (8/80) * (23/80) * (80/100) = 0.00005$$


따라서 spam 일때의 확률은

$$0 / (0 + 0.0099) = 0$$

ham 일때의 확률은

$$0.00005 / (0 + 0. 0.00005) = 1$$

이 된다.


하지만, 이러한 0% 와 100%의 spam과 ham의 예측은 타당하지 않다.

가끔은 viagra도 합당한 e-mail에도 쓰일 수 있다. 그래서 절대적으로 spam이라고 단정 할 수는 없는 것이다.


이러한 문제는 과거에 해당 이벤트가 한번도 해당 클래스 레벨에서 관측 되지 않았다면 매번 발생 하는 문제이다.

Groceries라는 단어가 과거의 spam에서 발견되지 않았다면,

P(spam|groceries) = 0%이고 따라서 절대적으로 spam이 아닌 결과를 도출 하게 된다.

데이터를 관측하지 못해서 정확도가 올라가는 현상은 매번 심각히 고려야할 문제로 다뤄 왔다.


이것을 해결하는 하나의 방법으로 Laplace estimator를 사용하는 방법이 있다.

프랑수 수학자 pierre-simon laplace에 의해서 고안된 것이다.

이것은 zero feature를 막기 위해서 최소한 1의 count 값을 모든 feature에 추가하는 방식을 말한다.

1을 각각 추가해서 이전의 식을 재수행하면 아래와 같다.

$$(5/24) * (11/24) * (1/24) * (13/24) * (20/100) = 0.0004$$

각각의 feature에 1을 추가하면 전체에 총 4를 추가한다. 모두 각각 4개의 feature가 기록 되었기 때문이다.


ham의 값은

$$(2/84) * (15/84) * (9/84) * (24/84) * (80/100) = 0.0001$$


이것을 이용해서 각각의 확률 계산해 보면,



Using numeric features with naive Bayes 


naive bayes를 적용하기 위해서는 빈도 테이블이 있어야 한다. 따라서 각각의 feature들은 카테고리컬 해야하며 메트릭으로 구성 되어야 한다.


해결방법은 discretization을 수행 하는 것이다.

이렇게 할려면 각각의 bin 설정을 위한 cut point를 설정 해야 한다. 따라서 이러한 discretization 기법을 binning이라고도 부른다.


여기서는 시간을 이용해서 cut point를 설정 했다.

아래의 histogram을 보면 자연적으로 4개의 구분으로 나눠지는 것을 알 수 있다.

이렇게 나눠진 numeric data들은 각각의 구획에 따라서 nominal feature들로 변환 되어서 naive bayes에 적용된다.


만약 discretization을 하기가 명확하지 않다면, 하나의 선택적 방법은

분위수를 수행 하는 것이다.


하지만 이러한 discretizing은 언제나 정보 손실을 가져온다는 것을 유념해야 하며,

따라서 balance를 유지하기 위해서 노력 해야 한다.

너무 적은 bin은 중요한 경향을 놓치게하며, 너무 많은 bin은 naive bayes에 적용하기에는 부족한 빈도 table을 생성하는 경향을 보이기 때문이다.





Bayesian Network  



기존의 Naive Bayesian의 경우 모든 Attribute가 독립 적이라는 가정을 하고 Classification을 수행하기 때문에 문제가 발생한다.


어느정도 의존성을 고려해서 처리하고 싶을때 지금 소개하는 Bayesian Network을 사용 한다.


아래 보여지는 Network은 기존의 Naive Bayes Classifier를 Network으로 나타낸것이다. 보이는 봐와 같이 Class 정보인 play에만 의존성이 있고 각각의 Attribute에 대해서는 모두 의존성이 없는 모습을 가진다.






그럼 이제 어느정도 의존성이 있는 Network을 가지고 Prediction을 수행해 보자.



아래와 같은 데이터에 대해서 Play는 무엇으로 Prediction 되어 질 수 있는가?



위의 주어진 레코드를 x로 두면


P(Play = Y |X), P(play = N |X) 둘 중에서 더 큰 확률 값을 가지는 것으로 prediction하는 문제가 된다.


이때 모든 Joint Probability를 고려 하면,



이중에서 network을 고려해서 실제 의존성이 있는 것들만 남기면 다음과 같다.

각각의 확률 값들은 표에 나온 미리 계산된 확률값을 그대로 이용 한다.



Play=no에 대해서도 계산하면 다음과 같다.



최종적으로 계산하면 아래와 같다.



결국 두개의 확률을 비교 하면 Play=YES가 더 크기 때문에 해당 값으로 prediction 된다.

















'AI > Theory' 카테고리의 다른 글

Deep Learning  (0) 2015.06.03
Association Analysis Basic Concepts and Algorithms  (0) 2015.04.27
K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19

K Nearest Neighbors - Classification



Unseen Data가 들어 오면, Traning Data를 그대로 사용하여 majority voting을 통해서 class를 결정하는 방법을 말한다.





구현을 위해서 필요한 사항

1) 트레이닝 데이터들을 모두 보관한다.

2) Distance Metric을 사용하여 Unknown record와의 거리를 계산 한다.

3) k개의 neighbor와 반복해서 Distance를 계산 한다.

4) 최종적으로 Majority voting을 통해서 prediction 한다.



입력된 테스트 데이터 (x', y')과 Traning Data (x,y)와의 distance 또는 Similarity를 계산 한다.


그다음 nearest - neighbor list로 구성된 D_z가 발견되면, D_z 내에서 majority voting을 통해서 class를 파악 한다.


Majority voting 방법은 아래와 같다.


위 식에서 

v는 + 또는 -와 같은 어떤 class label을 나타냄.

y_i는 nearest neighbors의 class label이다. 

I() 함수는 true 이면 1을 아니면 0을 return하는 indicator 이다.


 


위와 같은 경우 아래와 같이 된다.


  


는 최대가 되는 argument 즉, v를 return 하는 것이다.




K-NN의 특징



결국 Distance metric을 이용해서 nearest neighbor를 계산하는 방법이기 때문에 Distance metrix에 다분히 의존적인 방법이다.


보통 사용하는 Distance Metric은 아래와 같다.




위 Metric 중에서 우리가 Euclidean을 사용 한다면, 아래와 같은 문제점이 생길 수 있다.


□ Scaling issues: Distance measure를 사용 하므로 이러한 문제가 발생 한다.

모든 크기를 0~1 사이로 맞추는 방법을 사용할 수있다.

Mahalanobis distance를 사용하는것이 해결 방법이 될 수도 있다.



□ High Dimensionality: curse of dimensionality



위와 같이 2개의 Euclidean measure는 동일한 값을 나타낸다.


하지만,

0은 의미 없는 값이라고 했을 때 0이 많다고해서 두개가 유사한것은 문제가 된다.


이것을 보정하기 위해서 vector의 길이로 각각을 나누어 준다.


첫번째 vector의 length = 


두 번째 vector의 length = 


이것으로 각각을 계산하면




□ Laze Learner의 방법


명시적으로 model을 생성하지 않으므로 상대적으로 online prediction time이 길어 진다.


performance에 영향을 주는 factors

Distance metric의 종류

K의 수를 얼마로 정할 것인가 이다.


















'AI > Theory' 카테고리의 다른 글

Association Analysis Basic Concepts and Algorithms  (0) 2015.04.27
Bayesian Classifiers  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18

Methods for Performance Evaluation


어떻게 성능을 측정할 것인가?


이것은 Learning 알고리즘에 의존적인 문제이다. 생각해 볼 수 있는 지표들은 아래와 같다.


Class of distribution: 균등함의 정도를 나타낸다.

Cost of misclassification

Size of training and test sets



Holdout 방법 

Reserve 2/3 for training and 1/3 for testing 으로



Metrics for Performance Evaluation






Computing Cost of Classification


주어진 Cost  Matrix





Sensitivity and Specificity


바이너리 classification test에서 주로 사용 하는 통계적인 measure가 Sensitivity와 specificity 이다.


Wikipedia: URL


Sensitivity는 

True positive rate

recall

로 불린다.

Specificity

True negative rate


예측한것 들 중에서 실제로 negative 인것 / 전체 negative 인것












좀 더 읽어보기


Practical Machine Learning post

Receiver Operating Characteristic, Cross validation












'AI > Theory' 카테고리의 다른 글

Bayesian Classifiers  (0) 2015.04.23
K Nearest Neighbors - Classification  (0) 2015.04.23
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Support Vector Machine  (0) 2015.04.17

Classification: Decision Tree


Classification은 미리 정의된 카테고리들 안으로 어떤 하나의 object를 어사인하는 작업을 말한다.

이것은 많은 응용들이 가지는 문제에 적용 되어 질 수 있다.


예를 들면, spam 찾기, 세포의 malignant 구분, galaxy의 종류 구분 등에 적용 할 수 있다.

이러한 것들은 supervised learning의 한 종류이며,


가장 간단한 형태인 Decision Tree에 대해서 다루도록 하겠다.




Hunt's Algorithm



해당 알고리즘을 이해하기 위해서 채무 불이행 (Defaulted Borrower)문제를 풀어 보도록 하자.


D_t는 node t와 연관된 training record들의 set이라고 하자.

y = {y1, y2, ... yc}는 class label들 이라고 하자.

위와 같은 조건하에서 아래와 같이 Algorithm을 정의 한다.


Step1: 

D_t에 있는 모든 레코드가 같은 class y_t륵 가진다면, t는 어떤 leaf node가 되고 y_t로써 labeling 되어 진다.

Attribute test를 또 할필요도 없이 impurity가 0이므로, 즉 100%인 것이다. 논란의 여지 없이 leaf node를 y_t로 만들면 된다.


Step2: 

    만약 D_t가 empty set이라면, t에서의 leaf node는 default class y_d로 라벨 되어 진다.

y_d는 전체에서 다수의 test set을 가지는 것을 말한다.


Step3:

D_t에 있는 레코들이 두개 이상의 y_t 클래스를 가진다면, attribute test를 사용해서 data를 더 작은 subset들로 분할 한다.

이 작업을 나눠진 각각의 subset에대가 반복 한다.

핵심은 이 attribute test로 적절한 condition을 찾는 것이다.





위의 이전 데이터를 가지고 아래의 Decision Tree를 생성하는 과정을 보여 준다.

(a)를 보면 채부 불이행(Defaulted)가 No이다. 이러한 의미는 모든 사용자가 대출이 가능하다는 것을 뜻한다.


(b)와 같이, Home Owner를 Root로 해서 더 작은 Subset으로 나눠지는 형태의 트리를 구성 한다.

이렇게 어떤 Root 노드를 선택할 것인지에 대한 Attribute test에 관한 이야기는 나중에 다룬다. 일단 저렇게 했다고 생각하자. 

단지, HomeOwner는 spliting을 하기 위환 best criterion이라고 생각하자.


Hunt's Algorithm은 이제 다시, 각각의 child node들의 root에 똑같은 방법을 다시 적용하게 된다 (recursively).


(c)에서 HomeOnwer =yes 인 사람들은 모두 Defaulted = No 이므로 더이상 분할 하지 않는다.

하지만 오른쪽의 경우 즉 HomeOwner=No인 경우를 보면, 

총 7개의 Training Data중에서 

3개의 Defaulted = Yes

4개의 Defaulted = No 로 구성 되어 진다.

따라서 단일 class로 구성 될 때 까지 계속 분할 해야 한다.

이러한 작업을 반복하면 (d)와 같은 모습을 나타내게 된다.








Measures for Selecting the Best Split


가장 최적의 split way를 찾는 문제는 많이들 연구를 해왔다. 이중 몇가지를 소개 하겠다.


p(i|t)라는 것을 t 노드에서의 i class의 비율이라고 생각하자.



C0에 대해서 10개의 레코드가 있고,

C1에 대해서 10개의 레코드가 있다고 하면

P(C0,C1)은 P(0.5, 0.5)가 된다. 동일한 수의 레코드가 각각의 class에 대해서 존재하기 때문이다.


하지만, 이것을 하나의 Attribute를 기준으로 Split하게 된다면 아래와 같은 Tree 형태로 나타내어 진다.





이떄 과연 우리는 무엇이 더 좋은 구조라고 말 할 수 있는가.


이것을 measure 하기 위해서 impurity라는 개념을 도입 한다.

impurity란 class의 분포가 skewed (편향됨) 한 정도를 나타낸다.

즉, impurity가 높다는 것은 평향되지 않다는 것을 의미한다.


P(0,1)이 zero impurity를 가지며, P(0.5, 0.5)가 가장 높은 impurity를 가진다.




Gain이 클려면 결국, M12, M34와 같은 Impurity가 낮아야한다.

그리고 M12, M34를 구하기 위해서는 weighted average를 이용해서 구하게 된다.



결국 impurity가 높다는것은 error가 높다는 것을 의미한다, 편향됨의 정도가 높아야 prediction 했을 떄의 error가 적게 된다.

이러한 impurity를 measure는 지표는 아래와 같다.



위 식에서 c는 number of classes가 된다.


위식과 weighted average를 이용해서 각각을 split node를 찾기위한 수식은 아래와 같다.



주어진 Node t에서의 GIni Index는 아래와 같다.



P(j|t)는 t의 노드에서 j 클래스의 빈도를 나타낸다.


최대의 경우 n_c가 클래스의 총 숫자를 나타내는데, 모든 래코드가 모든 클래스에 대해서 분포를 가진다면, 그 때 GINI indext가 가장 큰 값을 나타낸다. 즉, 10개의 클래스가 존재하는데 해당 노드 t에서 포함되는 모든 레코들이 10개의 클래스에 대해서 모두 분포를 가지고 있다며, 이때 가장 impurity가 높게 되는 것이다. 이러한 때를, least interesting information 이라 한다.


최소의 경우, 모든 record가 단 하나의 클래스만을 가지고 있을 때이다. 이때는 0이되며, most interesting information 이라고 한다.


어떤 노드 p에서 k partitions (children)으로 split 할때 split의 quality를 다음의 수식으로 계산 한다.



n_i / n은 weighted average를 구하기 위한 수식 이다.




주어진 노드 t에 대해서 Entropy 계산은 아래와 같다.


위 식의 의미를 살펴 보면,



의 식이 계속 확률에다가 곱해지는 형태가 된다. 즉 확률이 크면 클수록 로그값이 작아진다,

따라서 확률이 높은 것들은 확률을 낮춰주고, 확률이 낮은것들은 확률을 높여주게 된다.


이것을 이용해서 사용되어지는 평균 비트수를 줄일 수 있다고 한다.

허프만 코드 적용에 유용하게 사용 할 수 있다.



Information Gain


Parent Node p is split into k partitions

n_i is number of records in partition i



node t에서 Classification error를 이용하는 방법.





계산 방법 예제






Binary Classification Problem에 대해서 3개의 measures를 기하학 적으로 표현 하면 아래와 같다.


x축은 p의 확률 이며,

y축은 impurity 이다.


Gini의 경우에 살펴보면,


C0: P

C1: 1-P


Gini Index의 정의에 따르면 Impurity 수식은







의사결정트리 분석의 장점


결정트리를 통한 데이터 분석의 결과는 나무(Tree) 구조로 표현되기 때문에 분석가가 결과를 쉽게 이해하고 설명할 수 있는 장점이 있다. 


분류율에 대한 정확도만 따지자면 신경망(Neural Network) 또는 로지스틱 회귀분석 등의 분류 방법들 보다 낮게 평가되기도 하지만 결과를 쉽게 이해하고 설명할 수 있으며 의사결정을 하는데 직접적으로 사용할 수 있는 장점이 있기 때문에 데이터마이닝 적용시 매우 많이 사용되고 있다. 



의사결정트리 분석의 한계


일반적인 결정트리 알고리즘은 갖는 한계, 단점을 아래에 나열하였다. 


[1] 데이터의 특성이 특정 변수에 수직/수평적으로 구분되지 못할 때 분류율이 떨어지고, 트리가 복잡해지는 문제가 발생한다. 신경망 등의 알고리즘이 여러 변수를 동시에 고려하지만 결정트리는 한 개의 변수만을 선택하기 때문에 발생하는 당연한 문제이다. 


[2] 결정트리는 Hill Climbing 방식 및 Greedy 방식을 사용하고 있다. 일반적인 Greedy 방식의 알고리즘이 그렇듯이 이 방식은 최적의 해를 보장하지는 못한다. 


[3] 약간의 차이에 따라 (레코드의 개수의 약간의 차이) 트리의 모양이 많이 달라질 수 있다. 두 변수가 비슷한 수준의 정보력을 갖는다고 했을 때, 약간의 차이에 의해 다른 변수가 선택되면 이 후의 트리 구성이 크게 달라질 수 있다.  









'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Support Vector Machine  (0) 2015.04.17
Perceptron and Multiclass perceptron  (0) 2015.04.06

Data Type and Data Preprocessing




Data Type



categorical or qualitative attribure

Nominal: values that are distinct symbols

ex: ID numbers, eye color, zip codes

Ordinal - possible to rank the categories

ex: height in (tall, medium, short)


numeric or quantitative attribure

interval: values that are ordered and measured in fixed and equal units

ex; calendar dates, temperatures in celsius or fahrenheit

ratio: treated as real numbers

ex: length, mass, counts



Attribute values의 특성



Nominal attribute는 distinctness 로 구별이 가능한 것들을 말한다.

Ordinal attribute는 distinctness & order 이다. 

Interval attribute는 distinctness, order & addtion

Ratio attribute: all 4 properties



Types of data sets

- Record data

레코드들이란 고정된 attribute들의 집합으로 구성 된 것들을 말한다.


- Data Matrix

여러개의 dimension을 지원하는 데이터 형태이며,

각각의 dimension들은 하나의 distinct attribute가 된다.


- Document Data

각 도큐먼트들은 어떤 'term' vector가 된다.

각각의 term들은 백터의 컴포넌트가 된다.



- Transaction Data

레코드 데이터의 특별한 타입을 말한다.



- Graph Data

HTML 이나 Web에서 주로 사용 한다.


- Ordered Data

Genomic sequence data






Data pre-processing


Aggregation

Sampling

Dimensionality Reduction

Feature selection

Feature extraction

Discretization and Binarization

Attribute Transformation



The curse of Dimensionality


Dimension이 증가하면 전체 공간에서 data가 차지하는 비중이 작아 지게 된다.





Similarity and Dissimilarity


Similarity

두 데이터가 numerical 할때 둘 사이의 유사도를 비교하는 것이다.

값이 높다면 좀더 유사하다고 할 수 있다.

이것은 [0,1] 사이의 값을 가진다.


Dissimilarity

Numerical measure에 대해서 두개의 object들이 얼마만큼 다른지를 판별 한다.

낮은 값은 좀더 alike 하다고 할 수 있다.

최소의 dissimilarity는 0이다.

최대는 보통 제한이 없다.

1로 맞추기 위해서는 range를 알아서 그 값으로 나누어야 하는데, 구지 그러한 노력을 하는 것이 큰 의미가 없기 때문이다.






Distance의 종류

  • Euclidean
  • Minkowski 
  • Mahalanobis 





Euclidean Distance


백터의 개념을 집어 넣을 수 있기 때문에,

n은 dimensions(attributes)의 수이다.

하나의 attribute들이 x,y,z,... 이 되고

이것들이 각각 차원이 되므로


공간상에 두 점을 잊는 백터의 길이가 Euclidean Distance라고 할 수 있다.




예제를 통한 계산


p1과 p2







Minkowski Distance 


generalization of Euclidean Distance 


r은 어떠한 parameter 이다

n은 dimension의 수이다. 즉, attribute의 수이다.

p와 q는 서로다른 데이터 오브젝트를 의미한다.


이제 각각의 r에 따라서 알아 보겠다.




Hamming distance는 2개의 binary vector들 사이에 서로다른 bit의 수를 나태내게 된다.




위와 똑같은 데이터를 가지고
r에 따른 Minkowski Distance를 계산해 보자.

r=1의 의미는 Hamming Distance를 계산 하는 것이다.




Mahalanobis Distance  


각 dimension들간의 scale이 차이가 심하여, Distance에 크게 영향을 미치는 현상을 제거하는 것이다.
즉, 원래의 타원형 데이터를 원형으로 다시 re-scaling 하여 계산 하는 형태이다.



공분산 행렬 (co-variance Matrix)이 아래와 같다고 치자.



참고




co-variance (공분산)을 구하는 방법.

m은 데이터의 갯수를 의미한다.

i는 하나의 attribute, 하나의 dimension을 의미하고

j는 또 다른 하나의 Attribute를 의미한다.


각각의 데이터를 평균과 뺀 다음 둘을 곱한것들의 합이기 때문에


양수가 나오는 경우 (+)(+), (-)(-) 형태의 데이터가 많은 것을 나타내며,

음수가 나오는 경우 (+)(-), (-)(+) 형태의 데이터가 많은 것을 나타낸다.


따라서,

Covariance가 양수면 두개의 attribute들이 비례 관계를 가지는 것을 의미한다.

음수라면, 두개의 attribute들이 반비례 관계를 가지는 것을 의미한다.



마지막, 

의 뜻은

각 dimension에서의 covariance combination을 타나내는 matrix을 의미한다.


two dimension의 경우 2x2 matrix이 생성 되고

n dimension의 경우 nxn의 matrix이 생성된다.







Distance와 Similarity 사이 에서의 일반적인 성질에 다해서 다루워 보겠다.









Cosine Similarity





Binary Vector의 경우


Simple Matching Coefficient (SMC)

number of matches / number of attributes


Jaccard Coefficient (useful for asymmetric attribute)

J = number of 11 matches / number of not-both-zero attributes values





Correlation






















'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Support Vector Machine  (0) 2015.04.17
Perceptron and Multiclass perceptron  (0) 2015.04.06

Support Vector Machine


Classification technique 의 한 종류이다.

statistical learning theory에 근간을 두고 있다.

해당 알고리즘은 많은 실제 응용프로그램에서 높은 성능을 나타내게 된다.


handwritten digit recognition to text categorization 등에 사용된다.

curse of dimensionality에 강건한 모습을 가진다.


이것의 unique한 ascpect는

traning data의 subset만을 가지고 decision boundary를 결정 한다는 점이다.

이러한 training data의 subset을 support vector라고 한다.


일단은 linearly separable data를 가지고 linear SVM을 트레이닝 하는 방법을 배운다.



Linear SVM: Separable Case


그다음 non-linearly separable data에 대해서 SVM을 이끌어내는 방법을 배운다.



아래와 같이 2개의 영역으로 Classification 하는 문제에서

Hyper-plane은 무수히 많이 나올 수 있다.


이중 최적의 Hyper-plane은 무엇 일까?



그것은 아래와 같이 최대의 margin을 가지는 hyper plane일 것이다.



이렇게 최대 마진을 가지는 B1은 B2보다 노이즈에 강건하기 때문에 좋은 성능을 가지게 된다.

즉, generalization error가 적어지는 효과가 있다.




이러한 최대 margin을 가지는 hyperplane을 찾는 방법은 아래와 같다.




Wiki 피디아




Linear Decision Boundary


각각의 Example의 Tuple (xi,yi) 이다. i는 1,2,...N 이다.




그리고 전통적으로 y는 2개의 class 문제로써



이럴때 Decision Boundary는 아래와 같이 정의 된다.


여기서 w와 b는 모델의 파라메터가 값이 된다.


b는 bias로 threshold 값이 된다.

결정을 할때 특정 임계값을 줘서 그 강도를 조절 할 수 있다. 




위 그림은 이차원 training set 데이터를 나타낸다. 각각의 training data들은 사각형과 원형을 가지고 있다.


만약 2개의 점이 decision boundary 안에 위치 한다면, 아래의 식을 만족 한다.



여기서 x_b - x_a는 

Decision boundary와 병렬인 어떠한 벡터가 된다. 그리고 이것은 x_a에서 x_b로 직접적으로 가게 된다.


w와의 dot product는 0이기 때문에 벡터 w의 방향은 decision boundary와 반드시 직교하게 된다. 이것의 그림은 위와 같다.


이제 x_s는 decision boundary의 위에 위치 한다고 하고 우리는 이것을 아래와 같이 기술 할 수 있다.









Margin of a Linear Classifier 


decision boundary와 가장 가까운 square와 circle을 우리는 고려 해 볼 수 있다.
사각형은 decision boundary 위에 위치하기 떄문에, 그것은 반드시 

을 만족 한다. 즉, k는 어떠한 positive 값이 된다.


반면에 circle은 반드시 

을 만족 한다. 즉 k'은 어떠한 negative 값이 된다.

2개의 parallel hyperplanes 

를 설명하기 위해서 

decision boundary의 두개의 파라메터 w와 b를 다시 설정 한다.



decision boundary의 margin이란 결국 주어진 2개의 hyper-plane들 사이의 거리를 의미 한다.


이 margin을 계산 하기 위해서,

우선 은 b_i1 위에 있는 데이터 포인트 이다. 그리고 x_2는 bi2위에 있는 데이터 포인트 이다. 

이러한 모습은 위 그림과 같다.


2개의 점에서의 차이는 첫번째 equation에서 second equation을 빼는 것이다.

이것을 유도하면 아래와 같다.



핵심은 x1-x2가 다른 선이라도 smallest distance from each class 이기 때문에

가장 단거리 d를 의미하고

그것과 법선 벡터 w와는 cos 0로 값은 1이다.

따라서 위와 같이 간소화 될 수 있다.




Learning a Linear SVM Model 


Training 단계에서의 SVM은 

파라메터 decision boundary의 파라메터 w와 b를 트레이닝 하게 된다. 트레이닝 데이터로 부터


파라메터들은 반드시 다음과 같은 2개의 조건을 만족 하게 된다.



먼역 y=1이라면 모든 트레이닝 데이터들은 반드시 hyper plane 위에 위치 해야한다.


이와 반대로, y = -1이라면 그것은 반드시 hyperplane 아래에 위치하게 된다.

이러한 두개의 inequality는 다음과 같이 좀더 compat 한 수식으로 요약된다.




SVM의 decision boundary가 반드시 maximal 이어야 한다는 조건은 다음의 수식이 minimizing 되어야 한다는 의미와 같다.




Definition 5.1 (Linear SVM: Separable Case). The learning task in SVM can be formalized as the following constrained optimization problem: 








Dual Problem


기존의 문제가 Lagrange multipliers를 이용해서 Dual problem으로 변경 되어 질 수 있다.






Linear SVM: Non-separable Case



이전에 정의한 decision boundary는 mistake-free 한것들만 정의 했었다.

하지만, 소수의 데이터가 대부분의 데이터 보다 너무 멀리 떨어져있고, 이것이 Noise일 가능성이 있다면,

어느정도 이러한 noise들을 무시하는 tolerable to small training error를 가지는 SVM을 설계할 수있다. 이것을 soft margin이라고 한다.


더욱이 not linearly separable 하다면 이러한 soft margin은 더더욱 필요하게 된다.





Nonlinear Support Vector Machine



이제는 아에 not linearly separable data들에 대해서 다루도록 하겠다.


이때는 original coordinate space x를 아에 새로운 space로 transform 하게 된다.





아래의 기존 2차원 space를 transform 하게 되면,

더 높은 dimensional space로 변경하게 되면 아래와 같이 된다.

이것은 linearly separable data의 분포로 변경이 되어진다.






Kernel Method


하지만 위와 같은 transform 되는 higher dimensional space의 존재 여부를 알아내는 것이 매우 어려운 문제가 된다.


이것을 해결하기 위해서 Kernel Method를 사용하게 된다.

이것을 통해 의 존재를 알 수 있다.



 




Characteristics of SVM


Try to find the global minimum of the objective function

 - ANN tends to find locally optimum solutions


SVM is an algorithm for binary class problem


How to apply for multi-class problems

- one-against rest approach

- one-against-one approach

- Error-correcting output coding (ECOC)







'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Perceptron and Multiclass perceptron  (0) 2015.04.06

R을 써야 하는 이유?


하나의 연구를 마무리 짓기위해서는 검증 실험이 절대적이다.

이러한 상황속에서 논문을 한편 쓰고나면 엄청나게 많은 데이터들이 난잡하게 파일로 남는것을 알 수 있다.


엄청난 양의 임시파일 

스크립트코드

중간 결과물


여기서 문제는 논문은 보통 여러차례 reject 맞는 것이 일반적이다. revision을 하려고 보면 기억도 나질 않는다.

다시 그래프를 그리고 데이터를 해석하기 위해서는 이전 데이터를 다시 봐야하는데 그럴때 참 많은 어려움을 느낀다.


그나마 프로그램을 엑셀과 같이 1개만 쓰면 모를까

통계 처리를 위해서 SPSS 등과 같은 SAS 프로그램을 사용 했다면 일은 더욱더 복잡해 진다.

이러한 데이터 관리와 처리의 문제를 RStudio를 통해서 해결해 보자.



R의 언어적 장정

백터를 이용해서 데이터를 처리한다. 이러한 자료구조는 전통적인 언어에서 지원하지 못하는 기능이다.

loop대신 apply 종류의 함수를 이용하므로 엄청난 실행 향상을 가져오며 계산의 단순함을 가져온다.

atomic operation을 목표로하므로 하나하나의 기능은 단순하지만 조합하면 무엇이든 할 수 있다.

부분적으로 함수 언어의 형태를 가지므로 병렬화에 용이하다. 하둡과 맵 리듀스에 적용하기 쉽다.







Perceptron



perceptron이란 가장 간단한 형태의 Neural Network을 말한다.




위와 같은 형태를 가지며, Hidden layer가 존재 하지 않는다.

입력 노드들은 X1~Xn까지 존재하며 각각의 weighted link들과 product 되어 진다.

어떠한 Activation function을 작동 시키는 t가 존재하며, 이러한 t는 threshold의 약자이다.


이것을 정리하면 아래와 같은 수식을 얻을 수 있다.




위 식을 다시 정리 하기위해서, threshold를 표현하면 아래와 같다.


이것을 이용해서 다시 표현하면,



이제 우리는 학습을 통해서 linearly separable한 data에 대해서 구분을 해주는

hyperplane을 찾는 것을 수행 하는 것이 목적이다.






Perceptron Learning Algorithm (PLA) 을 나타내면 아래와 같다.




1) 초기의 weight vector를 결정해 준다. 이것을 통해서 초기의 hyperplane을 생성 한다.

2) 을 예측 한다.

3) 예측된 y값과 실제값을 비교 한다. 아래의 수식에 의해서 값이 다를 경우 weight 값이 보정되고 hyperplane이 이동하게 된다.

실제값은 결국 {1,-1} 사이의 값을 같는다고 하면,

1인데 -1이 나오면 2가 되고

-1인데 1이 나오면 -2 가 된다.

위와 같이 prediction이 정확하지 않는다고 하면, 아래의 방법대로 weight 값을 업데이트 하게 된다.


예측값이 음수인 경우, y=+1 ,y(hat) = -1 ( y-y(hat)) = +2

에러에 대한 보상을 위해서 예측되는 값을 증가 시켜줘야 한다. 

이것을 위해서 양수인 입력 값들에 대해서는 weight 값을 증가 시켜 준다.

음수인 입력 값에 대해서는 weight 값을 낮춰 준다.


예측값이 양수 인 경우, y=-1,y(hat) = + 1 ( y-y(hat)) = -2

에러에 대한 보상을 위해서 예측된 값을 낮춰 준다.

이것을 위해서 양수인 입력 값에 대해서는 weight 값을 낮춰 준다.

음수인 입력 값에 대해서는 weight 값을 증가 시킨다.




실전 문제 풀이

초기 직선의 방정식: w2x2 + w1x1 + w0x0 = 0이라는 직선의 방정식으로 구성된 hyperplane을 생각해 보면


직선의 방정식: 2x1 + x2 = 0  // x2 = -2x1

실제 데이터 vector는 아래와 같다고 가정한다.

j를 의미 한다. 

 i를 의미한다.

 x0

x1 

x2

 1

 1

1

-1 

-1 

 1

-1 

-1 

 1

-1 

-1 

-1 



위 알고리즘에 따라 순차적으로 실행해 보면,


1) y와 y^ 이 동일, weight 수정 없음

2) y = -1 , Y^ =1


위와 같이 weight 값이 조정되어서


수정된 직선의 방정식은 1x1 + 2x2  -1 = 0  




새롭게 수정된 Hyperplane에 의해서 나머지 데이터들은 모두 제대로 prediction 된다.



실제와는 다르지만 아래와 같은 느낌으로 계속 조금씩 이동하면서 Hype-plane을 찾아 간다고 생각하면 된다.







If not linearly separable ?






위와 같은 경우를 XOR 문제라고 하며 linearly separable한 Hyper-plane을 찾을 수 없는 경우이다.


이것을 해결하기 위해서 Hidden Layer라는 것을 위치 시키게 된다.


이제 XOR 문제를 풀어 보면 아래와 같다.



 

 x1

x2 

hyper-plane1 

hyper-plane2 

 -1

-1 

 1

 1

-1

-1 

 -1

-1 



hyper-plane 1: x1-x2+0.5 = 0

hyper-plane 2: x1-x2-0.5 = 0


마지막 activation function의 hyperplane = -[x1+x2+0.5] =0

앞에 -를 붙이는 이유는 (-1,1)이 -1 이게 떄문이다. Hyperplane이 반대로 작용하게 된다.










'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Support Vector Machine  (0) 2015.04.17




Theme 설정 방법


테마로 한번 설정해 놓으면 변경된 내용을 쉽게 유지 할 수 있다.


변경 할 수 있는 요소들:

axis.title.x // 축 이름을 의미함.

axis.text.x //축 눈끔을 의미함.

plot.title // 도표의 제목을 의미함.





Pie chart



How to show percentage in this chart?


use annotate()


usage:

annotate("text", x="?", y="?", label="name")



참고자료

ggpie: pie graphs in ggplot2

R: Pie chart with percentage as labels using ggplot2









'AI > R ggplot2' 카테고리의 다른 글

CDF stat_ecdf  (0) 2016.12.21
ggplot2: 그래픽 라이브러리  (0) 2016.03.20
R에서 EPS 이미지 생성  (0) 2015.06.16
R 그래프 페키지 종류  (0) 2014.11.05

R 기본


변수 조작


목록출력


ls() # 전체 리스트를 출력한다.

반환값은 벡터이다.


ls.str() # 각변수에 대해서 더 자세한 정보를 보여준다.

변수들을 열함과 동시에 그 구조까지 보여주게 된다.


삭제방법

작업 공간의 변수를 삭제하고 싶을때 사용한다. 한번 지우면 복구가 불가능하니 주의하자.


rm(x) #작업 공간에서 x라는 변수를 삭제 한다.


rm(list=ls()) # rm과 ls()를 조합해서 현재 작업 공간에 정의된 모든 변수를 지울 수도 있다.






R 함수 정의


#한줄짜리
fuction (매개변수, ... ,매개변수n) expr

#여러줄
fuction (매개변수, ... ,매개변수n){ 
expr
}


파일 입출력



read.csv("name")
header = FALSE

# 행에다가 이름을 쓸일은 거의 없기 때문에 FALSE로 설정 한다.
write.csv(x, file="파일명", row.names=FALSE)
#파일 리스트를 출력 하는 방법
list.files()
# 하위 디렉터리 목록을 출력한다.
list.files(recursive=T) 
#현재 디렉터리에서 파일을 읽어 들인다.
files <- list.files(pattern="*.csv")
#절대 경로를 이용해서 파일을 읽어 들인다.
files <- Sys.glob(paste(directory,"//*.csv",sep=""))



객체 저장


오랜 연산결과 끝에 얻어낸 결과라면 해당 결과를 담고 있는 객체를 저장할 필요가 있다.

R객체를 저장하는 것은 save() 이고 불러오는 것은 load()이다.


#메모리에 있는 개체를 파일에 저장한다.
save(x,y, file="xy.RData"
#모든 메모리에 존재하는 객체를 파일에 저장 한다
rm(list=ls()) # 메모리에 있는 개체를 모두 삭제
a <- 1:5
b <- 6:10
c <- 11:15
save(list=ls(), file=abc.RData")
load("abc.RData")






Working Directory 변경


getwd() 를이용해서 확인 할 수 있다.

setwd() 를 이용해서 설정 한다.




시스템 환경 변수 계산 하는 방법


환경 변수를 알아내거나 변경하는 방법을 말한다.


Sys.getenv("SHELL")
Sys.setenv(SHELL="/bin/ksh")


R의 홈 디렉터리를 찾아내는 방법

Sys.getenv("R_HOME")




'AI > R Basic' 카테고리의 다른 글

R의 문자열 처리 및 비교  (0) 2015.10.03
Plyr package (데이터 조작)  (0) 2015.10.01
Reshape2 pacakge (데이터 조작)  (0) 2015.10.01
R 자주 사용하는 팁 및 한글 주석 깨짐 해결  (2) 2015.07.30
R의 철학  (0) 2015.04.17

이상치 제거 (Box-plot 해석을 통한)


Box-Plot을 이용해서 이상치를 제거한다.

여러 방법이 있지만, 사분위수를 이용해서 제거하는 방법을 사용한다.


우선 Box-Plot은 4가지 구성요소가 있다.

1) 중앙값(median): 말그대로 중앙값 50%의 위치이다.

    중앙 값은 짝수일 경우 2개가 될 수도 있고, 그것의 평균이 중앙값이 될 수도 있다.

    홀수일 경우, 중앙값은 1개가 된다.

2) 박스(Box): 25%(Q1) ~75%(Q3) 까지 값들을 박스로 둘러 쌓는다.

3) 수염 (whiskers): 박스의 각 모서리 (Q1, Q3)로 부터 IQR의 1.5배 내에 있는 가장 멀리 떨어진 데이터 점까지 이어져 있는 것이 수염이다.

4) 이상치(Outlier): 수염(whiskers)보다 바깥쪽에 데이터가 존재한다면, 이것은 이상치로 분류 된다.


Inter Quartile range (IQR) 이란?

Q3 - Q1의 값이다.


이상치를 구하기 위해서는 결국 수염을 이용하게 되는데, 이때 보통 1.5를 IQR에 곱한것으로 구한 수염을 이용한다.



참고사이트: http://www.itl.nist.gov/div898/handbook/prc/section1/prc16.htm


'AI > Probability & Statistics (R)' 카테고리의 다른 글

비교 분석  (0) 2016.08.03
가설 검증과 추정  (0) 2016.08.03
통계학: F-검정  (0) 2013.08.29
회귀 분석 (1)  (0) 2013.08.29
조건부 확률, Conditional Probability / joint probability  (2) 2013.05.17

Base

  1. “Artist’s palette” model
  2. Start with blank canvas and build up from there
  3. Start with plot function (or similar)
  4. Use annotation functions to add/modify (text, lines, points, axis)

Pros:

Convenient, mirrors how we think of building plots and analyzing data

Cons:

  1. Can’t go back once plot has started (i.e. to adjust margins);
  2. need to plan in advance
  3. Difficult to “translate” to others once a new plot has been created (no graphical “language”). Plot is just a series of R commands

Lattice

Plots are created with a single function call (xyplot, bwplot, etc.)

Pros:

  1. Most useful for conditioning types of plots: Looking at how y changes with x across levels of z
  2. Thinks like margins/spacing set automatically because entire plot is specified at once
  3. Good for putting many many plots on a screen

Cons:

  1. Sometimes awkward to specify an entire plot in a single function call
  2. Annotation in plot is not intuitive
  3. Use of panel functions and subscripts difficult ot wield and requires intense preparation
  4. Cannot “add” to the plot once it’s created

ggplot2

Pros:

  1. Split the difference between base and lattice
  2. Automatically deals with spacings, text, titles but also allows you to annotate by “adding”
  3. Superficial similarity to lattice but generally easier/more intuitive to use
  4. Default mode makes many choices for you (but you can customize!)



ggplot2 vs lattice.pdf


ggplot2_part1.pptx




'AI > R ggplot2' 카테고리의 다른 글

CDF stat_ecdf  (0) 2016.12.21
ggplot2: 그래픽 라이브러리  (0) 2016.03.20
R에서 EPS 이미지 생성  (0) 2015.06.16
ggplot2 package를 이용한 Graph 그리기  (0) 2015.02.16


F-검정에 대해서 공부해보자. 
몇 결정트리 알고리즘에서 t-검정, F검정을 사용하기 때문에 
해당 결정트리 알고리즘을 잘 이해하기 위해서는 이러한 통계 검정 방법들을 잘 이해해두어야 한다. 


F-검정은 언제 사용할까?
F-검정은 두 모집단의 분산의 차이가 있는가를 검정할 때 사용한다. 
(두 집단의 평균의 차이가 존재하는가가 아니라 분산의 차이가 있는가를 검정한다.) 


F-검정은 언제 사용할까?
F-검정은 두 모집단의 분산의 차이가 있는가를 검정할 때 사용한다. 
(두 집단의 평균의 차이가 존재하는가가 아니라 분산의 차이가 있는가를 검정한다.) 


예1. (제4판. 현대통계학. p.349-350) 
예를들어, 어느 중학교에서 1학년 학생들의 성적의 차이(분산)이 2학년이 되면 더 커질 것이라고 예상된다. 실제로 그런가 검정해보자. 1학년에서 7명을 뽑고, 2학년에서 9명을 뽑아서 각각의 성적의 분산을 조사해 봤더니, 1학년의 분산은 9.0 이었고, 2학년의 분산은 19.8 이었다. 두 모집단의 분산은 같다고 볼 수 있을까? 알파=0.05 에서 검정해보자. 
F(8,6) = 4.15 이다. (자유도는 개체 크기에서 1씨 뺀 값으며 2개가 사용된다. F분포표에서 찾아보자.) 
F = 19.8 / 9 = 2.2 이다. 2.2 < 4.15 이므로 F=2.2는 기각역 안에 있으며, 귀무가설을 기각할 수 없다. 
즉, 2학년학생의 성적 차이가 1학년 학생의 성적차이보다 크다고 할 수 없다. 


F-분포표 

F검정에 필요한 F분포표를 첨부하였다. 

F검정표는 두 개의 자유도 값을 사용한다. (행, 열에 두 표본의 자유도가 사용된다.)  




'AI > Probability & Statistics (R)' 카테고리의 다른 글

비교 분석  (0) 2016.08.03
가설 검증과 추정  (0) 2016.08.03
이상치 제거 (Box-plot 해석을 통한)  (0) 2015.01.03
회귀 분석 (1)  (0) 2013.08.29
조건부 확률, Conditional Probability / joint probability  (2) 2013.05.17


1. 단순 회귀 분석: 종속 변수 = 독립변수.


단순 회귀 모형은 최소 제곱법에 의해서 추정을 하게 된다. 


최소 제곱법


이때, L 값이 가장 작을 때의, 베타1과 베타0의 값으로 모형을 만들게 된다.



단순 회귀 분석에 의한 모형,



잔차의 정의: 잔차 = 측정치 - 예측치




2. 모형의 적합도 분석 


모형의 적합도는 분산분석의 F 검정을 실시하거나,

결정계수 r^2를 가지고 회귀 방정식의 유효성을 검증하게 된다.



사전 지식


SST (총변동) = SSE (잔차변동) + SSR (회귀변동)


따라서, SSE(잔차변동)이 0으로 가면 아주 좋은 것이다.

그렇게 될경우 SST(총 변동) = SSR(회귀변동)과 일치한다.

이 의미는, SSR(회귀변동)은 회귀 방정식에 의한 값이고 이게 SST(총 변동)과 일치한다는 것은 회귀 방정식이 완벽히 측정값과 일치한다는 의미를 가진다.


이러한 특성을 토대로 우리는 결정계수 R^2을 계산해 낸다.

결정계수: 


- 모형의 설명력

- 즉, 독립수들이 Y값을 얼마나 잘 설명해 주는가를 나타내는 척도

- 결정계수 값이 1에 가까울수록 설명력이 좋음 0에 가까울수록 설명이 떨어지는 것 

- 결정계수에 대한 검정방법은 없으므로, 회귀모형의 적합성에 대해 설명하는 것은 위험 하다.

단지 독립변수들의 설명력으로만 해석이 가능하다.

모델의 적합성은 F검정으로 해야 한다.



▣ 분산분석표에 의한 F-검정의 정의는 아래의 스크린샷과 같다.






보통, 통계페키지(SPSS)에 의해서 유의확률 p 값이 0.5 보다 작을 경우, 귀무 가설을 기각한다.

따라서 해당 회귀 방정식은 유효하다고 검정 한다.



▣ 베타계수

  • 독립변수들이 종속변수에 주는 영향력을 비교하기 위해 회귀계수를 직접 비교하는 것은 위험 (회귀계수의 크기가 독립변수들의 측정단위에 크게 영향을 미치기 때문) 
  • 측정단위에 관계없는 회귀계수 필요
  • 표준화 변환 후 회귀 모형 추정시 이때의 회귀계수를 표준화 계수 혹은 베타계수 
  • 독립 변수들간에 관련성이 낮을경우 상대적인 중요도 
▣ 회귀계수
  • 공선성 통계량

독립변수들 간에 상관관계가 높으면 하나의 변수가 투입이 되며 나머지 변수들이 갖는 고유한 설명력은 매우 작아짐

VIF = 1/공차한계

공차한계<0.1 이거나 VIF>10 이면 공선성이 존재

  • 다중 공선성

설명변수 사이에 정확한 선형관계는 아니나 상관관계가 매우 높은 경우

상관관계가 클수록 회귀분산이 커지고, 분산이 커지면 회귀계수 추정량에 대한 t-통계량값이 작아져서 유의성이 낮게 나타남

해결책

설명변수의 제외

모형의 재설정

사전정보이용

표본자료의 추가 



▣ T,F,P 값의 의미


T-test = T, P

ANOVA = T, P

회귀분석 = F, T, P

교차분석 = X^2, P


위 그림을 보면, x축에 T,F 값이 존재한다. 그리고 그 값에 대한 오른쪽 면적이 P 값이 된다.



이렇게 나온 P값을 기준치인 0.05랑 항상 비교해서 해당 통계치가 유의한지 유의하지 않은지를 판단하게 된다.





3. 중회귀모형 또는 다중 회귀 모형




결정계수는 독립변수가 늘어나면, 무조건 증가 하게된다.

따라서 어떠한 독립변수가 중요한 역할을 하는지를 알기위해서 다른 참조 값을 필요로 한다. 이 때 이용하는 값이 수정된 결정계수이다.


▣ 수정된 결정계수

결정계수를 자유도로 수정시킨 계수

설명력이 거의없는 독립변수가 추가되면 감소 따라서 변수선택의 기준으로 이용



▣ 부분상관계수 (part correlation coeff.)

기존의 회귀모형에 어떤 독립변수를 추가할 것인가를 결정하고자 할 때 이용.


편 상관계수 ( partial correlation coeef.)

용도는 부분 상관계수와 비슷한 용도를 가진다.




▣ 변수 선택 방법

의의: 모형은 최대한 간소화 되어져야 한다. 따라서 설득력있는 독립변수들로만 모형을 구성하는 것은 중요하다.


(1) 모든 가능한 회귀: all possible regressions

-> 독립변수 K에 대한 모든 변수들에 대한 모든 모형들을 만들어보는것이다.

ex k=5, 일 경우에는 2^5 개의 모형이 생겨나게 된다. 이렇게 많은 모형들중 가장 적합한 회귀를 하게 된다.

단점은, 계산량이 엄청나게 많다. 실무에서는 거의 쓸수 없다.

SPSS의 경우는 제공하지 않는 기능이다.


(2) 전진

-> 등록된 변수를 통계적 기준에 따라 가장 중요한 변수부터 선택하여 더 이상 중요한 변수가 없다고 판단될 때 중단 (변수를 하나씩 추가해 가는 방법)

-> 일단 선택된 변수는 다른 변수에 의해 중요성이 상실되더라도 희귀모형에서 빠져 나올 수 없음


(3) 제거

-> 모형 설정 후 사용 가능

-> 모형에서 변수 제거


(4) 후진

-> 등록된 모든 독립변수를 포함하여 통계적 기준에 따라 중요도가 낮은 변수부터 한 변수씩 제거해나가는 방법 더 이상 제거시킬 필요가 없을 때 중단

-> 남아있는 변수들을 중요한 변수로 선택


(5)입력

-> 독립변수들의 강제 투입, 지정해준 변수 그대로 다 넣은 상태에서 모형 만듬


(6) 단계별 회귀: stepwise regression

-> 실무에서 적용하는 것이다.

일단, 가장 유효성이 높은 독립변수를 추가하고,

그다음 남은 독립 변수들중에서 또 하나를 추가한다.

그다음 유효성을 검사해서, 새로운 변수를 추가 했을때, 이전의 독립변수가 유효하지 않게 된다면, 그 독립변수를 제거하게 된다.


앞으로 부터의 선택과의 차이점은, 단계별 회귀방법은 일단 모델에 반영된 독립변수일 지라도, 유효성이 없어진다면, 제거가 가능하다는 점이다.




4. 회귀 모형의 진단







(a) 분산이 일정함을 나타냄

(b) 분산이 점점 커지므로, 동일 분산의 가정이 틀림

(c) 베타0와 같은 y 절편의 값의 증가를 필요로 함을 나타냄

(d) 선형 모델이 아닌 곡선 모형이 적합하는 것을 나타냄








'AI > Probability & Statistics (R)' 카테고리의 다른 글

비교 분석  (0) 2016.08.03
가설 검증과 추정  (0) 2016.08.03
이상치 제거 (Box-plot 해석을 통한)  (0) 2015.01.03
통계학: F-검정  (0) 2013.08.29
조건부 확률, Conditional Probability / joint probability  (2) 2013.05.17


Conditional Probability



사건 B가 발생했다는 가정하에 사건 A가 일어날 확률을 의미한다.

Joint Probability와 헷갈리면 안되는 것이 이건 어쨋거나 1번 시행에대한 확률이다.

전체 경우의 수가 있을 때 그중 특정 조건일 때의 확률만 뽑아 내고 싶을때 사용 할 수 있다.





예제: 두 개의 주사위가 있다. 주사위가 둘 다 같은 숫자가 나올 경우 그 때 숫자가 둘 다 1일 확률은??



두 개의 주사위가 모두 1이 나올 확률은 A

두 개의 주사위가 같은 숫자가 나올 확률은 B


P(A) = 1/36, P(B) = 1/6



P(A 교집합 B) = P(A)

왜냐하면, 두개의 주사위가 모두 1이 나오는 경우는 두개의 주사위가 같은 숫자가 나오는것의 특수한 경우이기 때문이다.




만약 조건부 확률에서도 두 사건이 상호 독립적이라면 아래와 같이 된다.


 



Joint probability


두개의 서로다른 사건이 동시에 일어나는 확률을 말한다.

동전으로 치면 동전 2개를 동시에 던지는 것이다.

{0,0}, {0,1}, {1,0}, {1,1} 의 경우가 나오므로

모든 joint probability는 1/4가 된다.

동전의 경우 각각의 사상이 독립적이므로 이러한 간단한 수식이 가능하다.


notaion은 다음 두가지 이다.



계산은 독립적인 X의 사상과 Y의 사상이 독립적인 경우에는 (ex: 2개의 동전을 던지는 경우)



로 계산한다.


독립적이지 않을 때의 계산 식은 아래와 같다.



n개에 대해서는







조건부와 결합확률의 차이를 생각해 보기


상자 A에서 하얀 공이 선택될 확률 (조건부 확률)

P(하얀공|A) // A상자를 뽑는 가정하에 흰 공을 뽑는 경우로 조건 부 확률이다.



상자는 A이고 뽑은 공은 하얀 공일 확률 (결합 확률, 두 서로다른 사건이 동시에 일어남)

P(A, 흰공) = P(흰공|A) * P(A) // 핵심은 사건이 2개이다. 그리고 2사건이 곱으로 연결 된다.





 









'AI > Probability & Statistics (R)' 카테고리의 다른 글

비교 분석  (0) 2016.08.03
가설 검증과 추정  (0) 2016.08.03
이상치 제거 (Box-plot 해석을 통한)  (0) 2015.01.03
통계학: F-검정  (0) 2013.08.29
회귀 분석 (1)  (0) 2013.08.29

+ Recent posts