Skip to content

Latest commit

 

History

History
59 lines (44 loc) · 9.19 KB

Oracle Machine Learning.md

File metadata and controls

59 lines (44 loc) · 9.19 KB

Machine Learning in Oracle

1. 모든 것은 질문으로 시작된다.

회사들이 데이터를 생각하며 갖는 야망이나 머신 러닝 혹은 하둡으로 얻고 싶은 것에 대해 얘기할 때, 무엇을 분석하고 알고 싶은 것인지 명확히 정의하는 것이 중요하다.

  • 매출과 날씨 사이에 상관 관계가 있는가?
  • 주말 매출이 평일 매출보다 월등히 많은가?
  • 트위터에서 인기 있는 해시태그를 보고 이후 삼 개월 동안 유행할 제품을 기획할 수 있는가?
  • 고객의 임신 시기를 예측할 수 있는가?

2. 데이터 수집

무엇을 분석할 것인지 어느정도 정의가 되었다면 필요한 데이터에 대한 수집을 할 단계이다. 이상적이라면 회사에는 잘 정리된 고객 관계 관리(CRM) 시스템과 즉시 데이터를 얻을 수 있는 Data Repository 가 있어 분석을 위한 DW, 내지는 하둡 파일 시스템에 데이터를 복사할 수 있어야 한다. 하지만 아직도 많은 회사들이 데이터들을 excel과 같은 파일 형태로 받고, 직원들이 일일이 수작업으로 처리하는 경우를 많이 보았다.

3. 프로세스 정의하기

무엇을 계획하든 무언가를 만든다는 것은 결국 과정이다.

계획

데이터는 어디서 얻을지, 정리가 필요할지, 어떤 학습 방법을 사용할지, 결과가 어떤 모습이어야 하는지를 넣는다. 계획은 언제든 변경될 수 있다.

개발

알고리즘과 코드 개발이 포함한다. 작업 보안을 위해 github나 bitbucket을 사용하는 것도 좋다.

테스팅

데이터를 가지고 수행하는 테스팅이다. 샘플 자료를 무작위로 사용하거나 전체 데이터를 사용한다. 요점은 프로세스를 테스팅하는 것. 데이터 로딩이나 가공 문제 등을 이 단계에서 알고 고쳐나갈 수 있다.

보고

이해관계자와 마주 앉아 테스트를 논의한다. 결과가 이치에 맞는가? 이해 관계자는 새로운 질문을 던지거나 어쩌면 다른 각도에서 답을 찾기 위해 새로운 데이터를 추가하길 원할 것이다.

개선

코드를 정비하고 알고리즘을 개선시킨다. 많은 양의 데이터를 가지고 코드에서 짜낼 수 있는 모든 성능을 끌어올려 전체 프로세싱 시간을 앞당겨야 한다.

프로덕션

모든 것을 테스트하고 검토하고 개선시키면 제품으로 옮기는 것은 큰 문제가 아니다. 프로젝트가 언제(매시간, 매일, 매주, 매월) 실행될 것인지, 프로젝트를 진행하는 사이에 데이터가 크게 변할 것인지 등도 고려한다.

4. 데이터 처리

자체적으로 구성하느냐, 아니면 하드웨어를 구매하고 유지 보수하고 싶지 않다면 클라우드 서비스를 고려해보자. 오라클의 Generation 2 데이터센터를 기반으로 한 IaaS 서비스는 다양한 옵션의 compute 자원을 제공한다. 무거운 작업을 처리할 떄는 관심을 CPU 위주에서 벗어나 다른요소 (디스크, 메모리, 그래픽카드, 네트워크)로 돌려야 한다. 오라클은 이러한 면에서 타 벤더 대비 높은 IOPS의 디스크, GPU 인스턴스, 빠른 네트워크를 지원한다.

5. 데이터 스토리지

앞으로 데이터를 어떻게 저장해야 할지 결정해야 한다. 작업 처리량 및 용량에 따라 결정한다. 작업을 위한 인스턴스의 물리적 디스크나 SSD에 저장하여 사용하거나 클라우드 기반 스토리지를 고려한다. 클라우드 기반 스토리지가 있으면 필요한 만큼 데이터를 저장할 수 있다. 클라우드 기반 프로세싱을 찾는다면 클라우드 기반 스토리지를 같이 구입하는 것이 좋다. 예를 들면 오라클의 Big Data Cloud Compute Edition을 사용한다면 Object storage를 같이 사용하는 것 처럼 말이다. 사무실 컴퓨터로 클라우드 시스템에 대용량 데이터를 올린다면 대역폭도 생각해봐야 한다. 아마존 같은 경우 out-bound 트래픽(데이터 송신)에 대한 네트워크 비용을 별도로 청구하기 때문에 이 역시 비용임을 명심해야 한다. 오라클은 inbound 는 무료, outbound는 10TB까지 무료이다.

6. 입력 데이터에 대해 생각해보기

데이터의 형태는 다양한다. 코드를 만들기 전에 다룰 데이터의 형태를 알아두는 것이 좋다. 다음은 일반적인 데이터 형식이다.

  • 원시 텍스트 : 한글의 경우 UTF-8, EUC-KR 인코딩을 사용하면 깨지지 않는다. 사용하는 환경 및 OS에 맞게 인코딩 방식을 선택한다.
  • CSV
  • JSON : 가장 흔히 사용되는 데이터 포맷으로 키와 값이 한 쌍으로 이루어져 기계와 웹이 데이터를 주고받는 데 사용된다. 원래는 XML의 대안으로 디자인되었고 현재 많은 API가 JSON을 사용하여 요청하는 프로그램에 응답 데이터를 전송한다.
  • YAML
  • XML : 프로그래밍 언어
  • 스프레드시트
  • 데이터베이스 : 가장 대중적인 것이 오라클, MySQL, 프로스트그레스, MS SQL Server이다. 최근에는 몽고DB, 카우치DB, Redis 같은 NoSQL의 인기가 폭발적이다. 이들은 기존 데이터 스토리지의 엄격한 테이블 구조아 다르다. 이 외에도 스파크와 같은 인메모리 시스템도 있다.
  • 이미지

7. 결과 데이터에 대해 생각해보기

머신 러닝 및 분석의 결과물에 대한 주된 질문은 "누가 관심을 가지는가?"다. 답변에 따라 결과물은 바뀐다. 재무팀 사람이 결과를 보러 온다면 스프레드 시트가 필요할지도 모른다. 웹사이트 사용자라면 데이터를 데이터베이스 테이블에 두는 것이 이치에 맞다. 오라클의 OAC와 같은 BI 보고서 및 시각화 툴을 사용하는 것도 좋다.