삼성SDS Brightics

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

해붕 2021. 6. 11. 16:58
반응형

안녕하세요 §(* ̄▽ ̄*)§

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

6월 10일 발대식이 진행되고 진행 하는 본격적인 개인 미션입니다 ㅎㅎ

발대식 후기는 기말시험끝나고 자세하게 포스팅하겠습니다. (벼락치기하느라 죽을 것 같아요,,,😨)

먼저 궁금하신 분은 삼성 SDS 뉴스룸을 참고해주세요!

https://www.samsungsds.com/kr/news/Brightics_210610.html?moreCnt=1&backTypeId=media&category=all

 

삼성SDS, Brightics AI로 대학생 데이터 분석 전문가 양성한다

삼성SDS, Brightics AI로 대학생 데이터 분석 전문가 양성한다

www.samsungsds.com

기사가 수십 개가 올라오네요... (역시 삼성은... 엄청나다는 것을 또 깨닫네요)

 


먼저, 첫 번째 개인 미션을 진행하기 앞서

어떠한 데이터셋을 가지고, 어떻게 모델을 구현할까 생각을 해봤습니다.

1. 첫 미션이니 나에게 친숙한 데이터셋을 활용해보자.

2. 공공데이터셋이여야 한다.

3. 결과물이 확실한 데이터셋을 활용하자.

이정도의 조건을 가지고 데이터셋을 고르게 되었습니다.

처음부터 새로운 주제로 접근하기 보다는, 저에게 친숙한 데이터셋과 모델을 가지고 진행는 것이 좋을 것 같아서

"NASA에서 제공하는 Bearing Dataset을 Brightics를 활용하여 Anomaly Detection을 진행해보자!"

라고 정하게 되었습니다.

아무래도 NASA Bearing Dataset을 활용하여 공모전도 나가보고, 연구단에서도 활용 중이기에

제가 경험한 python으로의 모델 구현과 Brightics를 이용한 모델 구현이 직접적으로 비교가 될 것 같기에

진행하게 되었습니다.

* python으로 NASA Bearing Dataset을 가지고 Anomaly Detection 하는 과정을 블로그에 올려놨으니

참고하면서 보시면 좋을 거 같습니다.

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

 

[Anomaly Detection] 데이터 전처리

최근 이것저것 준비하느라 저어어어어어엉말 바빴다,, 중간고사 끝나니까 더 바빠져서 쉬지도 못하고 😂...

blog.naver.com

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

 

[Anomaly Detection] PCA

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

blog.naver.com

 


1. 데이터셋

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

먼저, 어떤 데이터셋을 가지고 활용하려 하는 지 살펴보겠습니다.

저는 NASA에서 공개한 Bearing Dataset을 활용하려고 합니다.

https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/

 

Prognostics Center of Excellence - Data Repository

Prognostics Center of Excellence PCoE Datasets Overview The Prognostics Data Repository is a collection of data sets that have been donated by various universities, agencies, or companies. The data repository focuses exclusively on prognostic data sets, i.

ti.arc.nasa.gov

 

홈페이지 들어가시면

4번 Bearing Data Set을 제공하고, 물론 다운로드도 가능합니다.

이 데이터셋 가지고 아주 많은 논문들도 나왔고,

저희 교수님께서는 데이터셋의 교과서(?) 중 하나이다....라고 말씀하신 유명한 데이터셋입니다.

데이터셋 내용에 대해 살펴볼까요~~?

압축을 풀면 Readme라는 이름의 pdf 파일을 찾을 수 있고, 이는 데이터셋에 대한 설명이 담긴 파일입니다.

요약하자면

이렇게 생긴 기계에서 4개의 Bearing이 작동합니다.

Bearing이란 회전하고 있는 기계의 축(軸)을 일정한 위치에 고정시키고 축의 자중과 축에 걸리는 하중을 지지하면서 축을 회전시키는 역할을 하는 기계요소 라고 합니다. (기계는 어려워... ☹)

이 데이터셋은 내부 총 3개의 데이터셋으로 다시 나뉩니다.

Dataset No.1 : 4개의 베어링 , 각각 2개의 x,y축의 가속도계

Dataset No. 2,3 : 4개의 베어링, 각각 1개의 가속도계

를 구성하고 있습니다.


Dataset No.1:

- 2003.10.22~2003.11.25 까지 측정

- 2156개의 파일

- 8개의 채널(4개의 베어링, 각 베어링 당 2개의 가속도계)

- 베어링 1: 1,2채널 베어링 2: 3,4채널 베어링 3: 5,6채널 베어링 4: 7,8채널

- 10분마다 최신화

- 마지막에는 베어링 3, 베어링 4 가 완전히 고장나는 구조

- 데이터셋을 열어보시면 날짜가 제목이고 10분 간격으로 측정된 txt 파일을 확인할 수 있습니다.

 

- 좌측부터 Bearing 1의 x축, y축, Bearing 2의 x축, y축 .....해서 8개의 column을 가지고 있음을 확인할 수 있습니다.


Dataset No.2:

- 2004.02.12~2004.02.19 까지 측정

- 984개 파일

- 4개 채널(4개의 베어링, 각 1개의 가속도계)

- 베어링 1: 채널 1, 베어링 2: 채널 2, 베어링 3: 채널 3, 베어링 4: 채널 4

- 10분마다 기록

- 결국 베어링 1에서 완전히 고장나는 데이터셋

- 이 데이터도 마찬가지로 날짜가 제목이고 10분 간격으로 측정된 데이터를 확인할 수 있습니다.

 

- Dataset 1과는 다르게 4개의 column으로 구성되어 있는데, 이는 위에 명시했듯이 각 베어링 당 하나의 가속도계만을 사용해서입니다.

* 데이터셋에 대한 이해도 굉장히 중요하기에 자세하게 적었습니다.

* Dataset No.3는 데이터 자체에도 문제가 있고, 활용할 계획이 없어 설명하지 않았습니다.

 


2. 데이터셋 전처리

여기까지 다운로드하는 것은 전혀 문제가 없습니다.

이제 이 데이터를 어떻게 합치고,,,, 올리고,,,, 여기부터가 진짜 문제인데요..

Load하는 과정에서 1기 서포터즈 분들 블로그를 많이 찾아봤는데

다들 공통적으로 하시는 말씀이

Load가 반이다....

https://blog.naver.com/eunsol0617/222090502318

저는 Dataset No. 2를 활용할 계획입니다.

왜냐하면, 데이터셋 1에 비해 크기가 작고 8개의 column까지는 필요없을 것 같았습니다.

먼저, 위 데이터셋을 간단하게 요약해보자면

1. 시간이 제목인 엄청난 양의 txt 파일이 있다. (데이터셋 2번에는 약 1000개의 파일)

2. 한 txt파일 안에 (20000 row X 4 column)이 있다.

3. 즉 모든 데이터의 양은 (1000 file X 20000 row X 4 column) = 80,000,000개의 데이터다.

8천만개의 데이터가 과연 빅데이터 분석에서 아주 많은 양인가 하면 그렇다고 하기 애매하지만,,,

적은 숫자는 아니기에 두 가지 방법을 생각했습니다.


1) 1000개 파일을 하나의 txt파일로 다 합치기...

저는 이 과정을 Brightics로 하려고 했는데,

구글 및 네이버에 'Brightics 한꺼번에 load' 등을 검색해봤더니

https://github.com/brightics/studio/issues/642

다량의 파일을 한 번에 올리는 기능은 없다기에

python script를 이용해서 한번에 load하기를 구현해보려 했으나,,,,

미숙한 제 실력으로 이를 실패하고

python으로 따로 파일을 합치게 되었습니다.

* 든든한 저희 2팀 멘토님께 이 과정에 대해 여쭤보고 다음 포스팅에 알려드리겠습니다!! (든든하다,,,,,,,,,,,,,,,)

여러 개의 txt 파일을 하나로 합치는 과정은

https://bhban.tistory.com/49

 

수 천 개의 텍스트 파일을 1초 안에 합쳐 보자 (2)

  이 글은 이전 강좌에서 못다 한 과제를 마저 수행하기 위한 강좌입니다. 이전 강좌를 읽고 오시는 것을 추천합니다. https://bhban.tistory.com/48   자, 이제 personal_info 폴더 안에는 2천 개의 가짜 개

bhban.tistory.com

이 코드를 활용했고 제가 한 과정을 보여드리겠습니다.


Colab에서 작성하였고,

- directory: bearing dataset이 저장되어 있는 구글 드라이브 주소

- outfile_name : 저장하고자 하는 파일 이름

을 지정하고 돌려본 결과

1000개의 텍스트 파일을 하나의 텍스트 파일로 합친 merged.39를 만들 수 있었습니다.

문제는.........................

8천만개의 데이터가 담긴 메모장을 작은 콤퓨타가 감당을 못합니다................

결론: 이 방법은 안되겠다...😂


2) 한 개의 파일 데이터를 압축하기

- 데이터셋 한 열을 절댓값 내고 평균 내기

- 이렇게 되면,,, 1000개 파일 X 4개의 열 = 4000개로 줄일 수 있지 않을까..?라는 생각으로 진행해봤습니다,

- dataset_mean_abs로 절댓값의 평균을 내줍니다.

- 이 후 새로운 merged_data에 넣어주는 과정입니다.

- index를 시간으로 설정해주는 작업입니다.

- 이렇게 해서 만든 새로운 파일을 새로운 이름의 csv 파일로 저장합니다.

그렇게 해서 나온 게 바로...

- index는 시간이고

- 4개의 column으로 요약(?)한 데이터입니다.

- 이는 984개의 row로 구성되어 있습니다. (처음에 말한 약 1000개의 파일이 row로 들어간 모습)


3. Dataset Load

이제서야 드디어 데이터셋을 Brightics로 Load 할 수 있게 되었습니다.

- 귀여운 Load 버튼을 눌러줍니다. (벌써 익숙하시죠..?ㅎㅎ)

- Local에서 파일 불러오기

- Column name에 공백이 있기에 수정해줍니다.

- 하이라이트 친 과정을 통해 열이름을 수정할 수 있습니다.


- Table로 데이터셋을 시각화한 모습입니다.

 

- X축과 Y축의 변수만 넣어주면 Line Graph로 시각화 해주는 모습입니다... 😦

- 이렇게 쉽게 시각화 시켜주다니,,, 놀라워요,,, (감동의 쓰나미)

- 제목부터 Legend, Style 등 사용자가 직관적으로 변화를 바라보며 설정할 수 있다.


cf) python으로 그래프 시각화까지 하는 과정과 비교해볼까요~~?

이렇게 일일이 다 타이핑하고

이름 지정해주고,,,

제목, 열 이름, 색깔, 선 굵기 등 일일이 설정해줘야 하는

python에 비해 확실히 간단한 구동 과정을 살펴볼 수 있죠?!


이번 미션을 진행하며 간단하게 느낀 점:

1. Brightics에서 여러 파일을 한꺼번에 올릴 수 있는지 알아보기

2. Brightics에서 python을 직접적으로 이용하여 위와 같은 과정을 수행할 수 있는지 알아보기

3. 역시 데이터 분석 플랫폼 답게 python에 비해 구동이 훨씬 간단하다. (x축, y축 설정 등)

4. 표, graph 뿐만 아니라 box plot 등 32개의 시각화 툴을 이용하면 자신이 원하는 그림을 얼마든지 시각화할 수 있다..!

5. python에서는 직접 타이핑하고 구동해서 변화확인하고 하는 번거로운 과정없이 직관적으로 사용자가 조작할 수 있다.

이러한 장점으로 보면 코딩에 대해 어려움을 느끼고

긴 코드를 보면 살짝 속이 메스꺼운 분들에게는 최적화된 플랫폼이 아닌가 생각이 드네요..😁

또, 어느 정도 Brightics에서 처리하기 어려운 부분은 python 등을 활용하여 해결하고

모델 구동이나 시각화를 할 때에는 Brightics Studio를 활용하는 것도 하나의 방법이 될 것 같습니다!


오늘은 미션을 위해 적합한 데이터셋을 선정하고

Brightics에서 활용할 수 있게 전처리하고, load하는 과정까지 살펴보았습니다.

최근 삼성SDS 유튜브를 비롯해서 데이터 사이언스관련 유튜브를 많이 보고 있는데,

데이터 모델 구동도 구동이지만

데이터 전처리가 90% 차지한다고 말씀하실 만큼 전처리 과정을 강조하는 것을 많이 보고 있습니다.

아무래도 실무에서는 학교나 이렇게 실습할 때처럼 이쁜 데이터셋을 가지고 업무에 도입하는 것이 아니기에

데이터셋을 먼저 알맞게 처리해주는 것이 중요하다는 것인데요.

위에서 본 것처럼 데이터셋을 환경에 알맞게 바꿔주는 시행착오를 겪으며 성장하고 있다고 생각합니다 ㅎㅎ😀

다음 시간에는 본격적인 방학에 도입하기에 더 재밌는 컨텐츠를 가지고 돌아오겠습니다 💙

긴 글 읽어주셔서 감사합니다.


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

 

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