2014년 가을학기 손시운 (ssw5175@kangwon.ac.kr) 지도 교수: 문양세 교수님 연관 규칙 2014년 가을학기 손시운 (ssw5175@kangwon.ac.kr) 지도 교수: 문양세 교수님
Basic of Association Rules 다른 데이터로부터 어떤 데이터의 발생을 예측하는 규칙 데이터 간의 연관성 및 상관 관계를 표현하는 규칙 𝐴⇒𝐵 (A와 B는 각각 데이터의 부분 집합) A를 lhs (left-hand side), B를 rhs (right-hand side)라 지칭 응용 사례 Market Basket Analysis Medical Diagnosis Protein Sequences Census Data
Basic of Association Rules 가장 빈번히 사용되는 measures: support, confidence, and lift Support: A와 B를 모두 포함하는 경우의 확률 support 𝐴⇒𝐵 =𝑃(𝐴∩𝐵) 클수록 관련도가 높음 e.g. 전체 쇼핑 상품 중, Diaper와 Beer를 함께 선택한 비율 Confidence: A를 포함하는 경우 중, B 또한 포함할 경우의 확률 confidence 𝐴⇒𝐵 =𝑃 𝐵 𝐴 = 𝑃(𝐴∩𝐵) 𝑃(𝐴) 결과 값이 A의 규모에 의존하므로 전체적인 분석은 어려움 e.g. Diaper를 선택한 경우 중, Beer를 함께 선택한 비율
Basic of Association Rules Lift: B에 대한 확률과 confidence의 비율 lift 𝐴⇒𝐵 = confidence(𝐴⇒𝐵) 𝑃(𝐵) = 𝑃(𝐴|𝐵) 𝑃(𝐵) = 𝑃(𝐴∩𝐵) 𝑃 𝐴 𝑃(𝐵) lift 𝐴⇒𝐵 >1: 클수록 관련도가 높음 lift 𝐴⇒𝐵 =1: 관련이 없음 0<lift 𝐴⇒𝐵 <1: A를 선택하면, 보통 B를 선택하지 않음 e.g. Diaper와 Beer의 confidence 값과 Beer를 선택한 확률의 비율 support 𝐷𝑖𝑎𝑝𝑒𝑟⇒𝐵𝑒𝑒𝑟 = 3 5 confidence 𝐷𝑖𝑎𝑝𝑒𝑟⇒𝐵𝑒𝑒𝑟 = 3 4 lift 𝐷𝑖𝑎𝑝𝑒𝑟⇒𝐵𝑒𝑒𝑟 = 5 4
연관 규칙 마이닝 패키지 설치 주어진 트랜잭션 집합으로부터, 연관 규칙을 찾는 작업 APRIORI 알고리즘 빈번한 데이터를 찾아 연관 규칙을 얻는 가장 기본적인 ARM 기법 http://cran.r-project.org/web/packages/arules/index.html에서 다운로드 압축 해제 후, arules 폴더를 R 설치 경로의 library 폴더로 이동 설치 시에 경로 변경이 없었다면 “C:\Program Files\R\R-3.1.1\library”
Association Rule Mining arules 패키지를 R에서 로딩
Example 1: Grocery Data에 대한 연관규칙 Datasets: 10 종류의 식료품 데이터 shopping bags, milk, vegetables, bread, soda, yogurt, water, tropical fruit, sausage, pastry 100개의 구매 결과 트랜잭션으로 구성 # Item 1 Item 2 Item 3 Item 4 Item 5 Item 6 Item 7 Item 8 Item 9 Item 10 1 yogurt water pastry shopping bags tropical fruit soda sausage 2 bread vegetables milk 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Ex 1. 데이터 로딩 read.transactions() 함수 arules 패키지 내에서 데이터는 트랜잭션으로 처리 파일로부터 트랜잭션 형태로 로딩하는 함수 inspect() 함수: 트랜잭션 데이터의 내용을 출력하는 함수
Ex 1. 연관 규칙 마이닝 적용 apriori() 함수: apriori 알고리즘이 구현되어있는 함수 함수 처리 과정 발견된 규칙의 개수
Ex 1. apriori() 함수 결과
Ex 1. Parameter 설정 발견된 규칙 중, 불필요한 결과가 포함됨 lhs 값이 비어있는 규칙이 존재 minlen = 2로 설정 너무 많은 규칙이 발견 supp = 0.3, conf = 0.9로 설정 함수 처리 과정 제거 verbose=F로 설정
Ex 1. 마이닝 결과 정렬 함수의 결과가 정렬되지 않아 가치있는 데이터의 식별이 어려움 quality() 함수: apriori() 함수의 결과에서 measure를 추출한 함수 round() 함수: 실수 데이터를 digits 인자 크기의 자리에서 반올림하는 함수 sort() 함수: 데이터를 by 인자 기준으로 정렬하는 함수
Ex 1. 정렬된 결과
Ex 1. 결과에 대한 분석 supp = 0.3, conf = 0.9일 때, 47개의 규칙이 발견 하지만 모든 규칙의 rhs는 shopping bags로 나타남 이는 shopping bags가 모든(대부분) 트랜잭션에서 나타나기 때문 confidence의 단점 이론 강의자료 p.38 참고 따라서 lift를 중심으로 마이닝 parameter를 supp = 0.2, conf = 0.8로 설정
Ex 1. 피드백 결과
Ex 1. 특정 데이터를 제외한 연관 규칙 마이닝 Shopping bags는 다른 데이터와 독립적이므로 연관 규칙에서 제외 none=“shopping bags”로 설정
Ex 1. 특정 데이터를 제외한 연관 규칙 마이닝
Ex 2. Titanic Data 연관 규칙 The Titanic Dataset 4차원 테이블로 구성: social class, sex, age, and survival 각 row는 한 사람을 의미 연관 규칙 마이닝을 위해, Raw 데이터를 재구조화 http://www.rdatamining.com/data에서 데이터셋 다운로드
Ex 2. Dataset 데이터셋 파일 경로 확인 R에서 데이터 셋 불러오기 파일 > 속성 다음 파일의 경로는 “C:\Users\Son\Desktop\titanic.raw.rdata” R에서 데이터 셋 불러오기 경로를 문자열로 취급하므로 Backslash(\) 기호를 두 개씩 사용
Ex 2. Dataset Titanic 데이터셋 구조 Titanic은 4차원 테이블로 구성 테이블은 다음 속성들을 포함 Class: 1st, 2nd, 3rd, Crew로 구성 Sex: Male, Female로 구성 Age: Child, Adult로 구성 Survived: No, Yes로 구성 4차원 테이블 각 속성 값
Ex 2. Dataset raw data를 데이터 프레임으로 변환 데이터 프레임으로 변환한 결과, 각 속성(class, sex, age, survived)이 나타낼 수 있는 경우의 수를 빈도수로 표현하는 구조임을 확인 알고리즘에 적용할 수 없으므로 데이터를 변경해야 함
Ex 2. Dataset 데이터 변경 titanic.raw는 행렬이므로 데이터 프레임으로 변경 cbind() 함수를 통해, 열 단위로 결합 rep() 함수는 각 열의 값을 Freq 속성값만큼 반복 titanic.raw는 행렬이므로 데이터 프레임으로 변경
Ex 2. Dataset 각 속성에 이름을 부여 데이터 확인
Ex 2. Association Rule Mining Titanic 데이터를 apriori() 함수에 적용 기본적으로 minsup=0.1, minconf=0.8로 설정
Ex 2. Association Rule Mining Titanic 데이터에서 발견된 rules
Ex 2. Association Rule Mining Titanic 데이터에서는 단지 생사여부에 대한 rule이 필요 rhs=c(“Survived=No”, “Survived=Yes”) 옵션을 추가 lhs에는 다른 모든 속성이 포함될 수 있음 default=“lhs” 옵션을 추가 lhs값이 비어있는 rule이 나타남 minlen=2 옵션을 추가 apriori() 함수의 처리 과정은 불필요 verbose=F 옵션을 추가
Ex 2. Association Rule Mining Interesting rules를 위해 옵션 설정 round() 함수를 통해, support, confidence, lift 값을 반올림 sort() 함수를 통해, lift를 기준으로 내림차순 정렬
Ex 2. Association Rule Mining Interesting rules
Ex 2. Removing Redundancy 앞서 나타난 rules 중, 일부는 다른 rule을 포함 이는 불필요한 중복이며, 제거(pruning)하여야 함 e.g. rule 1에서 2nd-class의 어린이들이 모두 구조되었다는 것을 확인할 수 있 으나 rule 2에서 2nd-class의 어린이에 대한 rule을 한번 더 표현함 rule 4, 7, 8 또한 rule 3, 6, 5의 중복
Ex 2. Removing Redundancy 중복을 제거한 결과
Ex 2. Interpreting Rules 데이터로부터 높은 lift의 rule을 찾기는 쉽지만, rule을 이해하기는 어려움 실제로 연관 규칙을 잘못 이해하는 경우가 많음 rules.pruned에는 어린이들에 대해 2nd-class의 정보만 표현 “2nd-class의 어린이가 다른 class에 비해 생존률이 높다”는 판단은 틀림 위 결과를 위해 각 class의 생사여부에 대한 마이닝을 진행
Ex 2. Interpreting Rules 각 class별 연관 규칙 마이닝 결과 rule1, 2를 통해 1st-class와 2nd-class의 어린이가 생존률이 같음 rule3, 4, 5에서 3rd-class의 어린이는 다른 class의 어른보다 생존률이 낮음
과제 #3 성별에 따른 생존률 분석 제출 방법 Titanic 데이터에는 성별과 생사여부에 대한 데이터가 포함됨 apriori() 함수를 통해 각 성별의 생존률을 분석 제출 방법 과제는 ssw5176@kangwon.ac.kr로 제출 제목 양식: [학번][이름]HW#3 함수 실행 과정(parameter 포함)과 ARM 결과를 캡쳐 제출 기한은 다음 실습 수업시간 전까지이며, 그 후에 제출할 경우 20% 감점