ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024 ADsP 데이터분석 준전문가 시험공부 12일차/20
    CERTIFICATION/ADsP 2024. 5. 4. 22:00
    728x90
    반응형

    04 다변량 분석

    1. 다차원 척도법

    (1) 다차원 척도법의 개요

    ① 다차원 척도법(Multidimensional Scaling, MDS)의 개념

    : 객체 간의 근접성을 시각화하는 통계기법. 군집분석과 유사

    - 객체들 사이에 유사성 혹은 비유사성을 측정하여 원래의 차원보다 낮은 차원의 공간에 군집분석처럼 점으로 표현

    - 목적 : 데이터 축소, 즉 데이터들의 유사성 혹은 비유사성과 같은 데이터들의 정보 속성을 파악하기 위한 수단으로 활용

    - 객체들 간의 거리는 유크리디안 거리행렬을 사용하여 계산

     

    ② 다차원 척도법의 측도 ★★

    - 개체의 실제 거리와 모형에 의해 추정된 거리 사이의 적합도를 측정하기 위해 stress 척도 사용

    - stress 값은 0~1 사이의 값을 가지며 그 값이 낮을수록 적합도가 높다고 평가

    - 보통 0.05 이내이면 적합도가 좋다고 판단하고, 0.15 이상이면 적합도가 매우 나쁘다고 판단

    stress 적합도
    0 완벽
    0~0.05 매우 우수
    0.05~0.1 우수
    0.1~0.15 보통
    0.15 이상 나쁨

     

    (2) 다차원 척도법의 종류

    계량적 MDS 비계량적 MDS
    구간척도, 비율척도 서열척도
    유클리디안 거리 행렬 서열척도를 거리속성값으로 변환하여 사용
    R에서 'cmdscale' 함수 사용 R에서 'isoMDS' 함수 사용

     

    (3) 다차원 척도법 실습

    - 8개 과일에 대한 영양소 함유량 데이터

      변수명 사과 아보카도 바나나 블루베리 멜론 수박 딸기 포도
    열량 cal(kcal) 52 160 89 57 34 32 30 69
    탄수화물 car(g) 112.4 8.5 22.8 14.5 8.2 7.7 7.6 18.1
    지방 fat(g) 0.2 14.7 1.3 0.7 0.2 0.3 0.2 0.2
    단백질 pro(g) 0.3 2.0 1.1 0.3 0.8 0.7 0.6 0.7
    식이섬유 fib(g) 2.4 6.7 2.6 2.4 0.9 2.0 0.4 0.9
    설탕(당) sug(g) 10.4 0.7 12.2 9.9 7.9 4.7 6.2 15.5
    > cal <- c(52, 160, 89, 57, 34, 32, 30, 69)
    > car <- c(112.4, 8.5, 22.8, 14.5, 8.2, 7.7, 7.6, 18.1)
    > fat <- c(0.2, 14.7, 1.3, 0.7, 0.2, 0.3, 0.2, 0.2)
    > pro <- c(0.3, 2.0, 1.1, 0.3 ,0.8, 0.7, 0.6, 0.7)
    > fib <- c(2.4, 6.7, 2.6, 2.4, 0.9, 2.0, 0.4, 0.9)
    > sug <- c(10.4, 0.7, 12.2, 9.9, 7.9, 4.7, 6.2, 15.5)
    > fruits <- data.frame(cal, car, fat, pro, fib, sug)
    > rownames(fruits) <- c("apple", "avocado", "banana", "blueberry", "melon", "watermelon", "starwberry", "grape")
    > fruits_dist <- dist(fruits)
    > fruits_loc <- cmdscale(fruits_dist)
    > x_loc <- fruits_loc[, 1]
    > y_loc <- fruits_loc[, 2]
    > plot(x_loc, y_loc, type = 'n')
    > text(x_loc, y_loc, rownames(fruits))
    > abline(v = 0, h = 0)

    실행결과

    - # x_loc와 y_loc가 무엇을 의미하는지는 알 수 없음

    - # 수박, 멜론, 딸기는 비슷한 부류의 과일임

    - # 사과와 아보카도는 나머지 과일과 다른 부류의 과일임

    2. 주성분분석(PCA)

    (1) 주성분분석 개요

    ① 주성분분석(Principal Component Analysis)의 개념 ★★

    : 여러 개의 변수 중 서로 상관성이 높은 변수들의 선형 결합으로 새로운 변수(주성분)를 만들어 기존 변수를 요약 및 축소하는 분석 방법

    - X, Y라는 두개의 변수에 의해 자료의 위치정보를 나타낸 데이터가 있다고 할 때, 두 개의 변수는 데이터를 두 개의 관점에서 바라본다고 할 수 있다. 그러나 두 개의 변수를 이해하기 힘든 경우 데이터들의 변수를 요약하여 하나의 변수로만 데이터의 위치 정보를 나타내는 것이 중성분분석의 목적!

     

    ② 주성분분석의 목적 ★★

    - 변수를 축소하여 모형의 설명력을 높임

    - 다중공선성 문제 해결

    - 군집분석 시 모형의 성능을 높일 수 있음

    - IoT 센서 데이터를 주성분분석 후 스마트팩토리에 활용

    - 주성분분석 시 선형변환이 필요함

     

    ③ 주성분분석 방법

    - 주어진 데이터를 하나의 변수로 요약한다는 것은 하나의 관점에서 바라보는 것을 의미하는데, 그에 따른 데이터 손실(점선)이 발생할 수밖에 없음

    - 주성분분석 방법 : 손실이 가장 작은 축을 찾는 것, 즉 자료의 분산이 가장 큰 축을 찾아 새로운 변수로 만드는 방법

    - 데이터를 가장 잘 표현하는 직교상의 데이터 벡터들을 찾아서 데이터 압축, 속성들을 선택하고 조합하여 다른 작은 집합 생성

    - 장점 : 계산이 간단하며 데이터 부족이나 일률적 데이터 혹은 정렬되지 않은 속성을 가진 데이터도 처리 가능

     

    - 고유값 : 고유 벡터의 크기를 의미하며 해당 값이 클수록 높은 설명력을 가짐

    - 평균 고유값 방법 : 고유값들의 평균을 구한 뒤 고유값이 평균보다 작은 값을 갖는 주성분을 제거하는 것

     

    (2) 주성분분석 사례 실습

    ① 주성분분석#1 - 수행 및 해석 ★★

      변수명 사과 아보카도 바나나 블루베리 멜론 수박 딸기 포도
    열량 cal(kcal) 52 160 89 57 34 32 30 69
    탄수화물 car(g) 112.4 8.5 22.8 14.5 8.2 7.7 7.6 18.1
    지방 fat(g) 0.2 14.7 1.3 0.7 0.2 0.3 0.2 0.2
    단백질 pro(g) 0.3 2.0 1.1 0.3 0.8 0.7 0.6 0.7
    식이섬유 fib(g) 2.4 6.7 2.6 2.4 0.9 2.0 0.4 0.9
    설탕(당) sug(g) 10.4 0.7 12.2 9.9 7.9 4.7 6.2 15.5
    > cal <- c(52, 160, 89, 57, 34, 32, 30, 69)
    > car <- c(112.4, 8.5, 22.8, 14.5, 8.2, 7.7, 7.6, 18.1)
    > fat <- c(0.2, 14.7, 1.3, 0.7, 0.2, 0.3, 0.2, 0.2)
    > pro <- c(0.3, 2.0, 1.1, 0.3 ,0.8, 0.7, 0.6, 0.7)
    > fib <- c(2.4, 6.7, 2.6, 2.4, 0.9, 2.0, 0.4, 0.9)
    > sug <- c(10.4, 0.7, 12.2, 9.9, 7.9, 4.7, 6.2, 15.5)
    > fruits <- data.frame(cal, car, fat, pro, fib, sug)
    > result <- prcomp(fruits, center = T, scale. = T)
    > result
    
    Standard deviations (1, .., p=6):
    [1] 2.01314374 1.05853762 0.81088150 0.35447821 0.19925394 0.06216644
    
    Rotation (n x k) = (6 x 6):
               PC1         PC2         PC3         PC4          PC5        PC6
    cal  0.4497789  0.25668231  0.39132362 -0.13770784  0.172277348 -0.7280357
    car -0.1343382  0.86196398 -0.34816436  0.34088787  0.031790681 -0.0231893
    fat  0.4899044  0.06599968 -0.03435189 -0.04290641  0.718838104  0.4856835
    pro  0.4638167 -0.11821949  0.23112276  0.75978379 -0.345838088  0.1435447
    fib  0.4608776  0.27563218 -0.08775242 -0.53083464 -0.577034897  0.2986026
    sug -0.3348309  0.31117101  0.81446248 -0.06272348 -0.002897031  0.3518084
    
    > summary(result)
    Importance of components:
                              PC1    PC2    PC3     PC4     PC5     PC6
    Standard deviation     2.0131 1.0585 0.8109 0.35448 0.19925 0.06217
    Proportion of Variance 0.6755 0.1867 0.1096 0.02094 0.00662 0.00064
    Cumulative Proportion  0.6755 0.8622 0.9718 0.99274 0.99936 1.00000
    
    # PC1은 전체 데이터의 67.55%를 설명
    # PC1 하나의 누적 설명력은 67.55%
    # PC2는 전체 데이터의 18.67%를 설명
    # PC1, PC2 두 성분의 누적 설명력은 86.22%
    # 주성분의 개수는 전체 데이터의 70% 이상을 설명할 수 있도록 선택
    # 따라서 2개의 주성분으로 전체 데이터의 86.22%를 설명할 수 있기 때문에
    # 기존 6개의 변수로 설명하던 8개의 과일을 2개의 변수로 설명 가능

     

    ② 주성분분석#2 - scree plot ★★★

    - scree plot은 x축을 성분의 개수, y축을 고윳값으로 하는 그래프로 주성분의 개수를 선택하는 데 도움을 줌

    - 일반적으로 고윳값이 1 근처의 값을 갖는 주성분분석의 수를 결정 가능

    - 또 다른 방법으로는 그래프가 수평을 이루기 전 단계를 주성분의 수로 선택 가능

    > screeplot(result, type = 'lines')

    실행결과

    - # 만약 3과 4 사이의 선이 수평이 유지된다고 판단되면 주성분의 개수는 3개로 선택

    - # 만약 4와 5 사이의 선이 수평이 유지된다고 판단되면 주성분의 개수는 4개로 선택

     

    ③ 주성분분석#3 - biplot

    - biplot은 첫 번째 주성분과 두 번째 주성분을 축으로 하는 그래프

    - 다차원 척도법과 같이 주성분분석의 결과로 데이터가 어떻게 퍼져 있는지 시각화 가능

    > biplot(result)

    실행결과

    - # car, fat, pro, fib는 수평방향으로 뻗어 있기 때문에 PC1 값에 의해 영향을 받는 것을 알 수 있음

    - # car는 수직 방향으로 뻗어 있기 때문에 PC2에 의해 영향을 받는 것을 알 수 있음

    - # sug는 수평 방향이지만 비교적 짝은 길이를 가지고 있기 때문에 PC1, PC2에 의해 받는 영향이 상대적으로 적음

    - # 아보카도(2)는 풍부한 cal, fat, pro, fib 영양소를 가지고 있음을 알 수 있음

    - # 사과(1)는 풍부한 car를 가지고 있음을 알 수 있음

     

    + 차원의 저주

    - 일반적으로 고차원의 데이터일수록 데이터에 대한 설명력이 좋아질 것으로 생각한다. 그러나 그것은 데이터가 충분히 많은 경우에만 해당하며 그렇지 않은 경우에는 데이터 사이의 밀도가 감소하게 된다. 따라서 불충분한 데이터 수에 어울리지 않는 고차원의 데이터는 설명에 있어서 근거가 부족해지며 구축된 모델의 성능에 부정적인 결과를 가져온다.

     

    728x90
    반응형
Designed by Tistory.