SlideShare a Scribd company logo
1 of 26
Download to read offline
R을 이용한 데이터 마이닝
bt22dr@gmail.com
목차
• 회귀분석
– 단순선형회귀분석
– 다중선형회귀분석
• 분류
– 로지스틱 회귀분석
– 나이브베이즈 분류기
– K-최근접 이웃
• 군집화
– K-means 군집화
• 기타
– 주성분분석
– 추천시스템
선형회귀분석
• 단순선형회귀 (Simple Linear Regression) :
– 연속형 변수 대상
– 독립변수와 종속변수 간의 상관관계에 따른 수학적 모델인 선형적 관계식 도출
– 독립변수가 주어졌을 때 이에 따른 종속변수를 예측
• 종류
– 단순회귀분석 : 1개의 종속변수와 1개의 독립변수 사이의 관계를 분석
– 다중회귀분석 : 1개의 종속변수와 여러 개의 독립변수 사이의 관계를 규명
• 회귀식 추정
– 단순선형회귀모델 :
– 표본회귀식 : y = a + bx
– 최소제곱법 : 𝑒𝑖
2
=𝑛
𝑖=1 (𝑦𝑖 − 𝑦𝑖)2
=𝑛
𝑖=1 (𝑦𝑖 − 𝑎 − 𝑏𝑥𝑖)2𝑛
𝑖=1 를 최소화하는 a, b
• 회귀모형 적합도 판단
– 회귀모형이 적합한지 확인하기 위해 결정계수 𝑅2
을 사용
– 회귀모형의 독립변수가 종속변수 변동의 몇%를 설명하는지를 나타내는 지표
– 결정계수 𝑅2
값은 상관계수 r을 제곱한 값과 같다.
y = α + βx + ε, ε ~ iid N(0, σ²)
선형회귀분석
• 상관분석 (Correlation Analysis)
– 두 변수간에 어떤 선형적 관계를 갖고 있는 지를 분석하는 방법
– 상관계수(Correlation coefficient)로 상관관계의 정도를 파악
– 두 변수간의 연관된 정도를 나타낼 뿐 인과관계를 설명하는 것은 아니다
• 피어슨 상관계수 (Pearson correlation coefficient)
–
X와 Y가 함께 변하는 정도
X와 Y가 따로 변하는 정도
= 두 변수 X,Y의 표준편차의 곱에 대한 공분산의 비율
– 모상관계수 =
– 표본상관계수 =
– 상관성을 -1과 1 사이 값으로 측정
• 방향 : 변수들이 어떻게 변하는지를 나타낸다
• 크기 : 절대값이 크면 상관관계가 더 강하다
선형회귀분석
• 단순선형회귀분석 실습
women
ggplot(women, aes(x=height, y=weight)) +
geom_point() +
geom_smooth(method = 'lm', se = FALSE)
model = lm(weight ~ height, women)
summary(model)
Call:
lm(formula = weight ~ height, data = women)
Residuals:
Min 1Q Median 3Q Max
-1.7333 -1.1333 -0.3833 0.7417 3.1167
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
height 3.45000 0.09114 37.85 1.09e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.525 on 13 degrees of freedom
Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
선형회귀분석
• 단순선형회귀분석 실습
predict(model, data.frame(height=73))
1
167.7833
cor(women$weight, women$height)
cor(women$weight, women$height)^2
summary(model)$r.squared
[1] 0.9954948
[1] 0.9910098
[1] 0.9910098
선형회귀분석
• 다중선형회귀 (Multiple Linear Regression) :
– 일반적인 자연 현상은 여러 독립 변수들에 의해 설명된다.
– 2개 이상의 독립 변수와 종속 변수간의 관계 도출
– 다중회귀모형 : 𝑦 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽 𝑛 𝑥 𝑛 + 𝜀
• 다중공선성
– 현실에서 설명변수들이 완벽하게 독립인 경우는 드물다.
– 변수간 상관정도가 높으면 회귀분석 결과에 나쁜 영향을 미친다.
• 변수선택
– 전진 선택법
– 변수 소거법
– 단계적 방법
선형회귀분석
• 다중선형회귀분석 실습
library(car)
mtcars_num <- mtcars[,c(1,3:7)]
# 산점도 행렬과 상관계수만으로 다중공선성 1차 진단
pairs(mtcars_num, panel=panel.smooth)
cor(mtcars_num[,-1])
# 모델 생성 후 값 추정
model <- lm(mpg~., data=mtcars_num)
summary(model)
predict(model, data.frame(disp=170, hp=120, drat=4.0, wt=2.7, qsec=17.0))
# stepwise selection 방법으로 변수 선택
out <- step(model, direction="both")
summary(out)
formula(out)
# 선택 변수만으로 모델 재생성 후 값 추정
model <- lm(formula(out), data=mtcars_num)
summary(model)
predict(model, data.frame(disp=170, hp=120, drat=4.0, wt=2.7, qsec=17.0))
로지스틱 회귀분석
• 종속변수가 연속형이 아닌 범주형 자료인 이항 변수로 구성됨
• 일반화된 선형 모델 (generalized linear model)을 이용
– 𝑦 = ln(
𝑝
1−𝑝
) = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽 𝑝 𝑥 𝑝 + 𝜀, 𝜀 ~ 𝑁(0, 𝜎2
)
• 모델 설명
– 𝑝 : X인 경우 Y가 발생할 확률 (0 ~ 1)
– Odds : Y가 0일 확률에 대한 1일 확률의 비율 =
𝑝
1−𝑝
(0 ~ ∞)
– Logit : odds에 자연로그 취한 상태 = ln(
𝑝
1−𝑝
) (−∞ ~ ∞)
• 위 모델로부터
– 𝑝 = Pr(Y=1 | X) =
𝑒 𝑧
1+𝑒 𝑧 =
1
1+𝑒−𝑧
( 𝑧 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽 𝑝 𝑥 𝑝)
1
(1 + 𝑒−𝑥)
로지스틱 회귀분석
• 로지스틱회귀분석 실습
# 임의의 데이터 생성
x <- c(rnorm(50, mean=0), rnorm(50, mean=2))
y <- c(rnorm(50, mean=2), rnorm(50, mean=0))
z <- c(rep("a", 50), rep("b", 50))
data <- data.frame(x, y, z)
# 데이터 스플릿
training_set <- sample(100,67)
train <- data[training_set,]
test <- data[-training_set,]
# 트레이닝 데이터 관찰
plot(train$x, train$y, col=train$z, xlab="x", ylab="y")
# 로지스틱회귀모형
model <- glm(z~x+y, binomial(link="logit"), train)
summary(model)
출처 : http://www.cleveralgorithms.com/machinelearning/regression/logistic_regression.html
로지스틱 회귀분석
• 로지스틱회귀분석 실습
# 테스트 데이터로 검증
probabilities <- predict.glm(model, test[,1:2], type="response")
predictions <- cut(probabilities, c(-Inf,0.5,Inf), labels=c("a","b"))
table(predictions, test$z)
# 모델이 테스트 데이터를 분류하는 모습 관찰
plot(test$x, test$y, col=test$z, xlab="x", ylab="y")
abline(intercept, slope, lty=5)
predictions a b
a 16 2
b 1 14
출처 : http://www.cleveralgorithms.com/machinelearning/regression/logistic_regression.html
나이브베이즈 분류기
• 베이즈 정리를 기반으로 하는 단순한 확률 분류기
– 어떤 feature 변수들 Fi가 주어졌을 때 이것이 Class C에서 나왔을 확률인 사후확
률을 측정하여 가장 확률이 높은 클래스로 분류한다.
–
• 보유한 데이터에서 해당 카테고리의 확률인 사전확률을 알 수 있고
해당 카테고리에서 각 아이템이 어떤 확률로 발생하는지(우도,
likelyhood)를 알 수 있으니 계산을 통해 사후확률을 구할 수 있다.
–
–
–
나이브베이즈 분류기
• 나이브베이즈 분류기 실습
install.packages('ElemStatLearn') # spam 이메일 데이터셋
install.packages('e1071')
library(e1071)
# 이메일 데이터 로드
data(spam, package="ElemStatLearn")
spam[1,]
# 데이터 스플릿
cv = sample(nrow(spam), floor(nrow(spam) * 0.9), replace=FALSE)
train = spam[cv,]
test = spam[-cv,]
# 분류기 테스트
num_feature <- ncol(spam) # label class feature 위치
modle <- naiveBayes(train[,-num_feature], train[,num_feature], laplace=1)
predict(modle, test[,-num_feature])
table(predict(m, test[,-num_feature]), test$spam)
K-최근접 이웃
• 직관적으로 이해하기 쉽고 매우 효과적인 분류기
• 분류 항목 표시가 주어지지 않은 테스트 데이터가 새로 주어졌을 때
트레이닝 데이터와 비교하여 가장 유사한 k개의 데이터를 골라내고
그 중 가장 많은 label을 테스트 데이터의 클래스로 예측한다.
• 선형적으로 분류하기 힘든 데이터에서도 간단하고 직관적인 방법으
로 분류를 수행
K-최근접 이웃
• K-최근접 이웃 실습 : OCR 예제
– 머신러닝 인 액션 2장의 소스코드 참조
– 데이터셋 : http://www.manning-source.com/books/pharrington/MLiA_SourceCode.zip
# 이미지를 벡터로 변환
img2vector <- function(filename) {
vec <- rep(0, 1024)
f <- file(filename, "rt")
lines <- readLines(f)
vec <- as.integer(unlist(strsplit(paste(lines, collapse=''), NULL)))
close(f)
return(vec)
}
# img2vector 테스트
test_vec <- img2vector('./data/digits/trainingDigits/0_0.txt') # 0
image(matrix(test_vec, ncol=32))
test_vec <- img2vector('./data/digits/trainingDigits/3_0.txt') # 3
image(matrix(test_vec, ncol=32))
소스코드 발췌 : 머신러닝 인 액션 2장
K-최근접 이웃
• K-최근접 이웃 실습 : OCR 예제
# training data 생성
hwLabels <- vector('integer')
training_file_list <- list.files('./data/digits/trainingDigits')
m <- length(training_file_list)
training_mat <- matrix(nrow=m, ncol=1024)
for(i in 1:m) {
file_name <- training_file_list[i]
print(file_name)
file_str <- unlist(strsplit(file_name, split="."))[1] # 0_0, txt
class_num <- as.integer(unlist(strsplit(file_str, split="_"))[1]) # 0, 0
hwLabels <- append(hwLabels, class_num)
training_mat[i,] <- img2vector(paste('./data/digits/trainingDigits/', file_name,
sep=""))
}
소스코드 발췌 : 머신러닝 인 액션 2장
K-최근접 이웃
• K-최근접 이웃 실습 : OCR 예제
# test data 분류
test_file_list <- list.files('./data/digits/testDigits')
error_cnt <- as.integer(0)
m_test <- length(test_file_list)
for(i in 1:m_test) {
file_name <- test_file_list[i]
print(file_name)
file_str <- unlist(strsplit(file_name, split="."))[1] # 0_0, txt
class_num <- as.integer(unlist(strsplit(file_str, split="_"))[1]) # 0, 0
test_vec <- img2vector(paste('./data/digits/testDigits/', file_name, sep=""))
cl_result <- knn(training_mat, test_vec, hwLabels, k=3)
print(sprintf("knn() result : %s, the real answer : %d", cl_result, class_num))
print("---------------")
if(cl_result != class_num) error_cnt <- error_cnt + 1
}
print(sprintf("the total error rate is : %f %%", error_cnt/m_test*100))
소스코드 발췌 : 머신러닝 인 액션 2장
K-means 군집화
• Cluster
– Object들의 집합
– 비슷한 Object끼리 같은 cluster에 묶음
• Clustering Algorithm
– Object 집합을 여러 개의 group으로 묶는 알고리즘
• 좋은 Clustering Algorithm
– Vector distance는 최대한 가깝게
– Cluster distance는 최대한 멀게
K-means 군집화
• K-means Clustering
– 주어진 데이터를 k개의 클러스터로 묶는 알고리즘
– 각 클러스터 센터와의 거리 차이의 분산을 최소화하는 방식으로 동작
–
– 알고리즘 동작 방식
K-means 군집화
• K-means 군집화 실습
# 데이터셋 준비
newiris <- iris
newiris$Species <- NULL
# k-means 알고리즘 수행
(kc <- kmeans(newiris, 3))
table(iris$Species, kc$cluster)
# 결과 확인
plot(newiris[c("Sepal.Length", "Sepal.Width")], col=kc$cluster)
points(kc$centers[,c("Sepal.Length", "Sepal.Width")], col=1:3, pch=8, cex=2)
PCA
• 주성분 분석 : PCA (Principal component analysis)
– 분포의 주 성분을 분석하는 방법
– 즉, 다차원의 데이터에서 정보 유실을 최소화하면서 더 적은 차원의 데이터로 설
명할 수 있게 하는 방법
– 주성분 벡터 -> 해당 벡터 방향으로 데이터들의 분산이 가장 큰 방향 벡터
– 데이터를 한 개의 축으로 사상시켰을 때 그 분산이 가장 커지는 축이 첫 번째 좌
표축으로 오고, 두 번째로 커지는 축이 두 번째… 와 같은 방법으로 차례로 놓이
도록 새로운 좌표계로 데이터를 선형 변환한다.
PCA
• PCA 실습
# 데이터셋 생성 및 관찰
data <- matrix(c(1,1,5,4,4,6,5,5,6,5,9,9),byrow=T,ncol=2)
(mu <- apply(data, 2, mean))
plot(data, xlim=c(0,10), ylim=c(0,10), asp=1)
(pc <- prcomp(data))
(r <- pc$rotation)
(result <- predict(pc, newdata=data))
plot(result, asp=1) # result를 그려보면 각 eigenvector의 관점에서 오리지널 데이터가 그려진다.
# 하지만 위에서는 모든 PC를 유지했기 때문에 차원 리덕션 효과는 없었다.
# PC1만을 남겨두어 차원 축소를 수행해보면
(pc <- prcomp(data, tol=0.3)) # tol 값은 0.7745967/3.6055513 보다 큰 값을 주면 된다.
(result <- predict(pc, newdata=data)) # 원본 데이터에서 차원 축소된 1차원 결과 데이터를 얻는다.
# 결과 데이터를 원본 데이터의 영역에서 비교해보자
result <- cbind(result, matrix(rep(0,6),byrow=F)) # 더미 차원을 추가해주고
plot(result, asp=1, col=2)
# eigenvector를 통한 transformation을 역으로 적용함
# t(t(r))의 의미는 solve(t(r)), 연산을 위해 rotation의 eigenvector를 col->row로 변환한 놈의 역행렬
(b <- t(t(t(r)) %*% t(result) + mu))
plot(data, xlim=c(0,10), ylim=c(0,10), asp=1)
par(new=T)
plot(b, xlim=c(0,10), ylim=c(0,10), asp=1, col=2, pch=4)
lines(c(0,10), c(0,10), lty="dotted")
추천시스템
• 등장 배경
• User-Item Matrix
Off-line On-line
물리적 공간의 제약 물리적 공간 제약 없음
제한된 고객 수 고객 수의 제한 없음
Pareto(80/20) 법칙 Long tail 법칙
개인화 불가능 개인화 가능
추천시스템
• 추천시스템 분류
– Content-based RS
– Collaborative Filtering
• Memory-based
– User-based CF
– Item-based CF
• Model-based
• 일반적인 성능 및 결과 비교
Content-based < User-based CF <= Item-based CF < Model-based
추천시스템
• 추천 시스템 실습
library(recommenderlab)
data(MovieLense)
MovieLense
image(sample(MovieLense, 500))
r <- Recommender(MovieLense, method="UBCF")
recom <- predict(r, MovieLense[1:2], n=3)
as(recom, "list")
[[1]]
[1] "Glory (1989)" "Schindler's List (1993)" "Casablanca (1942)"
[[2]]
[1] "Boot, Das (1981)" "Dead Man Walking (1995)" "Lone Star (1996)"

More Related Content

What's hot

R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R BasicsYoonwhan Lee
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법Terry Cho
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4pkok15
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 RYoonwhan Lee
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조영기 김
 
[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)neuroassociates
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개Terry Cho
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)beom kyun choi
 
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질aceigy6322
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpKimjeongmoo
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서KimChangHoen
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약Sung Yub Kim
 
practice2
practice2practice2
practice2yosm
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
R을 이용한 데이터 분석
R을 이용한 데이터 분석R을 이용한 데이터 분석
R을 이용한 데이터 분석simon park
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇYoonwhan Lee
 

What's hot (20)

R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4
 
이산수학04
이산수학04이산수학04
이산수학04
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 R
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 
R 기초 II
R 기초 IIR 기초 II
R 기초 II
 
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
 
practice2
practice2practice2
practice2
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
R을 이용한 데이터 분석
R을 이용한 데이터 분석R을 이용한 데이터 분석
R을 이용한 데이터 분석
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇ
 
Python
PythonPython
Python
 

Viewers also liked

빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)
빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)
빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)성호(Kevin) 나
 
1[1].2.10알고리즘 분석
1[1].2.10알고리즘 분석1[1].2.10알고리즘 분석
1[1].2.10알고리즘 분석Park Min Wook
 
Linear regression analysis
Linear regression analysisLinear regression analysis
Linear regression analysismothersafe
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 
트렌드분석사례 마인즈랩 축제페스티벌
트렌드분석사례 마인즈랩 축제페스티벌트렌드분석사례 마인즈랩 축제페스티벌
트렌드분석사례 마인즈랩 축제페스티벌Taejoon Yoo
 
[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프
[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프
[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프Keynote User Group
 
생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기) 20121124
생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기)  20121124생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기)  20121124
생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기) 20121124Jihong Yeom
 
머피's 머신러닝: Latent Linear Model
머피's 머신러닝: Latent Linear Model머피's 머신러닝: Latent Linear Model
머피's 머신러닝: Latent Linear ModelJungkyu Lee
 
BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2고포릿 default
 
개발자를 위한 R로 wordcloud 10분만에 만들기
개발자를 위한 R로 wordcloud 10분만에 만들기개발자를 위한 R로 wordcloud 10분만에 만들기
개발자를 위한 R로 wordcloud 10분만에 만들기동철 박
 

Viewers also liked (20)

빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)
빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)
빅데이터 아카데미 연말평가발표자료 분석5기 우수팀(최종)
 
1[1].2.10알고리즘 분석
1[1].2.10알고리즘 분석1[1].2.10알고리즘 분석
1[1].2.10알고리즘 분석
 
기술7기 2조
기술7기 2조기술7기 2조
기술7기 2조
 
Linear regression analysis
Linear regression analysisLinear regression analysis
Linear regression analysis
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 
트렌드분석사례 마인즈랩 축제페스티벌
트렌드분석사례 마인즈랩 축제페스티벌트렌드분석사례 마인즈랩 축제페스티벌
트렌드분석사례 마인즈랩 축제페스티벌
 
RHive tutorial - Installation
RHive tutorial - InstallationRHive tutorial - Installation
RHive tutorial - Installation
 
분석7기 5조
분석7기 5조분석7기 5조
분석7기 5조
 
기술6기 3조
기술6기 3조기술6기 3조
기술6기 3조
 
기술8기 2조
기술8기 2조기술8기 2조
기술8기 2조
 
[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프
[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프
[51st KUG PP] 아이폰으로 완성된 나의 디지털 라이프
 
분석6기 4조
분석6기 4조분석6기 4조
분석6기 4조
 
생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기) 20121124
생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기)  20121124생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기)  20121124
생각정리 세미나 - 아날로그와 디지탈 편 ( 몰스킨노트 이야기) 20121124
 
기술5기 1조
기술5기 1조기술5기 1조
기술5기 1조
 
머피's 머신러닝: Latent Linear Model
머피's 머신러닝: Latent Linear Model머피's 머신러닝: Latent Linear Model
머피's 머신러닝: Latent Linear Model
 
분석8기 4조
분석8기 4조분석8기 4조
분석8기 4조
 
BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2
 
Mahout
MahoutMahout
Mahout
 
개발자를 위한 R로 wordcloud 10분만에 만들기
개발자를 위한 R로 wordcloud 10분만에 만들기개발자를 위한 R로 wordcloud 10분만에 만들기
개발자를 위한 R로 wordcloud 10분만에 만들기
 
블록체인
블록체인블록체인
블록체인
 

Similar to R_datamining

2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regressionHaesun Park
 
3.neural networks
3.neural networks3.neural networks
3.neural networksHaesun Park
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learningHaesun Park
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트S.O.P.T - Shout Our Passion Together
 
4.convolutional neural networks
4.convolutional neural networks4.convolutional neural networks
4.convolutional neural networksHaesun Park
 
Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1PartPrime
 
이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdf이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdftangtang1026
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Suhyun Park
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 WinterSuhyun Park
 
Introduction toDQN
Introduction toDQNIntroduction toDQN
Introduction toDQNCurt Park
 
하스켈 성능 튜닝
하스켈 성능 튜닝하스켈 성능 튜닝
하스켈 성능 튜닝민석 이
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationHyunKyu Jeon
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석jaypi Ko
 
HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델Seong-Bok Lee
 
13.상관과 회귀
13.상관과 회귀13.상관과 회귀
13.상관과 회귀Yoonwhan Lee
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNNSANG WON PARK
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지Haesun Park
 
RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할r-kor
 

Similar to R_datamining (20)

Rdatamining
Rdatamining Rdatamining
Rdatamining
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
3.neural networks
3.neural networks3.neural networks
3.neural networks
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learning
 
Spc개요
Spc개요Spc개요
Spc개요
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
 
4.convolutional neural networks
4.convolutional neural networks4.convolutional neural networks
4.convolutional neural networks
 
Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1
 
이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdf이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdf
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
 
Introduction toDQN
Introduction toDQNIntroduction toDQN
Introduction toDQN
 
하스켈 성능 튜닝
하스켈 성능 튜닝하스켈 성능 튜닝
하스켈 성능 튜닝
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine Translation
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석
 
HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델
 
13.상관과 회귀
13.상관과 회귀13.상관과 회귀
13.상관과 회귀
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNN
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
 
RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할
 

More from 주영 송

5일차.map reduce 활용
5일차.map reduce 활용5일차.map reduce 활용
5일차.map reduce 활용주영 송
 
Regression &amp; Classification
Regression &amp; ClassificationRegression &amp; Classification
Regression &amp; Classification주영 송
 
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)주영 송
 
SNA & R (20121011)
SNA & R (20121011)SNA & R (20121011)
SNA & R (20121011)주영 송
 
Recommendation system 소개 (1)
Recommendation system 소개 (1)Recommendation system 소개 (1)
Recommendation system 소개 (1)주영 송
 
Cloud burst tutorial
Cloud burst tutorialCloud burst tutorial
Cloud burst tutorial주영 송
 
Cloud burst 소개
Cloud burst 소개Cloud burst 소개
Cloud burst 소개주영 송
 
Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7주영 송
 

More from 주영 송 (10)

Giraph
GiraphGiraph
Giraph
 
5일차.map reduce 활용
5일차.map reduce 활용5일차.map reduce 활용
5일차.map reduce 활용
 
Regression &amp; Classification
Regression &amp; ClassificationRegression &amp; Classification
Regression &amp; Classification
 
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
 
SNA & R (20121011)
SNA & R (20121011)SNA & R (20121011)
SNA & R (20121011)
 
Recommendation system 소개 (1)
Recommendation system 소개 (1)Recommendation system 소개 (1)
Recommendation system 소개 (1)
 
Cloud burst tutorial
Cloud burst tutorialCloud burst tutorial
Cloud burst tutorial
 
Cloud burst 소개
Cloud burst 소개Cloud burst 소개
Cloud burst 소개
 
Cuda intro
Cuda introCuda intro
Cuda intro
 
Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7
 

R_datamining

  • 1.
  • 2. R을 이용한 데이터 마이닝 bt22dr@gmail.com
  • 3. 목차 • 회귀분석 – 단순선형회귀분석 – 다중선형회귀분석 • 분류 – 로지스틱 회귀분석 – 나이브베이즈 분류기 – K-최근접 이웃 • 군집화 – K-means 군집화 • 기타 – 주성분분석 – 추천시스템
  • 4. 선형회귀분석 • 단순선형회귀 (Simple Linear Regression) : – 연속형 변수 대상 – 독립변수와 종속변수 간의 상관관계에 따른 수학적 모델인 선형적 관계식 도출 – 독립변수가 주어졌을 때 이에 따른 종속변수를 예측 • 종류 – 단순회귀분석 : 1개의 종속변수와 1개의 독립변수 사이의 관계를 분석 – 다중회귀분석 : 1개의 종속변수와 여러 개의 독립변수 사이의 관계를 규명 • 회귀식 추정 – 단순선형회귀모델 : – 표본회귀식 : y = a + bx – 최소제곱법 : 𝑒𝑖 2 =𝑛 𝑖=1 (𝑦𝑖 − 𝑦𝑖)2 =𝑛 𝑖=1 (𝑦𝑖 − 𝑎 − 𝑏𝑥𝑖)2𝑛 𝑖=1 를 최소화하는 a, b • 회귀모형 적합도 판단 – 회귀모형이 적합한지 확인하기 위해 결정계수 𝑅2 을 사용 – 회귀모형의 독립변수가 종속변수 변동의 몇%를 설명하는지를 나타내는 지표 – 결정계수 𝑅2 값은 상관계수 r을 제곱한 값과 같다. y = α + βx + ε, ε ~ iid N(0, σ²)
  • 5. 선형회귀분석 • 상관분석 (Correlation Analysis) – 두 변수간에 어떤 선형적 관계를 갖고 있는 지를 분석하는 방법 – 상관계수(Correlation coefficient)로 상관관계의 정도를 파악 – 두 변수간의 연관된 정도를 나타낼 뿐 인과관계를 설명하는 것은 아니다 • 피어슨 상관계수 (Pearson correlation coefficient) – X와 Y가 함께 변하는 정도 X와 Y가 따로 변하는 정도 = 두 변수 X,Y의 표준편차의 곱에 대한 공분산의 비율 – 모상관계수 = – 표본상관계수 = – 상관성을 -1과 1 사이 값으로 측정 • 방향 : 변수들이 어떻게 변하는지를 나타낸다 • 크기 : 절대값이 크면 상관관계가 더 강하다
  • 6. 선형회귀분석 • 단순선형회귀분석 실습 women ggplot(women, aes(x=height, y=weight)) + geom_point() + geom_smooth(method = 'lm', se = FALSE) model = lm(weight ~ height, women) summary(model) Call: lm(formula = weight ~ height, data = women) Residuals: Min 1Q Median 3Q Max -1.7333 -1.1333 -0.3833 0.7417 3.1167 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -87.51667 5.93694 -14.74 1.71e-09 *** height 3.45000 0.09114 37.85 1.09e-14 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.525 on 13 degrees of freedom Multiple R-squared: 0.991, Adjusted R-squared: 0.9903 F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
  • 7. 선형회귀분석 • 단순선형회귀분석 실습 predict(model, data.frame(height=73)) 1 167.7833 cor(women$weight, women$height) cor(women$weight, women$height)^2 summary(model)$r.squared [1] 0.9954948 [1] 0.9910098 [1] 0.9910098
  • 8. 선형회귀분석 • 다중선형회귀 (Multiple Linear Regression) : – 일반적인 자연 현상은 여러 독립 변수들에 의해 설명된다. – 2개 이상의 독립 변수와 종속 변수간의 관계 도출 – 다중회귀모형 : 𝑦 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽 𝑛 𝑥 𝑛 + 𝜀 • 다중공선성 – 현실에서 설명변수들이 완벽하게 독립인 경우는 드물다. – 변수간 상관정도가 높으면 회귀분석 결과에 나쁜 영향을 미친다. • 변수선택 – 전진 선택법 – 변수 소거법 – 단계적 방법
  • 9. 선형회귀분석 • 다중선형회귀분석 실습 library(car) mtcars_num <- mtcars[,c(1,3:7)] # 산점도 행렬과 상관계수만으로 다중공선성 1차 진단 pairs(mtcars_num, panel=panel.smooth) cor(mtcars_num[,-1]) # 모델 생성 후 값 추정 model <- lm(mpg~., data=mtcars_num) summary(model) predict(model, data.frame(disp=170, hp=120, drat=4.0, wt=2.7, qsec=17.0)) # stepwise selection 방법으로 변수 선택 out <- step(model, direction="both") summary(out) formula(out) # 선택 변수만으로 모델 재생성 후 값 추정 model <- lm(formula(out), data=mtcars_num) summary(model) predict(model, data.frame(disp=170, hp=120, drat=4.0, wt=2.7, qsec=17.0))
  • 10. 로지스틱 회귀분석 • 종속변수가 연속형이 아닌 범주형 자료인 이항 변수로 구성됨 • 일반화된 선형 모델 (generalized linear model)을 이용 – 𝑦 = ln( 𝑝 1−𝑝 ) = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽 𝑝 𝑥 𝑝 + 𝜀, 𝜀 ~ 𝑁(0, 𝜎2 ) • 모델 설명 – 𝑝 : X인 경우 Y가 발생할 확률 (0 ~ 1) – Odds : Y가 0일 확률에 대한 1일 확률의 비율 = 𝑝 1−𝑝 (0 ~ ∞) – Logit : odds에 자연로그 취한 상태 = ln( 𝑝 1−𝑝 ) (−∞ ~ ∞) • 위 모델로부터 – 𝑝 = Pr(Y=1 | X) = 𝑒 𝑧 1+𝑒 𝑧 = 1 1+𝑒−𝑧 ( 𝑧 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽 𝑝 𝑥 𝑝) 1 (1 + 𝑒−𝑥)
  • 11. 로지스틱 회귀분석 • 로지스틱회귀분석 실습 # 임의의 데이터 생성 x <- c(rnorm(50, mean=0), rnorm(50, mean=2)) y <- c(rnorm(50, mean=2), rnorm(50, mean=0)) z <- c(rep("a", 50), rep("b", 50)) data <- data.frame(x, y, z) # 데이터 스플릿 training_set <- sample(100,67) train <- data[training_set,] test <- data[-training_set,] # 트레이닝 데이터 관찰 plot(train$x, train$y, col=train$z, xlab="x", ylab="y") # 로지스틱회귀모형 model <- glm(z~x+y, binomial(link="logit"), train) summary(model) 출처 : http://www.cleveralgorithms.com/machinelearning/regression/logistic_regression.html
  • 12. 로지스틱 회귀분석 • 로지스틱회귀분석 실습 # 테스트 데이터로 검증 probabilities <- predict.glm(model, test[,1:2], type="response") predictions <- cut(probabilities, c(-Inf,0.5,Inf), labels=c("a","b")) table(predictions, test$z) # 모델이 테스트 데이터를 분류하는 모습 관찰 plot(test$x, test$y, col=test$z, xlab="x", ylab="y") abline(intercept, slope, lty=5) predictions a b a 16 2 b 1 14 출처 : http://www.cleveralgorithms.com/machinelearning/regression/logistic_regression.html
  • 13. 나이브베이즈 분류기 • 베이즈 정리를 기반으로 하는 단순한 확률 분류기 – 어떤 feature 변수들 Fi가 주어졌을 때 이것이 Class C에서 나왔을 확률인 사후확 률을 측정하여 가장 확률이 높은 클래스로 분류한다. – • 보유한 데이터에서 해당 카테고리의 확률인 사전확률을 알 수 있고 해당 카테고리에서 각 아이템이 어떤 확률로 발생하는지(우도, likelyhood)를 알 수 있으니 계산을 통해 사후확률을 구할 수 있다. – – –
  • 14. 나이브베이즈 분류기 • 나이브베이즈 분류기 실습 install.packages('ElemStatLearn') # spam 이메일 데이터셋 install.packages('e1071') library(e1071) # 이메일 데이터 로드 data(spam, package="ElemStatLearn") spam[1,] # 데이터 스플릿 cv = sample(nrow(spam), floor(nrow(spam) * 0.9), replace=FALSE) train = spam[cv,] test = spam[-cv,] # 분류기 테스트 num_feature <- ncol(spam) # label class feature 위치 modle <- naiveBayes(train[,-num_feature], train[,num_feature], laplace=1) predict(modle, test[,-num_feature]) table(predict(m, test[,-num_feature]), test$spam)
  • 15. K-최근접 이웃 • 직관적으로 이해하기 쉽고 매우 효과적인 분류기 • 분류 항목 표시가 주어지지 않은 테스트 데이터가 새로 주어졌을 때 트레이닝 데이터와 비교하여 가장 유사한 k개의 데이터를 골라내고 그 중 가장 많은 label을 테스트 데이터의 클래스로 예측한다. • 선형적으로 분류하기 힘든 데이터에서도 간단하고 직관적인 방법으 로 분류를 수행
  • 16. K-최근접 이웃 • K-최근접 이웃 실습 : OCR 예제 – 머신러닝 인 액션 2장의 소스코드 참조 – 데이터셋 : http://www.manning-source.com/books/pharrington/MLiA_SourceCode.zip # 이미지를 벡터로 변환 img2vector <- function(filename) { vec <- rep(0, 1024) f <- file(filename, "rt") lines <- readLines(f) vec <- as.integer(unlist(strsplit(paste(lines, collapse=''), NULL))) close(f) return(vec) } # img2vector 테스트 test_vec <- img2vector('./data/digits/trainingDigits/0_0.txt') # 0 image(matrix(test_vec, ncol=32)) test_vec <- img2vector('./data/digits/trainingDigits/3_0.txt') # 3 image(matrix(test_vec, ncol=32)) 소스코드 발췌 : 머신러닝 인 액션 2장
  • 17. K-최근접 이웃 • K-최근접 이웃 실습 : OCR 예제 # training data 생성 hwLabels <- vector('integer') training_file_list <- list.files('./data/digits/trainingDigits') m <- length(training_file_list) training_mat <- matrix(nrow=m, ncol=1024) for(i in 1:m) { file_name <- training_file_list[i] print(file_name) file_str <- unlist(strsplit(file_name, split="."))[1] # 0_0, txt class_num <- as.integer(unlist(strsplit(file_str, split="_"))[1]) # 0, 0 hwLabels <- append(hwLabels, class_num) training_mat[i,] <- img2vector(paste('./data/digits/trainingDigits/', file_name, sep="")) } 소스코드 발췌 : 머신러닝 인 액션 2장
  • 18. K-최근접 이웃 • K-최근접 이웃 실습 : OCR 예제 # test data 분류 test_file_list <- list.files('./data/digits/testDigits') error_cnt <- as.integer(0) m_test <- length(test_file_list) for(i in 1:m_test) { file_name <- test_file_list[i] print(file_name) file_str <- unlist(strsplit(file_name, split="."))[1] # 0_0, txt class_num <- as.integer(unlist(strsplit(file_str, split="_"))[1]) # 0, 0 test_vec <- img2vector(paste('./data/digits/testDigits/', file_name, sep="")) cl_result <- knn(training_mat, test_vec, hwLabels, k=3) print(sprintf("knn() result : %s, the real answer : %d", cl_result, class_num)) print("---------------") if(cl_result != class_num) error_cnt <- error_cnt + 1 } print(sprintf("the total error rate is : %f %%", error_cnt/m_test*100)) 소스코드 발췌 : 머신러닝 인 액션 2장
  • 19. K-means 군집화 • Cluster – Object들의 집합 – 비슷한 Object끼리 같은 cluster에 묶음 • Clustering Algorithm – Object 집합을 여러 개의 group으로 묶는 알고리즘 • 좋은 Clustering Algorithm – Vector distance는 최대한 가깝게 – Cluster distance는 최대한 멀게
  • 20. K-means 군집화 • K-means Clustering – 주어진 데이터를 k개의 클러스터로 묶는 알고리즘 – 각 클러스터 센터와의 거리 차이의 분산을 최소화하는 방식으로 동작 – – 알고리즘 동작 방식
  • 21. K-means 군집화 • K-means 군집화 실습 # 데이터셋 준비 newiris <- iris newiris$Species <- NULL # k-means 알고리즘 수행 (kc <- kmeans(newiris, 3)) table(iris$Species, kc$cluster) # 결과 확인 plot(newiris[c("Sepal.Length", "Sepal.Width")], col=kc$cluster) points(kc$centers[,c("Sepal.Length", "Sepal.Width")], col=1:3, pch=8, cex=2)
  • 22. PCA • 주성분 분석 : PCA (Principal component analysis) – 분포의 주 성분을 분석하는 방법 – 즉, 다차원의 데이터에서 정보 유실을 최소화하면서 더 적은 차원의 데이터로 설 명할 수 있게 하는 방법 – 주성분 벡터 -> 해당 벡터 방향으로 데이터들의 분산이 가장 큰 방향 벡터 – 데이터를 한 개의 축으로 사상시켰을 때 그 분산이 가장 커지는 축이 첫 번째 좌 표축으로 오고, 두 번째로 커지는 축이 두 번째… 와 같은 방법으로 차례로 놓이 도록 새로운 좌표계로 데이터를 선형 변환한다.
  • 23. PCA • PCA 실습 # 데이터셋 생성 및 관찰 data <- matrix(c(1,1,5,4,4,6,5,5,6,5,9,9),byrow=T,ncol=2) (mu <- apply(data, 2, mean)) plot(data, xlim=c(0,10), ylim=c(0,10), asp=1) (pc <- prcomp(data)) (r <- pc$rotation) (result <- predict(pc, newdata=data)) plot(result, asp=1) # result를 그려보면 각 eigenvector의 관점에서 오리지널 데이터가 그려진다. # 하지만 위에서는 모든 PC를 유지했기 때문에 차원 리덕션 효과는 없었다. # PC1만을 남겨두어 차원 축소를 수행해보면 (pc <- prcomp(data, tol=0.3)) # tol 값은 0.7745967/3.6055513 보다 큰 값을 주면 된다. (result <- predict(pc, newdata=data)) # 원본 데이터에서 차원 축소된 1차원 결과 데이터를 얻는다. # 결과 데이터를 원본 데이터의 영역에서 비교해보자 result <- cbind(result, matrix(rep(0,6),byrow=F)) # 더미 차원을 추가해주고 plot(result, asp=1, col=2) # eigenvector를 통한 transformation을 역으로 적용함 # t(t(r))의 의미는 solve(t(r)), 연산을 위해 rotation의 eigenvector를 col->row로 변환한 놈의 역행렬 (b <- t(t(t(r)) %*% t(result) + mu)) plot(data, xlim=c(0,10), ylim=c(0,10), asp=1) par(new=T) plot(b, xlim=c(0,10), ylim=c(0,10), asp=1, col=2, pch=4) lines(c(0,10), c(0,10), lty="dotted")
  • 24. 추천시스템 • 등장 배경 • User-Item Matrix Off-line On-line 물리적 공간의 제약 물리적 공간 제약 없음 제한된 고객 수 고객 수의 제한 없음 Pareto(80/20) 법칙 Long tail 법칙 개인화 불가능 개인화 가능
  • 25. 추천시스템 • 추천시스템 분류 – Content-based RS – Collaborative Filtering • Memory-based – User-based CF – Item-based CF • Model-based • 일반적인 성능 및 결과 비교 Content-based < User-based CF <= Item-based CF < Model-based
  • 26. 추천시스템 • 추천 시스템 실습 library(recommenderlab) data(MovieLense) MovieLense image(sample(MovieLense, 500)) r <- Recommender(MovieLense, method="UBCF") recom <- predict(r, MovieLense[1:2], n=3) as(recom, "list") [[1]] [1] "Glory (1989)" "Schindler's List (1993)" "Casablanca (1942)" [[2]] [1] "Boot, Das (1981)" "Dead Man Walking (1995)" "Lone Star (1996)"