CS220 Programming Principles 프로그래밍의 이해 2003 가을학기 Class 2 한 태숙.
2014 년 가을학기 손시운 ( [email protected] ) 지도 교수 : 문양세 교수님
-
Upload
robert-butler -
Category
Documents
-
view
73 -
download
0
description
Transcript of 2014 년 가을학기 손시운 ( [email protected] ) 지도 교수 : 문양세 교수님
2
분류
분류 (Classification) ( 참조 : 이론 강의 ‘데이터 마이닝 개념’ )
– 모델 구성 : 주어진 훈련 집합의 레코드들을 사용하여 , 속성 값들을 입력으로 클래스를 출력으로 하는 함수 ( 모델 ) 를 찾는 작업이다 .
– 모델 검증 : 테스트 집합의 레코드들을 앞서 구성한 분류 모델에 적용하여 모델의 정확성을 판별한다 . 일정 수준의 정확성이 확보되면 모델로서 의미를 가짐
– 모델을 사용한 예측 : 아직 분류되지 않은 ( 즉 , 클래스가 부여되지 않은 ) 레코드를 분류 모델에 적용하여 클래스를 부여함
3
Decision Trees
4
Example 1: Iris
Datasets: 150 개의 Iris 꽃 데이터– Sepal.Length: 꽃 받침 길이
– Sepal.Width: 꽃 받침 너비
– Petal.Length: 꽃잎 길이
– Petal.Width: 꽃잎 너비
– Species: 화종
• setosa
• versicolor
• virginica
#Sepa-
l.LengthSepa-
l.WidthPetal.Leng
thPetal.Wid
thSpecie
s1 5.1 3.5 1.4 0.2setosa
2 4.9 3 1.4 0.2setosa
3 4.7 3.2 1.3 0.2setosa
4 4.6 3.1 1.5 0.2setosa
5 5 3.6 1.4 0.2setosa
6 5.4 3.9 1.7 0.4setosa
7 4.6 3.4 1.4 0.3setosa
8 5 3.4 1.5 0.2setosa
9 4.4 2.9 1.4 0.2setosa
10 4.9 3.1 1.5 0.1setosa
11 5.4 3.7 1.5 0.2setosa
12 4.8 3.4 1.6 0.2setosa
13 4.8 3 1.4 0.1setosa
14 4.3 3 1.1 0.1setosa
15 5.8 4 1.2 0.2setosa
새로운 Iris 데이터의 종을 파악할 수 있을까 ?
5
Ex.1: 필수 패키지 설치
Decision Tree 를 생성하기 위해 필요한 패키지 설치– http://cran.r-project.org/web/packages/party/index.html
– http://cran.r-project.org/web/packages/zoo/index.html
– http://cran.r-project.org/web/packages/sandwich/index.html
– http://cran.r-project.org/web/packages/strucchange/index.html
– http://cran.r-project.org/web/packages/modeltools/index.html
– http://cran.r-project.org/web/packages/coin/index.html
– http://cran.r-project.org/web/packages/mvtnorm/index.html
다운로드 받은 패키지를 R 에서 로딩
6
Ex.1: 데이터 확인
R 에 내장되어있는 iris 데이터 사용
7
Ex.1: 데이터 분류
훈련 집합과 테스트 집합 분류
– sample() 함수를 통해 70% 의 훈련 집합과 30% 의 테스트 집합으로 분류
• replace=TRUE: 중복을 허용하여 난수 생성
• prob=c(0.7, 0.3): 난수를 생성할 때 가중치를 부여
8
Ex.1: Decision Tree 생성
ctree() 함수 : Decision Tree 를 생성하는 함수
9
Ex.1: Decision Tree 생성
Decision Tree 플로팅
10
Ex.1: Decision Tree 생성
Decision Tree 플로팅
11
Ex.1: Decision Tree 생성
테스트 집합의 분류– predict() 함수 : 미리 정의된 예측 모델을 사용하여 데이터를 분류하는 함수
예측 결과와 실제 데이터의 정확도 확인
12
The k-Nearest Neighbor Algorithm
knn 알고리즘 ( 출처 : 자바캔)
– 데이터를 분류하는데 유용하게 사용하는 알고리즘
– 주어진 훈련 집합의 레코드와 비교하여 가장 밀접한 k 개의 레코드를 기반으로 새로운 데이터를 분류하는 알고리즘
• 밀접한 정도는 Euclidean distance 를 사용하여 계산
– k=4 일 경우 로맨스가 3 개 , 액션이 1 개에서 나타나므로 ? 는 로맨스로 분류
제목 발차기 키스 유형 ? 와의 거리
A 3 104 로맨스 20.5
B 2 100 로맨스 18.7
C 1 81 로맨스 19.2
D 101 10 액션 115.3
E 99 5 액션 117.4
F 98 2 액션 118.9
? 18 90 ( 예측 대상 )
13
Example 2: Forensic Glass
Datasets: 6 종류의 유리조각 214 개 데이터– WinF: float glass window
– WinNF: non-float glass window
– Veh: vehicle window
– Con: container (bottles)
– Tabl: Tableware
– Head: vehicle headlamp
각 데이터는 다음의 속성을 가짐– RI: 굴절률 (refractive index)
– Percentages of Na, Mg, Al, Si, K, Ca, Ba, and Fe
– type: 유리의 종류
새로운 유리조각의 종류를 파악할 수 있을까 ?
# RI Na Mg Al Si K Ca Ba Fe type
1 3.01 13.64 4.49 1.1 71.78 0.06 8.75 0 0WinF
2 -0.39 13.89 3.6 1.36 72.73 0.48 7.83 0 0WinF
3 -1.82 13.53 3.55 1.54 72.99 0.39 7.78 0 0WinF
4 -0.34 13.21 3.69 1.29 72.61 0.57 8.22 0 0WinF
5 -0.58 13.27 3.62 1.24 73.08 0.55 8.07 0 0WinF
6 -2.04 12.79 3.61 1.62 72.97 0.64 8.07 0 0.26WinF
7 -0.57 13.3 3.6 1.14 73.09 0.58 8.17 0 0WinF
8 -0.44 13.15 3.61 1.05 73.24 0.57 8.24 0 0WinF
9 1.18 14.04 3.58 1.37 72.08 0.56 8.3 0 0WinF
14
Ex.2: 필수 패키지 설치
데이터 셋을 수집하기 위해 , 관련 패키지 다운로드– http://cran.r-project.org/web/packages/textir/index.html
– http://cran.r-project.org/web/packages/distrom/index.html
– http://cran.r-project.org/web/packages/gamlr/index.html
– 압축 해제 후 , 설치 경로의 library 폴더로 이동
다운로드 받은 패키지를 R 에서 로딩
15
Ex. 2: 데이터 확인
str() 함수 : 데이터 프레임의 구조를 확인하는 함수
– 10 개의 속성 (RI, Percentages of elements, type)
– 214 개 데이터
16
Ex. 2: Box plots (1/2)
다른 속성과 type 간의 관계를 box plot 으로 표현– par() 함수 : 그래프의 공간을 배열 형태로 미리 할당
› par(mfrow=c(3,3), mai=c(.3,.6,.1,.1))
› plot(RI ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Al ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Na ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Mg ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Ba ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Si ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(K ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Ca ~ type, data=fgl, col=c(grey(.2),2:6))
› plot(Fe ~ type, data=fgl, col=c(grey(.2),2:6))
17
Ex. 2: Box plots (2/2)
18
Ex. 2: RIxAl 기반 분류
훈련 집합 (200 개 ) 과 테스트 집합 (14 개 ) 구분
– nt 변수 : 트레이닝 데이터의 수
– sample(x, size, …) 함수 : x 벡터에서 nt 개의 난수 데이터 추출
19
Ex. 2: RIxAl 기반 분류
kNN 알고리즘 수행 및 결과
훈련 집합 테스트 집합 분류 대상
20
Ex. 2: RIxAl 기반 분류
kNN 알고리즘 결과를 plot
– plot() 함수로 훈련 집합을 표현
• 결과는 open symbol
– points() 함수로 테스트 집합을 표현
• 결과는 solid symbol
21
Ex. 2: RIxAl 기반 분류
kNN 알고리즘 결과의 성능 평가
– kNN 의 결과와 실제 type 이 같은 경우의 확률을 계산
– 1NN 은 78.6 이며 , 5NN 은 71.4 의 결과가 나타남
• 항상 같은 결과가 나타나지는 않음
22
과제 #4
유리 데이터 셋에 포함된 다른 속성들을 모두 사용하여 분류– 앞의 예제는 RI 와 Al 만을 사용하여 분류함
– 과제는 RI 및 Percentages of Na, Mg, Al, Si, K, Ca, Ba, and Fe 를 사용하여 분류
– 214 개의 데이터에서 임의로 훈련 집합과 테스트 집합을 설정
– 분류한 결과 ( 데이터 프레임 ) 와 성능 평가까지 진행
제출 방법– 과제는 [email protected]로 제출
– 제목 양식 : [ 학번 ][ 이름 ]HW#4
– 과제에서 설정한 훈련 및 테스트 집합과 분류한 결과 및 성능 평과 결과를 캡쳐
– 제출 기한은 다음 실습 수업시간 전까지이며 , 그 후에 제출할 경우 20% 감점