차원 축소

2024. 9. 8. 22:01확률 통계/R 데이터 분석

차원 축소의 개념

  • 보통 1차원 2차원 정도면 적절하게 그래프를 작성할 수 있지만 4차원 데이터의 경우에는 변수가 너무 많기 때문에 그래프를 그리는 데에 문제가 발생한다.
  • 이를 해결하기 위해서 사용하는 방법 중 하나는 차원 축소이다.
  • 차원 축소(dimension reduction): 고차 데이터를 2,3차 정도의 데이터로 축소하는 방법을 의미한다. 

차원 축소하기

  • R에서는 차원을 낮추고 산점도로 작성하기 위해서 t-sne라고 알려진 방법을 사용하면 된다.
  • 이 방법을 사용하기 위해서는 Rtsne 패키지를 설치해주어야 한다.

4차원 데이터를 2차원 산점도로 작성하기

library(Rtsne)
library(ggplot2)
x<-iris[,-5]
y=which(duplicated(x))
x<-x[-y,]
x.y<-iris$Species[-y]

tsne<-Rtsne(x,dims=2, perplexity=10)
df<-data.frame(tsne$Y)

ggplot(df, aes(x=X1, y=X2,color=x.y))+
  geom_point(size=2)

결과

  • x <-iris [,-5]: x에는 5번째 열의 정보를 가져온다.
  • y=which(duplicated(x)): y에는 중복되는 데이터, 즉 duplicated함수를 활용하여서 중복데이터의 위치를 which 함수를 사용하여서 y에 저장해 준다.
  • x <-x [-y,]: x에 중복데이터를 제거한 데이터를 다시 넣어준다.
  • x.y <-iris$Species [-y]: x.y에는 iris의 Species에서 중복되는 데이터를 제거하고 종류에 따라서 1,2,3을 넣어준다.
  • tsne <-Rtsne(x, dims=2, perplexity=10): Rtsne는 차원 축소해 주는 함수로 사용되었고, dims는 몇 차원으로 축소를 해줄지 결정하고, perplexity는 데이터를 축소하는 사용할 샘플의 개수를 몇 개로 할지 지정해 준다. 
setosa와 다른 versicolor나 viginica 같은 품종과는 엄연한 차이가 존재한다는 것을 확인할 수 있다.

4차원 데이터를 3차원 산점도로 작성하기

library(Rtsne)
library(ggplot2)
install.packages(c("rgl","car"))
library("car")
library("rgl")
library("mgcv")
x <- iris[,-5] 
y <- which(duplicated(x))  
x <- x[-y,] 
x.y <- iris$Species[-y]  
tsne <- Rtsne(x, dims = 3, perplexity = 10)
df <- data.frame(X1 = tsne$Y[,1], X2 = tsne$Y[,2], X3 = tsne$Y[,3])
points <- as.integer(factor(x.y)) 
color <- c("red", "blue", "green")
scatter3d(x = df$X1, y = df$X2, z = df$X3, 
          point.col = color[points], 
          surface = FALSE)

결과

  • rgl패키지와 car패키지를 설치해서 불러오고, mgcv를 요구하는 경우도 있기 때문에 불러오도록 한다.
  • tsne에는 dims를 사용하여서 3차원으로 데이터를 축소해 준다.
  • df에는 tsne에 있는 데이터들을 데이터 프레임에 저장해 준다.
  • points를 활용하여서 x.y에 있는 데이터들을 factor형식으로 변환해 준 뒤에 숫자형으로 변환해 주어서 저장한다.
  • scattered는 다음과 같은 방법으로 사용해 주면 된다.
scatter3d(x = "", y = "", z = "", 
          point.col = color[points], 
          surface = FALSE)
  1. x, y, z매개변수에는 각각의 열에 해당하는 데이터를 지정해 준다. 
  2. point.col: 점의 색상을 지정해준다. 위에서는 points에 저장해 둔 숫자형 데이터들을 사용하여서 3가지의 색상을 지정해 주었다.
  3. surface: 회귀면을 표시해 주는 경우에는 surface=TRUE로 해주면 되고 아니라면 surface=FALSE로 해준다.

'확률 통계 > R 데이터 분석' 카테고리의 다른 글

확률 활용  (1) 2024.10.06
지도와 데이터  (0) 2024.09.09
ggplot 패키지  (0) 2024.09.05
데이터 시각화1  (0) 2024.09.03
데이터 전처리  (1) 2024.09.02