본문으로 바로가기

[GP] R 프로그래밍과 데이터-처리

category Programming/R 2018.08.04 12:00

이 글은 N.K Dev Lab에서 작성된 글입니다.

안녕하세요. 요 몇 개월 간 제 블로그의 포스팅이 없었죠?.. 요즘 데이터와 씨름하느라고 정신이 없었습니다. 이제 프로그래밍을 넘어서 데이터에 대한 작업을 조금씩 배워나가고 있습니다만 SQL 모델링은 조금 해봤으면서도 가장 기초적인 데이터처리 등은 서툴러서 작업을 하는 내내 생각하는 것은 국가에서 제공하는 커리큘럼을 조금 익혀볼까 라는 생각도 많이 하곤 합니다.

저는 은근 My-way 스타일이면서도 가끔씩은 이게 맞나 싶은 고민이 생길 때는 가이드라인을 타곤 합니다. 하지만 그 가이드라인을 보면서도 “비효율적이다”, “내 스타일은 아니다.”, “더 깔끔하게”라는 욕심을 가지게 되는데, 그러다보면 한참을 고민하다가도 진도 진행이 되지 않아서 요즘에는 짜다가도 내 스타일 아닌 코드에 대해서는 일단 방치해두었다가 조금 시간적인 여유가 있을 때 다시금 그 스타일을 바꿔서 코딩하는 것이 저의 스타일이 되버렸습니다.

Data Processing

소프트웨어 개발자 입장에서 데이터 처리… 사실 DBA의 직책을 가지신 분들이 주로 하는 일이라고 보는 것이 맞겠지만 소프트웨어 개발자가 직접적으로 데이터에 관여하는 경우는 극히 드뭅니다. 사실상 소프트웨어 개발자는 사용자의 측면을 고려하고 얼마나 편하고 더 좋은 결과를 낼 수 있느냐에 달려 있다고 생각했습니다.

하지만 이번에 데이터 처리를 하면서 사실상 이렇게 마구잡이로 마이닝한 데이터를 처리하여 정보와 지식으로 만드는 데는 여러 알고리즘을 사용해야 합니다. 따라서 데이터 처리와 소프트웨어의 개발은 반드시 반대의 측면을 가지지 않는다는 것을 알게 되었습니다. 소프트웨어를 개발하는 데 있어서도 사용자가 어떠한 인풋을 주게 되면 그에 따른 결과를 출력하는 것처럼 데이터를 처리하는 데도 어떠한 모아진 데이터를 정보와 지식으로 축적하는 데 있어 여러 알고리즘을 구현하는 것 또한 같은 일입니다.

ETL

데이터 처리 작업을 하면서 듣게 된 단어 중 하나가 바로 ETL이라는 단어였습니다. 사실 데이터 엔지니어에 입문한 것은 처음이었고 그 중 제가 제가 처음 했던 작업이 ETL이라는 것도 작업을 하는 도중 알게 되었습니다. ETL은 Extract(추출), Transform(변환), Load(적재)의 약자로 사실상 그렇게 어려워 보이는 작업은 아니지만 은근히 손이 많이 가게 된 작업 중에 하나였습니다.

제가 간단히 하고 있는 일을 말씀드리자면, 저는 어떤 이미지를 가지고 해당 이미지가 어떤 이미지인지, 크기는 얼마나 되는지, 만약 크기가 다르다면 일정 크기에 맞춰 변환하는 작업을 거쳐야 하고, 그거에 맞춰서 다시 DB에 적재하여야 합니다. 조금 다른 원리를 알게 된 것은 이미지 처리를 위해서 Not only SQL을 사용할 것이라고 생각했지만 그냥 SQL만을 가지고도 작업 처리가 원활하게 돌아갈 수 있음을 알게 되었습니다.

하지만 이미지 데이터의 추출은 픽셀 데이터가 될 수도 있습니다. 이를테면 OpenCV와 같은 컴퓨터 비전 라이브러리를 사용해서 픽셀 데이터를 분석하고 이를 통하여 데이터를 추출하는 방법도 있겠지만 요즘에는 메타데이터 활성화가 잘 되어잇는지 이러한 메타데이터를 마이닝하는 것만으로도 충분한 정보를 긁어올 수가 있습니다. 하지만 그것 역시 제가 필요한 모든 정보를 가져올 수 있는 것은 아닙니다. 그래서 PixelData를 사용해 표준 이미지로 저장하여 이를 다시 OpenCV로 처리하여 DB에 적재하는 방법을 쓰는가 하는 방법도 고려해보고 있습니다.

정확하게는 작은 규모의 프로그램은 파일 단위로 라이브러리나 패키지를 이용해 그 데이터들을 간단히 긁어와서 표현할 수 있지만 데이터의 규모가 커지면 그것 또한 한계가 생깁니다. 또 프로그래밍 언어에서 지원하는 자료 구조는 한정되어 있고 빅 데이터를 처리하기 위해 Data Structure 또한 정해져 있습니다. 이에 최적화 된 언어는 Python과 R 언어였고 저는 이러한 데이터 처리를 위해 R 을 공부하여야 했습니다.

R

제가 처음 본 R 언어는 Python과 유사한 언어였습니다. 변수 타입을 지정하지 않고 자유롭게 사용할 수 있는 스크립트 형태의 언어, 하지만 저에게 익숙해지는 데 너무나 많은 시간을 들여야 했습니다. 단순히 자료형 타입을 지정하지 않는 문제 때문이 아니라 여러가지 문법이 존재하였고, 평상시 자주 사용했던 OOP와 같은 프로그래밍은 잘 찾아볼 수 없었으며 모듈화는 또 어떻게 해야하는지를 잘 몰라 어떤 방식으로 접근해야하는지도 익숙하지 않았습니다.



이어서 읽으시려면 아래의 버튼을 클릭해주세요.


... 계속 읽기



'Programming > R' 카테고리의 다른 글

[GP] R의 다양한 자료구조들  (0) 2018.08.26
[GP] R 프로그래밍과 데이터-처리  (0) 2018.08.04

comments powered by Disqus

티스토리 툴바