삼성SDS Brightics

[Brightics Studio] 개인 미션 1-2. 데이터 전처리 (이렇게 쉽게 데이터 확인과 주성분 분석이 가능하다니 😮)

해붕 2021. 6. 22. 10:40
반응형

안녕하세요 ヽ(≧□≦)ノ

Brightics 서포터즈 2기 정해웅입니다.

지난 주에는 데이터 수집 및 Load을 살펴봤었죠?

기억 안 나시는 분들을 위해!

https://blog.naver.com/mbmb7777/222394153391

 

[Brightics Studio] 개인 미션 1-1. 데이터 Load (Load가 반이다...)

안녕하세요 §(* ̄▽ ̄*)§ Brightics 서포터즈 2기 정해웅입니다 😀 6월 10일 발대식이 진행되고 진행 하...

blog.naver.com

오늘은 이 Bearing Dataset을 가지고, 정규화 및 차원 축소을

Brightics Studio를 활용하여 아~~~주 간편하게 할 수 있는 법을 알려드리겠습니다 !

기대되시죠 ☺

그럼 본격적으로 시작해볼까요?


1. 데이터 개요 확인

Brightics에는 Load한 데이터의 개요를 확인할 수 있는 기능이 있습니다.

바로 <Profile Table> 기능인데요.

한번 연결해볼까요??

Load한 원본 Bearing Dataset을 다시 한 번 살펴보면

이렇게 시간, Bearing 1,2,3,4 열로 이루어진 것을 다시 한 번 상기시킨 상태로 overview를 살펴보겠습니다.

Dataset에 대한 전반적인 정보가 담겨있습니다.

- Number of Variables: 변수 개수 5개

- Number of observarions: 행의 수가 984개임을 전 게시물에서 확인

- Total Missing: 비어있는 데이터 비율(결측치)

등의 정보를 확인할 수 있습니다.

이제 각 변수들의 구체적인 개요를 살펴보겠습니다.

Bearing 1에 대해서만 살펴보자면

보시다시피 984개의 행, Mean(평균), Minimum, Maximum 값들이 나와있는 것을 보실 수 있습니다.

Toggle details를 누르면 더 자세한 정보를 살펴볼 수 있습니다.

여기서 좌측 Quantile statistics, 즉 사분위수 관련 여러 변수 값들도 확인할 수 있고

우측 Descriptive statistics에서는 Standard deviation(표준편차)를 비롯하여 Mean(평균), MAD(평균절대오차) 등

파이썬에서는 함수 호출을 통해 볼 수 있었던 다양한 통계 값들이 한 눈에 확인할 수 있습니다!

정말 놀랍지 않나요?

이 뿐만 아니라

히스토그램을 통해 변수값의 추이를 한 눈에 살펴볼 수 있으며

최대, 최소값의 최상위 5개 데이터를 보여주는 기능도 제공하고 있습니다.

위의 Variable에서 Mean과 Maximum, Minimum을 확인할 때와 동일한 최대 최소값을 보임을 확인할 수 있습니다.

이렇게 본격적인 데이터 모델링에 앞서

Load한 데이터의 전체적인 개요를 볼 수 있는 아주 유용한 기능입니다!

Brightics만의 시각화 기능 + 전체적인 흐름 파악

다시 한 번 놀라고 갑니다 😮


2. Normalization (정규화)

https://blog.naver.com/jaeyoon_95/222360436163

https://soo-jjeong.tistory.com/123

Normalization(정규화)란 무엇이며, 왜 사용하는 것 일까요?

평소 데이터 분석이나 ML에 대해 공부하다 보면 정규화, 표준화와 용어를 접하게 될 것입니다.

저도 사실 모호하게만 알고 언제 한 번은 제대로 알아봐야겠다고 생각을 하던 와중이였고,

이번 기회에 확실하게 정리해보려고 합니다!

 

  Normalization(정규화) Standardization(표준화)
공통점 데이터 rescaling (특성들의 단위를 무시할 수 있도록)
정의 다양한 데이터의 범위를 0~1로 변환 평균이 0, 분산이 1이 되도록 변환
목적 데이터의 상대적 크기에 대한 영향 줄이기 위해 데이터가 평균으로부터 얼마나 떨어져 있나 파악하기 위해, 특정 범위 벗어나면 outlier로 간주
특징 0~1로 줄임으로써 가중치 값에 대한 차이를 줄일 수 있다 ->
더 빠른 학습 가능
z-score와 같은 개념 -> 이상치를 걸러낼 수 있음

조금 개념이 잡히시나요?

정규화와 표준화 중 무엇이 더 낫냐라고 따졌을 때는 둘 다 해보는 게 정답이라고 합니다.

정규화, 표준화를 거치지 않고 모델 학습을 돌렸을 때는

결과값에 큰 차이를 보이니

전처리 과정에서 정규화, 표준화를 필수적으로 하는 것이 좋겠죠?

개념을 살펴봤으니

이제 저희 Bearing Dataset을 가지고 Normalization(정규화)하는 과정을 살펴보겠습니다.


먼저 Load와 Normalization을 이어줍니다.

이후 정규화 할 Column을 고르고

어떤 Type으로 정규화할 지 고르는 과정을 거치게 됩니다.

MinMaxScaler뿐만 아니라 StandardScaler를 포함한 3개의 다른 정규화 방식이 나와있는데,

뭐가 뭔지 모르겠다?

이럴땐

물음표 버튼을 살포시 눌러줍니다.

Brightics의 도움말 웹으로 이동하게 되는데,

웬만한 기능들은 물음표를 누르면 친절하게 설명이 나와 있기에 모르는 부분이 있어도

살펴보며 넘어갈 수 있는 것 같아 좋습니다!

이렇게 다른 타입의 정규화는 어떤 feature를 어떠한 방식으로 계산하는지 확인할 수 있습니다.

저희는 MinMaxScaler를 통해 정규화하겠습니다.

Table을 통해 각 column 별로 0과 1사이로 정규화한 4개의 열이 새로 생긴 것을 확인할 수 있습니다.

잠깐 파이썬을 통한 구현과 비교해볼까요?

from sklearn import preprocessing from sklearn.preprocessing import MinMaxScaler # normalization scaler = MinMaxScaler() X_train = scaler.fit_transform(train) X_test = scaler.transform(test) scaler_filename = "scaler_data" joblib.dump(scaler, scaler_filename)

중간 과정은 생략하고 정규화 부분만 구현하고자 할 때,

파이썬에서는 이렇게 sklearn과 같은 라이브러리에서 모듈을 import하고 그 중 또 MinMaxScaler 모듈을 불러와야 합니다.

물론, python을 통달하신 분은 모듈과 코드를 다 외우셨을 지도 모르겠지만,,,,

그렇지 않다면 책이나 인터넷에서 코드를 가져와야합니다 ㅠㅠ....

그러나!!!!!!!!

Brightics에서는 드래그 앤 드롭 몇 번만으로 간편하게 정규화해주는 모습을 보여줍니다.


3. PCA(주성분 분석)

https://blog.naver.com/mbmb7777/222356672936

PCA에 대해서는 python을 이용하여 자세하게 다뤄본 경험이 있기에

개별적인 데이터를 가지고 outlier 모델을 적용하기 보다는

PCA를 통해 하나의 데이터로 압축시켜 적용해보는 것이 비교하기에 더 좋을 것 같아 진행하게 되었습니다.

PCA도 개념부터 알고 가는 것이 좋겠죠?

PCA(주성분 분석)
정의 고차원의 데이터를 적은 수의 변수로 축약하는 데이터 기법
기대 효과 - 실무에서 사용하는 데이터는 feature가 너무 많음 -> ML이나 데이터 분석 시 학습속도 느리고 성능 저하(그 유명한 '차원의 저주')
- 많은 변수의 숫자를 손쉽게 줄일 수 있음
- 모델 정확도나 직관성을 높여 유의미한 결과 도출

특히 PCA는 데이터의 가장 가까운 초평면을 찾은 후 투영시키는데

그림과 같이 3차원의 데이터가 2차원으로 투영(projection)되는 것과 같은 원리입니다.

이제 4개의 Bearing 을 하나의 변수로 PCA 해보겠습니다.


정규화한 데이터를 PCA와 연결시켜줍니다.

변환하고자 하는 Column을 선택 후, 몇 개의 성분으로 줄일 것인지 선택할 수 있습니다.

저는 하나의 데이터로 축소시키고 싶기에 1을 입력했습니다.

테이블로 확인하니

projected_0이라는 열이 생성되었음을 확인할 수 있습니다.

이를 그래프로 표현해볼까요?

Chart Setting에 들어가

Chart Type Line을 골라주시고

X축은 시간, Y축은 PCA를 돌린 결과값인 projected_0 열을 선택합니다.

아름다운 하나의 곡선으로 나타난 것을 볼 수 있습니다!

 

좌: 기존 데이터, 우: PCA 거쳐 하나의 성분으로 차원 축소

기존 4개의 Bearing data가 이렇게 쉽게 투영과정을 거쳐 하나의 데이터로 합쳐진 것을 확인할 수 있습니다.

정말 놀랍네요 😮

과연 python으로 PCA를 구현하려 했다면 어떤 과정을 거쳐야 했을까요?

가볍게 살펴보겠습니다.

먼저 PCA를 python으로 구현하려면

모듈 import부터 시작해서 Mahalanobis 거리 계산 함수 정의, 거리 비교 등 굉장히 복잡한 과정을 거치게 됩니다.

일부 코드만 보여드리자면

from sklearn.decomposition import PCA pca = PCA(n_components=2, svd_solver= 'full') X_train_PCA = pca.fit_transform(X_train) X_train_PCA = pd.DataFrame(X_train_PCA) X_train_PCA.index = X_train.index X_test_PCA = pca.transform(X_test) X_test_PCA = pd.DataFrame(X_test_PCA) X_test_PCA.index = X_test.index # Mahalanobis 거리 정의 def MahalanobisDist(inv_cov_matrix, mean_distr, data, verbose=False): inv_covariance_matrix = inv_cov_matrix vars_mean = mean_distr diff = data - vars_mean md = [] for i in range(len(diff)): md.append(np.sqrt(diff[i].dot(inv_covariance_matrix).dot(diff[i]))) return md

일부만 보여드렸는데도 정말 복잡해보이지 않나요?


이렇게해서 데이터 Overview 미리 훔쳐보기, 정규화, PCA 까지 데이터 전처리 과정에 대한

개념과 Brightics에서의 적용, 두 마리 토끼를 잡아봤습니다.

Brightics와 python을 비교하며 작성하다보니

새삼 Brightics와 같은 데이터 분석 툴이 얼마나 사용자 입장에서 편하게 만들어졌는지 느끼게 되었는데요.

Bearing Dataset을 python을 통해 PCA로 이상치 탐지 하는 과정을 더 자세하게 살펴보고 싶으시다면

https://blog.naver.com/mbmb7777/222356672936

 

[Anomaly Detection] PCA

1. 모델 비교 (1) 모델 선택 기준 - ML/DL 선택 뿐 아니라, 비지도/지도 학습까지 굉장히 다양한 모델...

blog.naver.com

이 게시물을 참고하신다면 좋을 것 같습니다.​

 

정규화부터 시작해서 PCA 까지 데이터 분석에 관심있으신 분들은 누구나 한 번쯤 들어봤을 용어들인데,

위에서 보셨다시피 삼성SDS만의 비장의 무기 Brightics Studio를 활용하신다면

클릭 몇 번만으로 손쉽게 분석이 가능합니다.

python, 더 이상 팔 아프시지 않나요?😶

(저는 아파요,,)

그렇다면 Brightics Studio를 검색해보세요!!

이 포스팅을 보신다면 데이터 분석에 조금이나마 도움이 되셨으면 좋겠습니다!

다음은 바로 이어서 PCA로 압축한 데이터의 이상치를 판별하는 과정을 이어가겠습니다.

* Brightics 서포터즈 활동의 일환으로 작성된 포스팅입니다.

#삼성SDS #브라이틱스 #브라이틱스서포터즈 #AI #분석플랫폼 #분석프로그램 #데이터분석 #빅데이터 #인공지능 #SamsungSDS #초보자분석 #분석초보 #코딩 #코딩초보 #통계 #데이터사이언스 #Python #R #SQL #Scala #분석툴 #BrighticsAI #BrighticsStudio #브라이틱스스튜디오 #Brightics #대외활동 #대학생 #대학생대외활동 #삼성SDSBrightics #모델링