반응형

안녕하세요


오늘은 연관규칙 Apriori 알고리즘에 대해 알아보도록 하겠습니다!



Q1. Apriori 알고리즘 이란?


A1. 간단한 성능 측정치를 이용해 거대한 데이터베이스에서 데이터간의 연관성을 찾는 알고리즘



Q2. 그래서 어떤 패턴을 찾는데?


A2. 연관규칙은 장바구니 분석에 가장 많이 사용됩니다. 하지만 잠재적인 패턴을 찾을 때 또한 유용합니다.



예시: "기저귀를 살 때 맥주를 함께 산다"


그림출처: 사람과 디지털연구소


연관 규칙을 통해 맥주와 기저귀라는 별 상관없어 보이는 상품의 동시 구매 패턴을 발견하였습니다.



Q3. 굳이 왜 ML(머신러닝)으로 패턴을 찾아야해?


A3. k개의 아이템으로 2개씩 아이템을 묶어 연관패턴을 찾으려면 평가해야할 2^k개의 아이템 집합을 갖습니다.

만약 아이템이 100개면 2의 100승개의 아이템 집합이 생기므로 사람이 그 많은 데이터를 직접분석하기는 어렵습니다.




연관규칙에서 사용하는 두가지 통계척도


1. 지지도: 데이터에서 발생하는 빈도

count(x)

support(x) = ----------------------

N


2. 신뢰도: 예측능력이나 정확도의 측정치

support(x,y)

confidence(x -> y) = ------------------------------

support(x)




기저귀와 맥주의 예시 코드를 생성하여 연관규칙 알고리즘에 대해 알아봅시다!


# 1. 데이터 로드 x <- data.frame( beer=c(0,1,1,1,0), bread=c(1,1,0,1,1), cola=c(0,0,1,0,1), diapers=c(0,1,1,1,1), eggs=c(0,1,0,0,0), milk=c(1,0,1,1,1) ) # x 확인하기

x # 2. arules 패키지를 설치한다. (apriori함수를 이용하기위해 설치) # install.packages("arules") library(arules) trans <- as.matrix(x,"Transaction") trans # 3. apriori 함수를 이용해서 연관관계를 분석한다. rules <- apriori(trans, parameter=list(supp=0.2, conf=0.6, target = "rules")) rules # support: 지지도, confidence:신뢰도, lift: 향상도, count inspect(sort(rules))


결과




신뢰도가 클수록 연관관계가 높다는 의미입니다.


연관규칙을 평가하는 지수는 사실 위에서 언급한 2가지말고도 많은데

그 중 꽤 많이 쓰이는 것이 상관관계를 나타내는 lift입니다.



추가 : 연관관계 시각화하기

# install.packages("sna") # install.packages("rgl") library(sna) library(rgl) #visualization b2 <- t(as.matrix(trans)) %*% as.matrix(trans) b2.w <- b2 - diag(diag(b2)) #rownames(b2.w) #colnames(b2.w) gplot(b2.w , displaylabel=T , vertex.cex=sqrt(diag(b2)) ,

vertex.col = "Pink" , edge.col="grey" , boxed.labels=F ,

arrowhead.cex = .3 , label.pos = 3 , edge.lwd = b2.w*2)


결과



마지막으로, 연관규칙 학습을 위한 에이 프라이어리 알고리즘의 장단점을 알아보겠습니다.


장점1. 대규모 거래 데이터에서 작업할 수 있다.


장점2. 이해하기 쉬운 규칙을 생성한다.


장점3. '데이터 마이닝'과 데이터 베이스에서 예상치 못한 지식을 발굴하는 데 유용하다.


---------------------------------------------------------------------------------


단점1. 작은 데이터 셋에서는 유용하지 않을 수 있다.


단점2. 랜덤 패턴에서 비논리적 결론을 도출하기 쉽다.





오늘은 여기까지!!


다음은 k-means알고리즘으로 돌아오겠습니다!!

반응형
반응형

안녕하세요!


오늘은 R로 머신러닝을 하기에 앞서


그 기본! Basic Part!


머신러닝에 대해 알아보겠습니다.


머신러닝이란,


컴퓨터에 명시적으로 프로그래밍하지 않고 학습할 수 있는 능력을 부여하는 컴퓨터 과학의 하위분야입니다.



먼저

AI(인공지능) 과 ML(머신러닝), Deep Learning(딥러닝)의 차이와 그 범주에 대해 알아볼까요?


AI vs Machine Learning vs Deep Learning출처: https://blogs.nvidia.com



AI란, Artificial Intelligence의 약자로, 사고나 학습 등 인간이 가진 지적 능력을 컴퓨터를 통해 구현하는 기술을 의미합니다.


머신러닝이란, 컴퓨터가 스스로 학습하여 인공지능의 성능을 향상시키는 기술을 의미합니다.


딥러닝이란, 인간의 뉴런과 비슷한 인공신경망 방식으로 정보를 처리하는 기술을 의미합니다.




머신러닝의 원리를 알아보겠습니다.


출처: https://www.networkworld.com


먼저, 그림과 같이 컴퓨터에게 문제와 답을 알려줍니다.


이후, 관련 문제를 내면 컴퓨터가 정답을 알아 맞추게 됩니다.


이것이 가능한 이유는

컴퓨터가 데이터(문제) 답(label)으로 학습하며 직접 프로그램(알고리즘)을 작성하기 때문입니다.




머신러닝의 종류는 크게 3가지로 나눌 수 있습니다.


 

1. 지도학습


2. 비지도 학습


3. 강화학습




1. 지도학습 (Supervised Learning)


훈련데이터와 정답을 가지며, 데이터를 분류/예측하는 함수를 만들어내는 기계학습 방법


종류1. 분류

KNN(K-Nearest Neighbors), 나이브 베이즈, 결정트리, 서포트 벡터머신, 아프리오 알고리즘


종류2. 회귀

선형회귀(Linear Regression), 신경망



2. 비지도학습 (Unsupervised/Predictive Learning)


정답없이 훈련데이터만 가지고 데이터로부터 숨겨진 패턴을 탐색하는 기계학습의 방법


종류: 클러스터링

연관규칙(apriori), k-means



3. 강화학습 (Reinforcement Learning)


어떤 환경에서 정의된 에이전트가 현재 상태를 인식하여 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법





오늘은 여기까지!


다음은 R을 이용한 머신러닝으로 돌아오겠습니다! 

반응형

+ Recent posts