본문 바로가기
Data Science

[Data Science]데이터 사이언스란

by NoiB 2022. 11. 11.
반응형

이번 포스팅은 제목과 같이 데이터 사이언스에 대해서 한 번 얘기를 해볼까 합니다.

Data Science(데이터 과학)

데이터 사이언스, 사실 제가 고등학생 때만 해도 점점 이런 인공지능과 관련된 분야의 얘기들이 들리기 시작했습니다. 현재에 와서는 대학에서도 많은 데이터 분야 전공이나 인공지능 관련 전공들이 신설되면서 확실히 현대 사회에서 가장 핫한 이슈들 중 하나임에는 다들 이견이 없으실 것 같습니다.

 

 

그렇다면 데이터 사이언스는 뭘까요? 직역하자면 자료 과학인데 과학은 과학인데 자료를 모아서 하는 과학인가? 뭔가 와닿지 않는 느낌인데요. 위키백과에 따르면 '데이터 마이닝(Data Mining)과 유사하게 정형, 비정형 형태를 포함한 다양한 데이터로부터 지식과 인사이트를 추출하는데 과학적 방법론, 프로세스, 알고리즘, 시스템을 동원하는 융합분야다.' 라고 쓰여있습니다. 이것도 사실 조금 난해하지만 요는, 데이터를 이용해서 인사이트를 도출하는데 과학적인 방법을 사용하는 분야다 정도로 알고 계셔도 괜찮을 것 같습니다.

 

그렇다면 데이터 사이언스는 왜 필요할까요? 혹은 데이터 사이언스를 왜 공부해야 할까요? 사실 간단하게 해당 내용을 정리하기는 조금 어려울 것 같습니다. 예시를 드는 게 이해가 수월할 것 같은데요. 현대의 사람은 그 어떤 물체도 다른 사람의 도움도 없이 오로지 자신의 몸 하나만 가지고 하늘을 날 수 있을까요? 당연히 불가능할 겁니다. 애초에 신체가 날 수 있도록 구성이 되어있지 않기 때문이죠.

 

그렇다면 우리는 어떻게 '사람이 날 수 없다' 라고 말할 수 있었을까요? 우선적으로는 경험이 있을 것입니다. 아무리 높이 뛰어도, 도움닫기를 아무리 해도 우리는 날 수 없다는 것을 경험으로 알 수 있죠. 그런데 이 경험만 가지고는 사람이 날 수 없다고 단정 지을 순 없죠. 단순하게 나만 못하는 것일 수도 있으니까요. 그다음으로는 다른 사람들의 경험을 들어볼 수 있을 것입니다. 나는 아무리 해도 못 날겠던데 너는 할 수 있냐? 그렇게 여러 사람들에게 물어봤지만 다들 못한다는 정보를 얻을 수 있었습니다. 하지만 아직 못난다고 확정 지을 순 없죠. 사람의 신체가 날 수 있는 조건을 지녔지만 아주 운이 안 좋게도 나와 내 주변 사람들이 그 방법을 모르는 것일 수도 있으니까요. 그래서 진짜로 사람의 신체로 날 수 있을지에 대해서 과학적인 해석을 해보기로 했습니다. 이리저리 따져봐도 사람은 날아오르는 데 사용할 수 있는 기관들이 다 기준 미달이었습니다. 표면적에 비해서 무겁고, 충분한 양력을 얻을 만큼 빠르게 달리지도 못하고, 몸을 띄울 만큼 힘차게 팔을 휘저을 수도 없고 등등 과학적으로 사람은 자기 자신의 신체만 가지고는 날 수 없다는 증명을 해냈습니다. 즉, 세상 모든 사람은(인간이라는 종이 모두 비슷한 형태라는 가정하에) 날 수 없다는 것을 알게 된 것이죠.

 

사람은 날 수 있을까
나의 경험 못 날겠던데? -> 다른 사람들 한테도 물어보자
다른 사람들의 경험 못 날겠던데? -> 사람이 날 수 있는데 우리만 지금 못하는거냐?
과학적인 계산 아 이거 안되네 -> 사람은 몸만 가지고는 날 수 없구나~

 

 

아니, 왠종일 사람이 나니 어쩌니 하는 소리를 왜 하고 있나 싶으실 겁니다. 다시 처음 얘기했던 데이터 사이언스가 왜 필요한지에 대해서 얘기를 해보도록 하죠. 우리는 나와 내 주변의 경험과 과학적인 해석을 바탕으로 사람은 날 수 없다는 지식을 도출해냈습니다. 즉, 데이터를 통해서 어떤 결론을 도출해냈다는 것이죠. 이 결론을 통해서 우리는 날기 위해 죽어라 팔을 휘저을 필요가 없어졌습니다. 내 몸만 가지고는 못나는 게 확실해졌으니까 날기 위해서는 다른 방법을 찾아야겠죠.

 

이 글을 보면서 '아니 이걸 이렇게까지 해봐야 아나? 그냥 팔 몇 번 휘둘러보면 택도 없다는 거 다 알지 않나?' 라는 생각이 드신 분들도 있을 것 같습니다. 사실 위 문제 같은 경우는 이런 식으로 안 따져봐도 알 수 있겠죠. 하지만 세상에는 이런 간단한 문제만 있는 것이 아닙니다. 기업에서 어떤 사업을 진행해야 하는데 수익이 나기 위해서 시간과 자본을 아주 오랫동안 투자해야 하는 경우는 어떨까요? 몇 달, 몇 년 해보고 안 되겠다 포기하자 할 수 있을까요? 석유 시추 사업을 예로 들어볼까요? 내가 파는 땅마다 석유가 풍부하게 매장이 되어있다면 금방 떼부자가 될 수 있을 겁니다. 하지만 세상은 그렇지 않죠. 거기다 1~2미터 판다고 석유가 나오는 것도 아닙니다.

 

저는 '데이터는 정보이고 시간이다' 라고 생각합니다. 미리 여러가지 데이터를 통해서 해당 위치의 석유 매장량을 추측한 다음에 사업을 시작하면 실패 확률을 엄청나게 줄일 수 있겠죠. 또는 시추를 통해 얻을 수익과 시추를 위해 필요한 지출을 계산해서 손해라면 사업 자체를 시작하지 않고 돈을 세이브할 수도 있을 것입니다. 이처럼 어떤 일을 할 때 데이터를 기반으로 계획을 수립하고 진행한다면 불필요한 시간 및 자본 낭비를 하지 않을 수 있습니다. 이러한 점에서 미루어 볼 때 데이터 사이언스의 필요성은 말하기에 입만 아프다라고도 할 수 있겠습니다.

 

데이터 분석과 데이터 사이언스

 

데이터 계통의 직무에 대해서 찾다보면 흔히 보이는 게 DS(Data Scientist : 데이터 과학자), DA(Data Analyst : 데이터 분석가), DE(Data Engineer : 데이터 공학자)입니다. 데이터 엔지니어는 데이터를 가지고 공학적으로 접근해서 뭔가를 만드는 사람이겠거니 싶은데, 데이터 사이언티스트랑 애널리스트의 차이는 뭐지? 데이터 사이언스를 위해서 데이터 분석은 필수 아닌가? 하는 생각이 드는 분들도 있을 것 같습니다. 저도 그랬고요.

 

사실 데이터 과학과 데이터 분석은 상당히 많은 부분에서 개념과 활용방법이 비슷하다고 합니다. 굳이 따지자면 데이터 과학이 좀 더 포괄적인 의미를 갖고 있다고는 합니다. 이름만 들어도 데이터 과학을 위해서 데이터 분석은 필수적이라고 볼 수 있겠죠. 데이터 과학은 데이터 분석을 하고 그 분석으로부터 인사이트를 도출하는 과정이 추가적으로 이루어져야 한다라는 내용이 있어야 한다고 볼 수 있겠습니다. 다만 회사에서 분업을 위해 DA나 DS 직무로 분류를 해놓은 게 아닐까 하는 추측을 해봅니다(물론 회사마다 다릅니다).

 

위 내용으로 검색을 해보니 면접에서 데이터 분석과 데이터 과학의 차이에 대해 질문을 받은 적이 있다는 분이 계셨는데 좀 더 궁금하신 분들은 직접 찾아보셔도 좋을 것 같습니다(애초에 개념자체가 완전히 독립적이지 않기 때문에 뭐라고 딱 구분해서 제시하기가 어렵네요). 직무의 관점에서 봤을 때, 하는 일은 비슷하지만 각자가 더 특화된 부분이 있다라고 보시면 될 것 같네요. 꼭 그렇지는 않겠지만 세세하게 분석을 잘한다면 DA가, 데이터로부터 의미를 찾아내는 쪽을 잘한다면 DS가 좀 더 잘 맞을 수 있겠죠. 그렇다고 DS가 훨씬 대단한 직업이라는 얘기는 절대 아닙니다. 데이터를 잘못 해석하지 않기 위해서 분석을 아주 잘해야한다는 것은 자명하니까요. 특정 직업이 결코 더 우월하지 않고 궁극적으로 가치 생산을 위해 서로가 잘하는 부분을 하는 것이죠. 실제로 여러 사람들이 동일한 주제의 프로젝트를 진행하고 발표를 진행했을 때 분석과 시각화가 정말 뛰어난 분들이 계셨고, 압도적인 도메인 지식을 바탕으로 데이터의 의미를 잘 읽어내는 분들도 계셨습니다. 그런 분들이 같이 일을 하면 대단한 결과물이 나오겠죠.

 

Data Scientist(데이터 사이언티스트)

 

위에서 데이터 사이언스는 '데이터를 이용해서 인사이트를 도출하는데 과학적인 방법을 사용하는 분야다' 라고 말했습니다. 그렇다면 데이터 사이언티스트는 당연히 데이터를 이용해서 인사이트를 도출하는데 과학적인 방법을 사용하는 사람이 되겠죠. 물론 보통은 저렇게 표현하지 않고 비즈니스 문제를 해결하기 위해 데이터를 관리 및 분석하고 다양한 기술과 도메인 기반지식을 필요로 하는 직업이다 정도로 말할 수 있겠네요. 그 기술들에는 우리가 흔히 아는 SQL이나 프로그래밍, 수학, 통계, ML/DL 모델링 등등의 기술들이 있을 겁니다. 요는 그런 기술들로 비즈니스를 하는 사람이라는 거죠. 요즘은 대학 전공에서도 데이터 분야 전공이 많이 생기고 있으니 데이터 사이언티스트에 관심이 있는 분들은 관련 학과로 진학하는 것도 좋은 방법일 것입니다.

 

그럼 데이터 사이언티스트가 하는 일에는 무엇이 있을까요? 회사마다 다를 것이고 수없이 많은 일들이 있겠지만 보통,

 

- 데이터 분석 및 관리

- 데이터 시각화

- 통계적 추론

- 예측 모델 개발

 

등등이 있을 것 같습니다. 해당 작업과 동시에 팀원들과의 커뮤니케이션이나 프레젠테이션은 당연할 것이고요. 딱히 코드 스테이츠 부트캠프 과정에서는 딱 이 과정은 데이터 사이언티스트가 되기 위한 과정입니다 하고 못 박아놓지는 않았지만 섹션 1,2가 데이터 사이언티스트에 가장 가까운 섹션이 아니었나 싶습니다. 데이터 수집부터 분석, 통계 및 예측, 머신러닝 모델까지 관련이 있는 작업들을 했던 것 같습니다(물론 DS, DA, DE를 명확히 구분해서 교육하는 과정이 아니기도 하고 애초에 해당 직무들이 완전 독립적이지 않기 때문에 해당 일이 DS가 아니라고 안 하는 일들이 아닙니다).

 

데이터 사이언스의 프로세스

 

데이터 사이언스의 프로세스라고는 했지만 기본적으로는 데이터 사이언티스트가 하는 일과 비슷한 흐름을 가지고 있을겁니다. 많은 글들을 찾아봤지만 다들 약간씩은 다르게 얘기를 하고 있어서 약간 나이브하게 얘기를 해보면,

 

1. 비즈니스 이해 및 목표 설정

2. 데이터 수집, 가공, 분석

3. 모델 생성, 테스트, 조정

4. 배포 및 관리

 

이렇게 정리를 해볼 수 있을 것 같네요. 마지막에 클라이언트의 승인이 나면 서비스로서 사용이 될 것이구요.

 

먼저 비즈니스 이해 및 목표 설정입니다. 당연하다면 당연하다고 할 수 있는데, 무턱대고 아무 데이터나 수집하고 다닐 수는 없겠죠. 아무런 목적이 없는 데이터 수집은 단순하게 리소스 낭비일 뿐입니다. 결국 데이터를 가지고 인사이트를 도출하기 위해서 수집하고 분석하는 거니까요. 따라서 어떠한 목적이 있어야 합니다. 특정 데이터를 수집해서 어떤 서비스를 만들겠다 혹은 어떤 인사이트를 도출하겠다 등 데이터를 가져와서 하고 싶은 게 있어야 합니다. 그게 비즈니스적으로 클라이언트의 요구일 수도 있는 것이죠. 따라서 당연하지만 가장 중요한 단계가 되겠네요.

 

목표를 설정했다면 이제 어떤 데이터를 모을 것인지, 어떻게 가공을 할 것인지 등등 데이터를 가지고 이것저것 해보는 시간이 필요합니다. 실제로는 수집, 가공, 분석이 계속해서 번갈아 가면서 일어나지만 설명을 편하게 하기 위해 나눠서 작성하겠습니다. 데이터 수집을 해본 적 있으신 분들은 아시겠지만, 세상에 존재하는 모든 데이터가 항상 보기 좋고 깔끔하고 쓸모 있는 것은 아닙니다. 예를 들어서 어떤 설문조사 데이터를 수집했다고 칠 때 설문에 응한 모든 사람이 성실하게 답변을 하지 않을 가능성이 있겠죠. 본인의 시간을 내서 해야 하는 귀찮은 작업인데 그냥 한 줄로 밀고 빨리 다른 거 하러 가야겠다 하는 사람도 있을 거고요. 고민하다가 또는 깜빡하고 몇 문항을 건너뛰는 사람도 있을 겁니다. 설문조사가 아닌 다른 데이터들은 더 심할 수도 있습니다. 예를 들어서 어떤 센서의 값을 수집했다고 해보겠습니다. 전기적인 문제로 센서가 제대로 동작하지 않아서 값이 아예 없을 수도 있고, 환경이 제대로 통제되지 않아서 엄청 이상한 값들이 잔뜩 들어있을 수도 있습니다. 이런 데이터들 사이에서 우리의 목표를 이루기 위해 이상하지 않은 데이터를 찾아서 모으고 범위를 설정하거나 하는 등의 가공이 필요하겠죠. 어찌어찌 가공을 다 한 이후에는 분석을 해야 합니다. 그래서 내가 열심히 모은 데이터가 의미가 있는지 어떻게 해야 이 데이터를 쓸모 있게 사용할 수 있을지 등등 알아보지 않는다면 열심히 모으고 가공한 데이터가 사실 아무 의미 없는 데이터일 수 있겠죠. 따라서 수집하고 가공하고 분석하면서 데이터가 더 필요하다면 더 모으고 이상한 부분은 가공을 하는 단계를 계속 수행하게 될 것입니다.

 

이제는 열심히 모으고 가공한 데이터를 가지고 예측 모델을 만들어야 합니다. 모델은 머신러닝 모델이 될 수도 있을 것이고 딥러닝 모델이 될 수도 있겠죠. 요점은 열심히 모은 데이터로 예측 모델을 학습시켜서 해당 모델이 제대로 예측을 할 수 있도록 만드는 것입니다. 데이터 과학을 하는 이유도 결국 데이터를 통해 불확실성을 어떻게든 줄여보고자 하는 것이 출발점이니까요(위에서 했던 석유 시추 얘기 기억나시죠?). ML/DL 모델에도 정말 수많은 모델이 있고 성능을 높이기 위한 수많은 알고리즘이 존재합니다. 그래서 우리는 모델을 만들었다고 이제 끝~ 하는 게 아니라 어떻게 하면 현재 모델의 성능을 끌어올릴 것인지를 고민해야 합니다. 수많은 테스트를 하면서 모델도 변경하고 학습에 사용되는 하이퍼 파라미터도 조정하면서 모델의 성능을 올리기 위해 갖은 노력을 다하게 됩니다. 데이터 가공 단계처럼 정말 많은 시간을 들이게 되는 과정인 것 같아요.

 

모델도 잘 만들었다면 이제는 해당 모델을 배포할 일만 남았습니다. 해당 모델을 가지고 어떤 서비스를 만들 수도 있고 아니면 많은 사람들이 쓸 수 있게 인터넷에 올리는 방법도 있겠죠. 물론 우리 회사에서만 사용하는 방법도 있습니다만 결국 다 배포에 해당하니까요. 뭔가를 예측하기 위해 만든 모델을 그냥 처박아놓지는 않으니 어떻게든 사용하게 될 겁니다. 모델은 만드는 것도 중요하지만 관리도 정말 중요한데요. 위의 과정에서 알 수 있듯이 어떤 예측 모델을 만들기 위해서는 정말 많은 리소스가 들어갑니다. 시간, 인력, 자본 등 정말 많은 리소스를 들여서 만든 만큼 아무렇게나 방치할 순 없겠죠. 해킹을 당한다거나 모델이 들어있는 서버가 날아간다거나 하는 끔찍한 일이 일어나지 않도록 관리를 해줘야 합니다. 그런 예측 모델을 아예 따로 모아두는 서버를 두는 회사들도 많은 만큼 다들 관리의 중요성에 대해서 체감을 하고 있다고 봐도 무방할 것입니다.

 

이번 포스팅에서는 데이터 사이언스에 대해서 알아봤습니다. 최대한 틀린 정보가 없게끔 찾다 보니 시간도 오래 걸렸고 그만큼 정성도 많이 들어간 포스팅인데 보시기에 어땠는지 모르겠습니다. 혹시 잘못된 정보가 있거나 궁금한 게 있으시다면 언제든지 댓글로 달아주세요.

반응형

'Data Science' 카테고리의 다른 글

[Data Science]EDA란(1)  (0) 2023.06.26