라벨이 머신러닝인 게시물 표시

(머신러닝) 4장. 나이브베이스: 확률 이론으로 분류하기

이미지
*나이브 베이스 장점: 소량의 데이터를 가지고 작업이 이루어지며, 여러 개의 분류 항목을 다룰 수 있다. 단점: 입력 데이터를 어떻게 준비하느냐에 따라 민감하게 작용한다. 적용: 명목형 값 1. 조건부확률 7개의 돌이 담긴 병이있다. 병 속의 돌중 3개는 회색 4개는 검은색이다. 이 병에 손을 넣고 임의로 돌 하나를 뽑는다면, 뽑은 돌이 회색일 가능성은 3/7이다. 만약에 7개의 돌이 두 개의 양동이(bucket)에 있다면 어떻게 될까? 만약 P(회색) 나 P(검은색)을 계산하고자 한다면 양동이에  따라 답이 변하지 않겠는가? 만약 양동이 B에 회색 돌의 확률을 계산하고자 한다면, 아마도 회색 돌의 확률을 계산하는 방법을 알 수 있을 것이다. 이것을 조건부확률 이라고한다. P(회색|bucketB)='양동이 B에 주어진 회색 돌의 확률' 이것은  1/3으로써, P(회색|Bucket B)=P(회색 and Bucket B)/P(Bucket B)이다.==>(1/7)/(3/7) 조건부 확률을 다루기 위한 다른 유용한 방법으로 베이스 규칙이 있다. 만약에 P(x|c)를 알고 있는 상태에서 P(c|x)를 알기를 원한다면 다음과 같이 찾을 수 있다. P(c|x)=(P(x|c)*P(c))/(P(x)) <나이브 베이스에 대한 일반적인 접근 방법> 1. 수집 2. 준비: 명목형 또는 부울형(Boolean)값이 요구된다. 3. 분석: 많은 속성들을 플롯 하는 것은 도움되지 못한다. 히스토그램으로 보는 것이 가장좋다. 4. 훈련: 각 속성을 독립적으로 조건부 확률을 계산한다. 5. 검사: 오류율을 계산한다. *속성들이 서로 독립적이라고 가정하면, N^1000개의 데이터는 1000*N개로 줄어들게 된다. 독립이라는 것은 통계적인 독립을 의미한다. 즉, 하나의 속성 또는 단어가 다른 단어 옆에도 있는 가능성이 있다는 것이다. '베이컨'이 '맛있는' 이라는 단...

(머신러닝) 3장: 의사결정트리 (예제: 콘택트렌즈 유형 예측하기)

이 데이터는 환자의 눈 상태와 의사가 처방한 콘택트 렌즈의 유형을 기반으로 관찰된 수치가 있다. 분류 항목은 하드(hard), 소프트(soft), 콘택트렌즈 없음으로 구분된다.

(머신러닝) 3장 의사결정 트리: 한 번에 하나의 속성으로 데이터 분할하기

1. 트리 구조 장점: 계산 비용이 적다. 학습된 결과를 사람됙이 이해하기 쉬우며 누락된 값(missing value) 이 있어도 처리할 수 있다. 분류와 관련이 없는 속성이 있어도 처리할 수 있다. 단점: 과적합(Overfitting)되기 쉽다. 적용: 수치형값, 명목형 값 1. 정보이득 데이터를 분할하기 전과 후의 변화를 정보 이득이라고 한다. 어떤 속성으로 데이터를 분할할 때 가장 높은 정보 이득을 취할 수 있는지를 모든 속성에 대해 확인하면서 분할할 수 있게 된다. 정보 이득이 가장 높은 속성을 가지고 분할하는 것이 가장 좋은 선택이다. 분할하기에 가장 놓은 속성을 측정하고 데이터를 분할하기 전에 정보이득을 계산하는 방법을 알아야 한다. 데이터 집합에 대한 정보 측정 방법을 엔트로피 라고 한다. 엔트로피는 정보에 대한 기대 값으로 정의 된다. 우리는 정보라는 것부터 알아야 한다. 만약에 다양한 값을 가질 수 있는 어떤 데이터를 분류하고자 한다면, 정볼르 xi로 표시하고 다음과 같이 정의할 수 있다. l(xi)=log2p(xi) 여기서 p(xi)는 xi라는 분류 항목이 선택될 확률이다. 엔트로피를 계산하기 위해서는 분류 항목의 가능한 모든 값에 대해 모든 정보의 기대 값이 필요하다. 이것은 다음식에서 얻을 수 있다. H=- ∑p(xi)log2p(xi) 위 식의 n은 분류 항목의 개수이다. <데이터 집합의 새넌 엔트로피를 계산하는 함수> def calcShannonEnt(dataset):      numEntires=len(dataset)      labelCounts={}      for featVec in dataSet:          currentLabel=featVec[-1]          if curren...

(머신러닝) 2장 K-최근접 이웃 알고리즘

이미지
*영화를 장르별로 분류해 본적이 있는가? 로맨스영화에는 키스 장면이 더 많이 나오며, 액션 영화에는 발차기 장면이 더 많이 나온다. 영화마다 무언가를 판단 기준으로 삼는다면, 어떤 영화가 무슨 장르에 속하는 지 자동적으로 알아낼 수 있을 것이다. 1. 거리 측정을 이용하여 분류하기 <k-최근접 알고리즘(kNN)> 장점: 높은 정확도, 오류 데이터(outlier)둔감, 데이터에 대한 가정이 없음 단점: 계산 비용이 높음, 많은 메모리 요구 적용: 수치형 값, 명목형 값 기존에 훈련 집합이었던 예제 데이터 집합이 존재하며, 모든 데이터는 분류항목 표시가 붙어있다. 따라서 각각의 데이터가 어떤 분류 항목으로 구분되는 알 수 있다. 이후 분류항목표시가 붙어 있지 않은 새로운 데이터가 주어졌을 때, 기존의 모든 데이터와 새로운 데이터를 비교한다. 그리고 가장 유사한 데이터( 가장 근접한 이웃) 의 분류항목 표시를 살펴본다. 이때, 분류 항목을 이미 알고 있는 데이터 집합에서 상위 k개의 가장 유사한 데이터를 살펴보게 된다.(여기서 k는 일반적으로 20미만의 정수)마지막으로, k개의 가장 유사한 데이터들중 다수결을 통해 새로운 데이터의 분류 항목을 결정하게 된다. 물음표에 해당하는 유형이 무엇인지는 알 수 없지만, 우선, 다른 모든 영화와의 거리를 계산 하는 것이다. 거리를 내림차순으로 정렬하여 가장 가까운 k개의 영화를 찾아야 한다. k=3이라고 하자. 그러면 세 개의 가장 가까운 영화는 캘리포니아맨, 바보, 아름다운 여자 kNN알고리즘은 물음표에 해당하는 영화의 분류 항목을 결정하기 위하여 이 세개의 영화에서 다수결로 뽑힌것을 선정한다. 즉, 세 영화 모두 로맨스이므로 의문의 영화는 로맨스장르더, 2. kNN분류 알고리즘 실행하기 이 함수의 목적은 inX라고 불리는 하나의 데이터를 분류하기 위해 kNN알고리즘을 사용하는 것이다. def classify0(inX, dataSet, labe...