세줄 코딩(실무용 알고리즘)

데이터 분석에는 복잡한 기술과 코딩이 필요한가?

정데만 2023. 7. 18. 16:31
728x90
 

한국인이 영어를 못하게 된 이유

얼마 전 유튜브 쇼츠 영상에서 우연히 여행유튜버 빠니보틀이 가진 영어에 대한 생각을 보게 되었다.(관련 동영상 보기)
 

 
영어에 대해 말하려는 건 아니지만, 데이터를 분석하려는 초급 분석가 또는 일반 직장인들과 대화하면서 느낀 점은 그들이 말하는 현장의 고충은 한국인이 영어를 사용하면서 느끼는 감정과 비슷하다는 것이다.
 

비대면 거래가 활성화되면서 영업점에서 고객은 사라졌고, 트렌드는 거리가 아닌 소셜에서 형성되기 시작하였다. 웹사이트를 운영하는 사람이라면 빅데이터 분석은 아니라도 유입채널과 키워드는 분석해야 하는 것이 당연해졌으며, 전문가가 아니더라도 자신의 업무에서 발생한 데이터는 모두가 분석해야 하는 시대가 되었다.

 

일반인이 의사소통을 목표로 영어를 배우듯이 일반 분석가들은 완벽한 알고리즘이 아닌 분석 결과에 목적을 가지고 있어야 한다. 저변화된 만큼 깊이는 낮아질 수 있지만 - 사실 보편화된 영역에서는 기술 수준이 떨어지지도 않는다 - 모두가 데이터를 읽어내는 능력을 갖추게 되면 클릭을 분석하는 영업사원과 소셜을 분석하는 상품개발자를 육성할 수 있을 것이다.

 

데이터를 분석할 때 완벽한 기술과 코딩이 필요할까?

 


 

데이터 분석에서 발생하는 변화의 흐름

지금에 와서는 우스운 일이지만, 처음 머신러닝 계통의 알고리즘이 적용되기 시작했을 당시 조금 심각했던 2가지 유형의 갈등이 있었다.
 
첫 번째 유형은 2016년 알파고 사건 직후 발생하였다 .

 

당시 파이썬을 이용하는 분석가 중심으로 딥러닝과 부스팅 계열의 알고리즘이 전파되기 시작했는데, 부스팅계열의 알고리즘들은 다중공선성(변수간 충돌)에서 조금 자유로운 편이기 때문에 데이터 선별과정을 간소화하는 대신 모델을 빠르게 개발할 수 있다. 하지만, 종전 방식의 모델링(로지스틱 회귀 등)을 고집하던 사람들이 이를 받아들이지 않는 바람에, 한동안 종전과 동일한 방식의 변수 검증 과정이 필요했으며, 모델 개발 속도는 빨라지지 않았다.
 
이 상황이 해결되고 조금 지나고 나니 두 번째 유형이 발생했다.

 

이번엔 오히려 딥러닝 사용자에서 발생했는데, 초창기 딥러닝 알고리즘은 텐서플로를 이용해서 레이어를 일일이 만들어야 했다. 현재는 딥러닝 개발 시 대부분  케라스와 같이 라이브러리를 사용하지만, 초창기에는 모델의 구조를 알기 어렵다는 이유로 몇몇이 이를 반대하였다.

 

당시엔 라이브러리가 불안정했기 때문에 아주 일리 없는 말은 아니었지만, 효율성이라는 측면에서 간단한 모델까지 텐서플로로 일일이 레이어를 구성하는 건 유기농 식사를 하기 위해 농사부터 시작하는 것과 다름없었다.
 
재미있는 건 한 때 서로 의견이 달랐던 이 분석가들에게 공통점이 있다는 것이다. 그들은 무언가 바뀌는걸 원하지 않았다.

 


 

데이터 분석은 과학인가? 기술인가?

짧은 내용에도 이미 누군가는 반발하고 있을지 모르지만, 현장에 있는 분석가들에게 묻고 싶은 게 있다.
 
데이터 분석은 과학인가? 기술인가? 당신은 기업에서 과학을 연구하는 것인가, 아니면 과학자가 연구한 결과를 활용하려는 것인가?
 
정답은 정해져 있다. 과학자의 소양과 실력을 가지고 있는 분석가라 할지라도 해야할 것은 엔지니어링이다.
 
설령 일하는 곳이 연구소라 할지라도 펼쳐야 할 난이도가 다를 뿐 학문을 갈고 닦는게 아니라 상용 제품을 만들어 내야하며, 데이터 사이언티스트라고 불리는 직업이지만 당신이 펼쳐야할 학문은 과학이 아닌 경영학 또는 사회학이 되어야 한다.
 
빠니보틀이 영어에 대해 말했듯이 뭔가를 사용하기 위해 완벽한 기술을 요구해서는 안된다. 데이터 분석 또한 활용이라는 궁극적인 목적을 잊어도 안되며, 설령 개념을 명확히 알지 못하더라도 당장 써먹을 수 있어야 한다.

이러한 변화에 먼저 반응한 기업들은 현업 분석가(시티즌 데이터 사이언티스트)를 위해 데이터 전처리 자동화 및  AutoML툴을제공하고 있다. 개발업계에서 부는 노코딩 시대가 데이터 분석에서도 시작되고 있는 것이다.

 

하지만, 안타깝게도 데이터와 AI 분야는 오픈소스가 많고 알고리즘도 빠르게 변화하는 바람에 노코딩툴이 그다지 각광받지 못하고 있다. 그래서 데이터를 분석할 때 제안하고 싶은 방법은 다음과 같다.

 


 

대다수의 알고리즘에 필요한 코딩은 3줄이면 된다.

사실 대부분의 데이터 분석가들은 코딩 규칙에 관대한 편이다. 파이썬이라는 언어는 굉장히 유연하기 때문에 스크립트처럼 복사해서 붙여넣기만 해도 큰 오류없이 동작한다. 그래서 분석가들은 IDE(통합 개발환경)보다 주피터 노트북이라는 가벼운 분석 환경을 사용하는 편이고, 코딩보다 데이터에 집중하면서 간단한 명령어로 모델을 개발한다.

 

그래서 분석가들은 사실 자료형부터 제어문장, 그리고 함수 등 파이썬이 가진 프로그래밍 규칙을 꼭 배울 필요 없다. 그냥 오픈소스를 사용하기 위해 재단에서 알려준 메뉴얼을 읽으면 된다. 

 

그리고, 이 마저도 카센터에서 엔진오일 교체주기를 알려주듯이, 가볍게 활용도만 숙지하면 된다. 메뉴얼도 너무 집착할 필요 없으며, 특히 파라미터에 대해서도 너무 파고들 필요는 없다.

 

분석 라이브러리에 붙어있는 파라미터는 마치 TV리모컨에 있는 설정 버튼이나 다름없다. 설정 버튼을 누르지 않아도 채널을 돌리거나 음량을 늘리는데는 전혀 걱정이 없다. 우선 TV를 충분히 즐긴 후 가끔 새로운 기기를 연결하는 등 설정 버튼을 써야할 때 구석에 놔둔 메뉴얼을 뒤져보면 된다.

 
아래는 사이킷런 재단(오픈소스 분석 라이브러리)에 나와 있는 군집 분석 알고리즘 예시이다.

X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(X)
kmeans.labels_
 
데이터를 입력하는 첫번째 줄을 제외하면 데이터를 분석하는 명령어는 2번째줄의 명령어 뿐이며 해당 코드에서 알아야 할 파라미터도 파란색으로 표시해둔 n_clusters(군집 개수 지정) 뿐이다.

 
데이터는 평소에 익숙한 엑셀이나 SQL등을 활용하여 정리하면 되고 위 코드를 복사한 후 클러스터링 분석 결과를 얻고 나서 분석된 데이터는 엑셀이나 BI(Tablu, MSTR 등)를 이용해 시각화하면 이미 클러스터링을 써먹을 수 있게 된 것이다.

 

분석가에게 알려줄 수 있는 노하우라면 데이터를 분석할 때 어떤 알고리즘을 써야하는지, 그리고 어디서 구할 수 있는지 정도이다. 앞으로 기회가 된다면 틈틈이 3줄만으로 데이터를 분석할 수 있는 방법을 올려보도록 하겠다.

 


728x90