삼성 SDS Brightics

[삼성 SDS Brightics] Brightics 개인 분석 프로젝트_서울시 골목상권 데이터분석_표준화(Normalization), 주성분분석(PCA)

Yeenn 2021. 10. 5. 00:50
728x90

 

안녕하세요 Brightics 서포터즈 yeenn입니다!

 

요즘 날씨가 점점 쌀쌀해지고 있는 것 같아요..!

이제는 밤에 얇은 이불을 끝까지 덮지 않고는 잘 수가 없는 날씨가 되어버린...

 

그래도 오랜만에 맑은 하늘에 시원한 바람을 맞을 수 있어서 

겨울이 조금은 천천히 왔으면..하고 있는 요즘입니다ㅎㅎ

 

 

 

지난 포스팅에서는 상관관계분석 모델링을 다루었었는데요, 

 

 

https://yeenn-db.tistory.com/37

 

[삼성 SDS Brightics] Brightics 개인 분석 프로젝트_서울시 골목상권 데이터분석_상관관계분석, Geocoder

안녕하세요! Brightics 서포터즈 yeenn입니다!! 벌써 개강한지 한 달이 다 되어간다는 사실이 믿기지 않는 것 같네요.. Brightics 서포터즈의 마지막 미션인 분석 프로젝트도 벌써 5주차에 접어들었습니

yeenn-db.tistory.com

 

 

이후 포스팅 내용을 보면 알겠지만, 바로 회귀분석에 들어가려고 했으나..

 

회귀모형 적합과정에서 발견한 다중공선성 문제를 해결하기 위한

사전단계인 표준화와 주성분분석을 수행하는 분석모델링을 먼저 진행하게 되었습니다!

 

 


 

 

회귀분석

 

회귀분석을 위한 Train set과 Test set을 나누기 위해

split 함수를 사용해 7:3으로 dataset을 나누어주었습니다.

(seed값은 1234로 고정)

 

 

Split 함수로 train/test set 분리

 

[상권]

 

 

[상권배후지]

 

 

 

 

 

Linear Regression Train 

 

그 다음, 회귀모형 적합을 위해 Linear Regression Train을 불러와, 상관관계분석에서 양의 상관관계를 보였던 51개의 Feature Columns를 추가한 후, 

 

다중공선성을 측정할 수 있는 옵션인 VIF를 True로 설정하였습니다!

(VIF>10일 때 True값이 출력됨)

 

 

[왼쪽부터 상권-상권배후지]

 

 

 

결과를 살펴보니, 결정계수 R과 수정결정계수 Adj.R이 높은 값을 나타내고 있었지만, 대다수의 변수에서 다중공선성 문제가 발생하는 것을 확인할 수 있었습니다. 

 

 

 

다중공선성 문제(MultiCollinearity)란?

회귀분석에서 설명변수들(독립변수)간 강한 상관관계가 나타날 때 발생하는 문제입니다.

주로 분산팽창요인인 VIF(Variance of Inflation Factor)을 구한 후, 이 값이 10이 넘는다면 다중공선성의 문제가 있는 것으로 진단을 하게 됩니다.

 

이러한 다중공선성 문제를 해결하는 방법에는 아래와 같은 방법이 있는데요, 

 

1. 변수 선택: 중복된 변수를 제거

2. 주성분분석: 중복된 변수를 변환하여 새로운 변수를 생성

3. 벌점화회귀(Ridge,Lasso,Elastic Net): 중복된 변수의 영향력을 일부만 사용

 

 

이번 회귀분석 모델링 과정에서는

주성분분석(PCA)를 이용하여 다중공선성 문제를 해결해보도록 하겠습니다!

 

 

 

 

PCA(Principal Component Analysis)

: 상관이 있는 변수들로 구성된 자료들을 이용하여 주성분으로 변환하는 통계적 방법

 

 

 


 

 

표준화(Normalization)

 

주성분분석을 위해서는 표준화(normalization) 단계를 거쳐야 합니다. 데이터의 분산은 변수들의 스케일에 의해 영향을 많이 받는데요, 

각 변수가 차지하는 데이터의 분산을 이용하여 새로운 변수를 만들어내는 주성분분석의 경우,

변수 스케일을 조정하는 작업이 반드시 필요합니다! 

 

변수들의 스케일이 거의 비슷한 경우라면 스케일링 조정 작업을 생략해도 괜찮지만, 

현재 분석에 사용하는 변수들을 살펴보면 한 자리-두 자릿수 대의 '건수' 변수들과 높은 '금액' 변수들이 혼재되어 있어 스케일링 조정 작업이 필요하다고 판단되었습니다. 

 

 

 

[상권]

 

Normalization Type 항목을 살펴보면,

-MinMaxScaler

-StandardScaler

-MaxAbsScaler

-RobustScaler

와 같은 4가지의 표준화 유형을 확인할 수 있는데요,

 

각 유형에 대한 자세한 설명을 살펴보기 위해 

 

Normalization 옆의 (?) 버튼(information) 을 눌러보았습니다!

 

 

(막간의 꿀tip!)

Brightics 내장 함수들을 사용하면서 혹시라도 모르는 함수블럭의 기능에 대해 자세히 알고 싶다!

하시는 분들은 이 information 버튼을 클릭해보시면 많은 도움이 될거에요bb

 

 

 

 

일반적으로는 표준화시

평균을 빼고 표준편차를 나누어주는 z score 계산 방식인 StandardScaler을 자주 이용하는데요, 

저 또한 StandardScaler로 normalization type을 지정해주었습니다.

 

 

 

[상권배후지]

 

Normalization Model을 사용하여 앞서 상권 데이터에서 활용한 표준화과정을 수행해주었습니다!

 

 

저도 이번에 ProDS 시험을 준비하면서 알게된 기능인데요, 

'Model'로 함수 검색을 해보시면, 앞서 활용한 함수블록의 파라미터를 다시 재설정하지 않고 그대로 사용할 수 있도록 모델화하여 사용할 수 있는 다양한 함수들을 확인할 수 있습니다!

 

 

물론 함수 블록을 복제하여 활용해도 되지만, 복제를 해도 파라미터의 일부를 재설정 해야하는 경우가 정말 많기 때문에 굉장히 유용한 기능일 것이라고 생각합니다! :)

 

 

앞서 활용한 함수블록 / 이어 붙일 다음 함수 블록 을 연결한 다음, Run을 누르면 됩니다!

저는 앞의 상권 데이터의 Normalization 함수블록과 상권배후지 데이터의 이전 함수블록을 연결시켜주었습니다.

 

 

 

 

 

 

주성분분석(PCA)

 

그 다음은, 상권 데이터와 상권배후지 데이터 모두

PCA를 이용하여 표준화된 변수로 주성분분석을 수행했습니다!

 

 

Input Columns에서는 상관관계분석에서 살펴본 51개의 설명변수들을 모두 넣고, 

Number of Components에는 축소하고자 하는 변수의 개수인 5개로 지정해주었습니다.

 

 

따로 지정하지 않는다면, 기본적으로 주성분은 사용하는 변수의 개수만큼 만들어지게 됩니다. 

PCA를 수행하기 위해서는 SVD를 이용한 행렬연산이 필요한데, SVD Solver 옵션은 어떤 행렬연산 방법을 이용할 것인가에 대한 내용이기 때문에, 기본값인 Auto로 값을 지정해주었습니다. 

 

 

Seed는 역시 1234로 고정해주었습니다!

 

 

 

 

[상권]

 

 

[상권배후지]

 

결과 화면에서 'model' 탭을 클릭하면 자세한 분석 결과를 확인할 수 있는데요, 

Plot은 기존 변수의 조합으로 만들어진 새로운 주성분 projected_0, projected_1이 어떤 가중치로 변수들이 조합되었는가에 대한 정보를 보여줍니다.

 

기존의 변수의 개수가 52개로 많았기 때문에 상당히 복잡한 산점도의 양상을 보이고 있죠?

 

 

 

 

 

[상권]

 

Explained Variance각 주성분이 데이터의 정보를 얼마나 담고 있는지를 보여주는데요,

Explained Variance의 값이 클수록 데이터의 정보를 많이 가지고 있다는 것을 의미하고, 그 수준이 급격하게 변하는 수준으로 절사하여 데이터의 차원축소에 이용하게 됩니다. 

 

 

 

[상권배후지]

 

* explained_variance_ratio = 전체 데이터의 정보를 1로 나타냈을 때 각 주성분이 차지하는 정보

(ex. 상권배후지 data-첫 번째 주성분은 약 58%의 정보를 가지고 있다.)

 

 

 

이렇게 회귀분석을 위한 표준화와 주성분 분석 작업을 마쳤는데요, 

다음 포스팅에서는 이를 바탕으로 다중회귀분석을 진행하고, geo코딩을 위한 준비를 조금씩 진행해볼 예정입니다!

 

 

Brightics로 진행하는 서울시 골목상권 데이터 분석 프로젝트!

끝까지 잘 지켜봐주세요!!

 


 

-본 게시물은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.

 

 

 

 

728x90