반응형


Port Forwarding 방법입니다.

집에있는 와이파이 공유기를 이용해서 외부 인터넷에서오는 요청을 처리할 수 있는 환경을 만드는 방법입니다.

특히, 2개의 공유기를 사용하는 경우입니다.
SKB에 전화해서 물어봐도 설명을 잘 못해주었고 잘 이해 못하는 상담원도 계셔서 한 다섯 번 정도 통화했던 것 같습니다.
결국 인터넷에서 관련된 설명 링크를 찾았다고 보내주어 참고하였습니다. 큰 도움은 안됬어요.
그 만큼 복잡하고 이해하기 어려웠습니다.
제가 고생을 했기 때문에 다른 분들께서는 고생 안하시고 도움이 되었으면 좋겠습니다.

지금부터 하나하나 설명해 드립니다. 따라해보세요.

참 아래 글을 보시는 방법은, 먼저 설명을 적어 놓았으니 간단히 읽어보시고, 그 바로 아래에 관련 이미지를 추가 했어요, 순서대로 보시면서 따라하시면 됩니다.

전체적인 연결구조는 아래와 같습니다

인터넷 -》 공유기1(SKB) -》 공유기2(iptime) -》 PC

전체 구조




먼저 SKB 공유기를 설정합니다.


192.168.25.1 로 접속하면 로그인 창이 나옵니다.
id는 admin, 암호는 공유기 뒷면 MAC 주소+"_admin" 을 입력합니다.
뒷면에 MAC 주소가 안보이는 경우(초기 설정하신 경우) 휴대폰을 통해 접속해서 와이파이MAC 주소를 알아낼 수 있습니다. (아래 링크를 참고하세요)
https://bigdatamaster.tistory.com/119

로그인하고 나면 아래의 화면이 보입니다.
여기서는 인터넷 환경에 있는 IP 주소를 기억해 둡니다. 여기서는 110.12. 으로 나와있는 부분 입니다.
이 번호가 인터넷을통해서 다른 장비가 접근할 때 사용하는 IP번호 입니다.
나중에 설정을 완로한 후 테스트 할 때 필요하니 별도로 적어 놓거나 저장해 놓으시기 바랍니다.

좌측 메뉴 중에서 로컬 랜 설정 부분을 클릭합니다.
그러면 아래의 이미지 오른쪽 화면이 나오는데 이때 접속 리스트를 클릭합니다.

위에서 접속리스트를 클릭하면 접속 리스트 창이 팝업됩니다.
여기에 나오는 IP 주소를 적어 둡니다. 이 IP 주소가 바로 두번째 공유기인 ip time 공유기의 내부 주소 입니다.

아래 화면에서 메뉴 방화벽 -> 포트 포워딩을 클릭합니다.
오른 쪽에 포트 포워딩 리스트가 나오며, 제일 하단에 새로운 포트 포워딩을 추가 할 수 있습니다.
로컬 IP 주소는 이전 페이지인 접속 리스트에 나왔던 숫자를 입력합니다.
포트 범위에 외부에서 들어오는 포트중 어떤 포트 번호를 넘길지 적어 주고 설명을 입력후 추가 버튼을 누릅니다.
버튼을 누르고 잠시 있으면 리스트에 추가되어 보여집니다.
(옵션)정상적으로 보이면 왼쪽 메뉴에 있는 재부팅을 클릭/ 실행합니다. 1~2분 기다리면 재부팅이 완료됩니다.

지금까지 작업한 것은 인터넷에서 들어온 요청을 공유기1번에서 공유기2번으로 넘기는 작업을 한 것입니다.

힘내세요!.. 이미 반 이상 완료되었습니다.

이제부터 두번째 ip time 공유기에 설정을 시작합니다.

192.168.0.1 에 접속하면 iptime 로그인 화면이 나옵니다.
초기 설정할때 입력했던 id/password를 이용하여 로그인하고
관리도구와 설정화면 둘이 보이는 화면이 나올 때 관리도구를 클릭하면 아래와 같은 화면이 보입니다.
오른쪽 위에 보이는 외부IP주소가 공유기1에서 설정한 정보와 같은지 확인합니다.
(주의 !!! 만약에 외부IP 주소가 다른 번호라면 첫번째 공유기에서 다른 곳으로 포워딩 하도록 설정된 것입니다. 따라서 두번째 공유기에서 보이는 번호를 이용해서 다시 첫번째 공유기의 내용을 설정해 줘야 합니다.)

왼쪽 메뉴에서 고급설정 -> NAT/라우터 관리 -> 포트 포워드 설정을 클릭하면 왼쪽 화면이 보입니다.
왼쪽 아래를 보면 새로운 포트포워드를 등록하는 부분이 있습니다.
내용을 입력 합니다.
현재 접속된 IP주소의 왼쪽에있는 체크박스를 클릭하면 자동으로 현재 접속/사용중인 장비의 IP가 자동으로 등록됩니다.
특히 외부포트와 내부포트를 잘 설정해야 합니다.
외부포트는 공유기에서 받는(외부에서 들어올 수 있도록 열어 놓은) 포트 입니다.
내부포트는 내부IP주소의 장비(PC/ 노트북 등)에서 받아들이는 포트입니다.
(저는 혼동을 막기 위해 그냥 같은 포트 번호를 사용했습니다.)
내용 작성후 적용을 클릭합니다.
위의 리스트에 새로 추가된 설정이 보이면 오른쪽 상단에 있는 저장 버튼을 누릅니다.

지금까지 설명을 따라서 진행하셨으면 이제 설정이 잘 되었는지 확인해봅니다.





최종 오픈을 위한 장비에서 아래의 페이지에 접속한 다음,
위에서 오픈한 포트번호을 이용해서 오픈되어있는지 아닌지를 확인할 수 있습니다.

쉽게 따라하셔서 한번에 잘 설정되셨기를 바랍니다.

설정이 잘되었는지 확인하는 방법은 아래링크에서 설명 드립니다.


https://bigdatamaster.tistory.com/90

포트 포워딩 설정 확인방법  ㅡ SKBroadband, IPtime 공유기 사용 환경 설정 확인 방법

이전 포스팅에서는 포트포워딩 설정 방법에 대해서 설명드렸습니다. 포트 포워딩 SKBroadband, IPtime 공유기 사용 환경 설정 방법 port forwarding 방법입니다. https://bigdatamaster.tistory.com/89 ​ 이번에..

bigdatamaster.tistory.com


https://bigdatamaster.tistory.com/92

무료 웹서버구축 : 집에서 무료로 개인 웹 페이지 호스팅하는 방법

집에서 인터넷 접속 서비스를 가입하고 있고(KT, SKB, LG 등), PC가 있으면 무료로 개인 웹 페이지 호스팅을 할 수 있습니다. 인터넷 공유기에서 포트 포워딩을 하고 PC에서 제공할 웹 페이지를 호스

bigdatamaster.tistory.com

감사합니다.


아래에 있는 공감 클릭해 주시면 감사하겠습니다..
잘 안되시면 댓글 주세요. 다시 한번 감사합니다.



추가 정보입니다.
1. SKB에서는(KT미확인) 공유기 접속 갯수를 재한하지 않는다고 합니다. 따라서 다양한 구성이 가능합니다.

2. 포워딩이 됬다가 안됬다가 하는 경우가 있습니다.
이는 공유기 재부팅시 사설IP가 유동IP로 재설정되기 때문에 다른 공유기의 IP번호가 바뀌게 됩니다. 이런 경우 잘되던 포워딩이 추가 포워딩 설정을 저장하고 나서 갑자기 안되는 경우가 발생합니다.

3. 시스템 포트는 사용에 주의하세요.
포트번호 1번부터 1024번까지는 시스템에서 사용하는 포트 번호 입니다. 따라서 포트 포워딩에 사용시 주의해야합니다. 안전하게 2000번 이상의 포트번호를 사용해 보세요.

감사합니다.~

아래 댓글도 참고하세요 ~

반응형
반응형

Flume 기본 개념


Flume ???

Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data (https://flume.apache.org)

대량의 로그 데이터를 효과적으로 집, 집계, 이동하기 위한, 분산되고 안정적이고 신뢰성이 높은 서비스

* 분산된 = 수평확장 가능

* 안정적인 = 시스템이 뻗어서 서비스가 안되는 일이 없는

* 신뢰성 높은 = 데이터가 유실되지 않는


특징 ???

distributed, reliable, and available



Flume을 쓰면 좋은 점

수평확장 가능,

이미 개발된 많은 아답터 사용 가능(가져다 쓰면 끝),

소스까지 수정/활용 가능(오픈소스니까)

==> 쉽게 말해서 많은 량의 데이터를 안정성 높게 수집해야하고,

빨리(필요하면 수정해서) 개발해야하고,

그런데 이렇게 하기 위해 쓸 수 있는 돈이 별로 없을때

적합한 데이터 수집 솔루션


구성 ???

Agent들로 구성,     Agent = Source + Channel + Sink

Sources ???

Syslog, NetCat, Exec, Spooldir, Http, JMS, Kafka ......

==> 한마디로 (이름대로) 왠만한 Log Data는 모두 쉽게 수집할 수 있음.​

Channel Selector 와  Built-in Interceptor들을 사용하여 Contextual Routing을 할 수 있음

(예 : A서버에서 온 메시지는 받은 시간을 붙여서(Interceptor) HDFS 파일(ChannelSelector)로 저장)

Built-in Interceptor : Timestamp, Host, Static, UUID, etc

Channel Selector Type : Replication, Multiplexing


Channels ???

Source와 Sink를 연결해주는 기능

데이터 전송을 확실하게 보장하기 위해 Transaction 기능(전달 성공/실패) 제공

Built-In Channel : Memory, File JDBC, Kafka ...


Sinks ???

채널로부터 받은 데이터를 External Repository에 전달

Sink Groups을 이용하여 Load balancing, Failover 가능



이 모든 작업들이 특이한 환경이나 요건이 없으면 configuration 만으로 손쉽게 가능

2011년 Cloudera에서 아파치로 오픈한 이후로 많은 Built-in Adapter 가 개발 되어 사용/수정(Bug Fix) 되었기 때문임.


반응형
반응형

5 - 고객 프로파일링(Customer Profiling) - 기술 구현 관점

안녕하세요,
이번에는
고객 프로파일링을 위해 기술/인프라를 구현하는 방법에 대해서 이야기해 보겠습니다. ^^​
크게 3가지가 있지 않을까 싶습니다.

수작업(엑셀 활용), DBMS 활용, 빅데이터 기술 활용

(아, 분석 기법, 즉, 통계기법(예: 스코어링 기법), 인공지능, 기계학습 등의 내용은
설명할 내용도 많고 광범위해서 별도로 다루어야 할 것 같구요
여기서는 IT기술과 관련된 내용을 다루어 보겠습니다. )
첫째, (반)수작업 !!!
엑셀 등을 이용해서 하나하나 한땀한땀 고객과 관련된 지수를 계산하는 방법이죠
데이터 분석 4 - 고객 프로파일링 - 데이터 분석 프레임 관점에서 설명 드렸던
분석 프레임을 먼저 만들고
(그리고 필요하다면 추가로 분석 기법을 활용해서)
​분석 프레임에 사용될 데이터 또는 지수를 만드는 작업을 해야합니다.
이때 데이터가 있는 IT시스템에서 다운로드 받아서 엑셀에서
분석 프레임을 구현하는 것이지요.
분석 프레임에 대한 이해는 전 포스팅을 참고하세요

당연히(?) 분석 데이터량이 많지 않은 경우
(즉, 고객이 적고, 상품/서비스가 적은 경우)
사용가능한 방법입니다.)
엑셀(?) 이라는 한계성으로 (Access DB연결등 확장 방법은 제외 하고요 ^^)
대량의 데이터를 처리하기는 어렵지만
그래도 무시하면 안됩니다.
늘 우리 곁에 (?) 있기 때문에 엑셀은 친숙하고
이용하기 쉽고, 빠르게 구현할 수 있습니다.
엑셀에 추가 설치하는 소프트웨어를 구매하시면
엑셀 내에서 각종 통계 분석도 가능하며 쉽게 구현할 수 있습니다.
그러나 오늘의 메인 메뉴는 아니니까 이쯤하겠습니다. ^^ 


둘째, DBMS 이용 방법 !!!
잘 아시겠지만 DB 또는 DW/Mart를 구축한다고하죠.
​이 방법도 운영 시스템에서 필요한 데이터를 연동 받아
(여기서는 고급지게 ETL 이란 용어를 씁니다. Extract Tranform Load)
새로운 DB에 적제하고 분석 프레임에 맞게 데이터를 생성합니다.
분석 프레임에서 원한는 방법 대로 (또는 통계 분석 기법 대로)
데이터(Table, Mart)를 만들어 놓습니다.
당연히 추천을 하기 위한 대상(고객 또는 상품)을 기준으로
각각 어떤 추천을 제공할 것인지 만들어 놓습니다.
실제 추천할 시스템에서는 이렇게 만들어 놓은 데이터를 가져다가
주어지는 조건에 맞게 추천을 제시하게 개발하면 됩니다.
물론, 실시간으로 데이터를 분석해서 제공하는 방법은 조금 다릅니다.
앞으로는 이처럼 알고리즘이 어플리케이션 시스템에 내장된 개발이 증가할 것으로 예상되지만 현재는 많지 않습니다. 그럴 필요성/효과도 높지 않고요.

일반적으로 DW/Mart를 구축하는 프로젝트라고 할 수 있으며
일반적으로 DBMS(오라클:Oracle, MS SQL, MySQL 등)라는 미들웨어를 사용하여 구축합니다.
(여기에 OLAP, 시각화 Tool을 함께 개발하여 BI (Business Intelligence) 구축 프로젝트라고도 합니다)

전통적으로 데이터 관리/분석을 위해 기본이 되는 영역으로
이부분도 이야기가 많으니 다음 시간이 더 자세히 하시죠.^^ 



세번째, 빅데이터 기술 이용 방법 !!!
드디어~ 관심이 많으실 것 같은 ​빅데이터 기술 이용 방법입니다.
아래 설명을 쉽게 이해하시려면 빅데이터와 아키텍처라는 용어를 이해하는게 좋으니까요
잘 모르시면 아래의 이전 포스팅 내용을 먼저 참고하세요.


그럼 이해하셨다고 생각하고 설명을 이어가겠습니다.

앞서 설명드린 두가지 방법과 절차는 같습니다.
즉, 데이터를 확보(다운로드 or ETL)하고
분석 프레임에 따라 데이터를 생성하고
이 프로피일링 데이터를 실제로 이용할 어플리케이션 시스템에 연동/제공해주면 됩니다.
(ETL 하고 연동하는 것은 일반적인 내용이고 이번주제의 핵심은 아니니까 넘어가겠습니다.
즉, 주로 분석 프레임에 따라 데이터를 생성하기 위해 필요한
빅데이터 아키텍처에 대해서 설명 드리겠습니다.)

빅데이터가 발생함에 따라 두번째 방법인 DBMS 이용하는 방법에서
한계성과 효율성에 대한 의문이 발생합니다.

'도저히 DBMS로 감당할(저장/처리할) 용량이 아니다',
또는
'요구되는 처리 시간내에 데이터를 만들어 내지 못한다'
는 현상이 나왔고
그렇게 감당하려고 하더라도 DBMS 라이센스를 사다보면
비용이 어마무시하게 나와서 기업에서 쓸수가 없었습니다.
(이 이야기는 빅데이터 기술의 출현 배경과도 일맥상통합니다.)

아키텍처 관점에서 기존에는 집중(통합) 아키텍처였다면
빅데이터에서는 분산 아키텍처로 구성합니다.
집중과 분산의 기준을 서버로 생각하시면 이해가 쉽겠습니다.
즉, 1대의 서버에서 데이터를 저장/처리하면 집중 아키텍처,
여러대의 서버에서 저장/처리하면 분산 아키텍처로 생각하세요.
(물론 DBMS로 여러 서버를 묶어서 사용할 수 있으나 실질적인 한계와 비용 효율성에서 문제가 있습니다.
그리고 DBMS는 유명한 CAP 정리에서
(일관성: Consistency, 가용성: Availability, 분할내성: Partition tolerance 모두를 만족하는 분산시스템은 없다는 이론)
C와 A를 선택/구현한 방법입니다.
즉, 메시지 처리나 시스템이 잘못되면 서비스가 죽는거죠)

그래서 이러한 (많은 양의 데이터를 효율적으로 저장/처리해야하는) 문제를 해결하고자 나온 구조가
바로 빅데이터 기술(분산 아키텍처)이고
(DBMS에서 C일관성과 A가용성을 선택했다면 빅데이터 아키텍처에서는 다른 조합의 두가지를 선택한 것이지요
예를 들면 C/P 또는 A/P를 선택 구현한 방법입니다. 몽고DB, 카산드라, HBASE 등)
이에 활용되는 요소
기술이 오픈소스 중심의 소프트웨어 들입니다.
예를 들면, 많이 들어보셨을 HDFS, 하둡(Hadoop), HiVE, Pig, HBASE, Spark 등 입니다. 
이처럼 개별 솔루션을 서로간의 버젼별 호환성을 일일히 확인해가면서 설치/사용해야하는데...
이런 불편함을 해소하고자 클라우데라(Cloudera), 호튼웍스(HortonWorks) 맵R(MapR)에서
버전간 호환성을 점검하고 일부는 추가 기능까지 포함된 배포판을 제공하고 있습니다.
(물론 무료도 있고 유료버전도 있습니다..^^)
한국에서​, 예전에 (2011년 전후, 대부분) 빅데이터 기술을 이용하여
프로파일링 분석 프레임을 구현하기 위해서는 
HDFS 와 하둡을 기반으로, Java 개발언어로 Map/Reduce(MR)를 이용하여 프로그램을 개발해야했습니다.
그래서, 그나마 산술 통계나 간단한 로직 구현은 가능했지만
통계 알고리즘을 구현하기위해서는 고도의 개발 역량이 필요했습니다.
이러한 문제가 있어서 이후에 인기를 끌은게 아파치 머하웃(Apache Mahout)입니다.

복잡한 기계학습 알고리즘을 라이브러리 형태로 제공하여 쉽게 MR로 개발할 수 있게 해주었지요.
그러나 이또한 MR(Map/Reduce)라는 문제로
성능의 상대적(저는 이렇게 주장합니다 ^^) 한계를 보이게 되었고
그래서 요즘 한창 뜨고 있는 스파크 Spark 가 확산되기 시작했습니다.
(간단히 말씀드리면 MR은 HardDisk 데이터를 처리하고 Spark는 메모리의 데이터를 처리합니다.
컴퓨터 지식이 있으면 아시겠지만 당연히 메모리에서 처리하는 것이 디스크 대비 업청나게 빠릅니다.
특히, 알고리즘 중 반복작업을 할때는..더.)

스파크도 기계학습 라이브러리를 제공하여 쉽게 알고리즘을 구현할 수 있습니다.
그리고 말씀드린 것처럼 메모리에서 처리하기 때문에 빨리 처리합니다.
마이크로 베치를 이용하여 준 실시간에 가깝게 서비스를 할 수 있으며,
클러스터(여러대의 서버를 한대처럼 만들어서 사용하는방법) 구성이 가능하여 수평 확장이 가능합니다. (이말은 즉, 용량이 부족하면 서버를 추가하면 된다는 의미입니다)
요즘 고객 프로파일 관련 분석 프레임을 구축한다고 하면
통계 알고리즘이나 기계학습, 인공지능이 빠질 수 없겠지요.
그래서 이러한 알고리즘(라이브러리 활용)을 구현하기 쉬운 방법인 스파크가 뜨고 있는 것 같습니다.


이번에는 고객 프로파일링을 위한 분석 프레임 구현시 기술적 방법인
수작업(엑셀 활용), DBMS 활용, 빅데이터 기술 활용
방법에 대해서 이야기해 보았습니다.

다음에는 마케팅 기법과 통계/기계학습 분석 방법에 관해서 이야기해 보겠습니다.
마케팅 기법과 분석 목적에 따라서 사용하는 방법을 달리하는 것이 효과적/효율적입니다.
그래서 마케팅 기법과 모델링 알고리즘 그리고 구현 IT기술을 잘 아는 것이 중요합니다


감사합니다.

 

 

반응형
반응형

데이터 분석 방법론 (2) - 예시포함 (CRISP-DM)

데이터 분석 방법론에 대한 개요와 자료는 많이 쉽게 찾을 수 있는데 실질적인 사례나 예시에 해당하는 내용은 접하기 어려운 것이 현실인 것 같습니다.
그도 그럴 것이 일반적으로 학교에서 분석을 한다고하면 R이나 Spss, SAS 등의 툴을 가지고 리포트를 작성하는 내용 정도가 공유될 수 있을 것 같은데 이것은 실제 산업 현장에서 쓰이는 항목과 내용의 리포트, 방법론과는 다른 차이가 있을 것 같습니다. (아니 어느정도는 달라야만 할 것 같습니다. 이론과 실전, 목적이 다르니깐요...^^)


하여간, 그래서 졸업 후 바로 기업 현장에 투입되서 분석을 업무로 하다보면 품질 수준의 차이과 절차 상의 문제 등이 이슈화 되어서 종종 목소리가 커지는 일이 생기는 것 같습니다. 이것은 마치 소프트웨어 공학에서의 개발 방법론을 준수하지 않고 대규모 프로젝트를 시행하게 될 경우 중간에 문제가 발생하여 관계자간 이견으로 목소리가 커지고 심하게 되면 프로젝트가 실패하고 더 심하면 소송까지 가게되는 안좋은 일이 생기게 되는 것과 유사하다고 생각됩니다.


이러한 이유로 실제 사례나 예시 등을 공부하고 준비하는 것은 중요하다고 할 수 있겠습니다.
그래서 다시보면 CRISP-DM과 같은 방법론이 중요하고요


그러나......


여기서 CRISP-DM 방법론에 대한 구체적인 내용 자체에 대한 설명은 가급적 조금하겠습니다.
왜그러냐하면 그 내용은 전에 포스팅한 것도 있고, 각 단계의 정의나 개요는 구글, 네이버를 찾아보시면 금방 나옵니다.
자료도 많고요.


따라서, 여기서는 각 단계에서 실제 분석 사례를 설명하면서 어떤 항목과 내용을 정리/진행했는지 말씀드려 보겠습니다.


참고) KDD, SEMMA, CRISP-DM 개념 관련해서는 이전에 작성한 아래 글을 참고해주세요.

https://bigdatamaster.tistory.com/11

 

데이터 분석 방법론 (KDD, SEMMA, CRISP-DM)

데이터 분석 방법론 (KDD, SEMMA, CRISP-DM) 데이터 분석 방법론 막상 데이터 분석을 하려고 하면 막막할 때가 많습니다...이럴때 미리 잘 정리된 절차와 방법을 따라서 하나씩 진행한다면 쉽게 접근할

bigdatamaster.tistory.com

 

 


1. 배경 및 목표 : 뭐 할라고??? 왜???

가. 비즈니스 배경 및 목적
경우에 따라 이러한 내용 뿐만 아니라 분석을 진행하려는 기업의 일반적인 정보에 대한 분석이 필요하기도 합니다. 비즈니가 처해있는 상황, 문제점, 사업 목표, 조직구성 등도 프로젝트를 완료하는데 도움이 됩니다.
예를 들면 대리점의 매출 저하로 인해 사업 성장에 문제가 발생하고 있어서 이를 개선하기 위한 니즈가 있을 수 있겠습니다.


나. 분석 목적 및 목표

왜 데이터 분석을 하려고하는가? 분석해서 무슨 효과를 내려고 하는가? 데이터 분석과 비즈니스와는 어떤 관계가 있는가? 이처럼 분석하려는 이유와 목적을 명확히 해야만 프로젝트에 혼선이 없고 힘을 집중할 수 있습니다. 
비즈니스 목적이 대리점의 매출을 증대 시키는 것이라고 하면, 분석 목적으로는 매출 증대가 가능한 대리점을 찾아내는 분석 모델이나 증대 가능한 정도를 예측하는 모델 수립을 목적으로 할 수 있겠습니다.
 

 

 

2. 데이터 이해 : 데이터 넌 어떻게 생겨먹었니?

 

가. 초기 데이터 수집


분석 목적에 따라 관련있는 데이터를 찾아서 수집해야합니다. 보통 기업에서는 데이터를 DBMS에 관리하기 때문에 업무담당자와 DBA를 통해서 필요하다고 생각되는 데이터를 확보할 수 있습니다. 일반적인 기업의 관점에서 ,,,데이터 성격 유형을 나누어 보면 고객 데이터, 상품 데이터, 구매 데이터, 로그 데이터 등이 있겠습니다. 이러한 데이터를 생성하고 보관하는 시스템으로 부터 데이터를 다운 받아서 확보합니다.
사례의 경우에도 영업시스템의 DBMS에서 데이터를 다운 받아서 초기 데이터를 수집하였습니다.



나. 데이터 기술


확보한 데이터가 어떤 데이터인지를 설명하는 자료를 만든다고 생각하시면 됩니다. 각각의 시스템, 테이블 별로는 몇건의 데이터가 들어있고 테이블의 항목은 어떤 것들이 있으며 데이터 유형(범주형, 연속형, integer, numeric, character 등)은 이렇다고 정리해 놓는 것입니다. 코드로 관리하는 것은 어떤 것들이 있으면 주요 코드의 해석은 이렇게 한다.등등. IT 시스템의 데이터 관리 측면에서 보면 Metadata와 데이터 품질에 해당하는 정보를 제공한다고 생각하면 이해가 쉬울 것 같습니다. 물론 통계 분석의 기술분석에 해당하는 정보들도 제공되면 좋습니다.



 

 

 


3. 데이터 전처리 : 지루하지만 중요한 작업, 장인 정신으로 한땀 한땀...

 

가. 데이터 정제
데이터를 클린징합니다. 일반적인 데이터의 문제로는 데이터 누락(데이터가 빠져있거나), 오류(엉뚱한 값이 들어있거나), 이해 부족(Metadata가 없어서 무슨 의미의 데이터 인지 모르는 경우) 등이 있을 수 있습니다.
대리점 코드가 빠져 있거나, 생성규칙에 안 맞는 이상한 대리점 코드가 들어 있거나, 이해할 수 없는 컬럼명이 있거나 하는 경우 입니다.
이러한 경우 정제 작업을 통해 데이터를 체워 넣고, 오류를 정정/변환하고, 생성원천을 찾아서 의미를 알아 냅니다.

나. 데이터 생성 / 통합
말 그대로 데이터를 만들고 통합해서 모델을 돌리기 좋게 만들어 놓습니다. 보통은 하나의 (파일) 데이터 셋으로 만들어 놓지요.


다. 데이터 확정
앞선 데이터 이해 단계를 통해 대상 데이터 종류(구분) 및 건수, 분석 기간, 분석 기준 시점 등을 정합니다.


팁으로 모든 활용 가능한 데이터를 분석할 수는 없습니다. 그리고 그럴 필요도 없습니다.
분석 목적에 맞게 최적의 대상 범위를 정하면 됩니다. 데이터 기간이 그렇고, 대상 종류도 그렇고, 데이터 건수이 그렇습니다.
데이터 기간은 분석 목적에 맞는 기간을 확보해야합니다. 다음 달의 대리점별 추정 매출액을 구하는 모델을 만들 경우 대리점 개점이후 모든 월 매출액 정보가 있어야만하는 것은 아닙니다. (필요하다고 다 있지도 않고요.^^) 직전월, 또는 직전 3개월, 6개월, 12개월 정도 기간의 데이터만 있어도 여러 분석 방법을 이용해서 돌릴 수 있습니다.
대상 종류와 건수도 목적에 맞게 조정해서 정하는게 모델의 정확도를 높일 수 있습니다. 예를 들면 수도권 대리점의 추정 매출이 필요하면 (당연하지만) 수도권의 대리점과 관련된 데이터만 처리하면 됩니다. 건수도 적용 알고리즘에 따라 조금씩 다르겠지만 일반적인 통계 분석의 경우 F검정 후 t검정을 통과하는 정도만으로도 성능에 차이가 크지 않습니다.
(물론 빅데이터 시대가 되면서 이러한 부분은 많이 안 중요해 지고 있습니다. 그냥 가능한 다 적용하는 거죠. 그래도 그보다는 빠르고 효과적인 분석을 원한다면 고려해보는게 좋습니다.)




4. 모델링 : 노른자, 붕어빵에 단팥...


가. 활용 모델링 기술 선정
적합한 모델링 기술을 정하기 위해 알아두면 좋은 질문들이 있습니다. 아래 질문을 통해서 어느 모델링 기술이 적합한지를 생각해 볼 수 있습니다.

  • 충분한 신뢰도를 만들 만한 데이터량을 가지고 있는가?
  • 일정수준 이상의 데이터 품질이 필요한 모델인가?
  • 보유 데이터가 특정 모델에서 사용하기에 적합한 형태인가?

마지막 질문의 답으로 적합하지 않은 데이터라 하더라도 데이터 변환 작업을 하면 모델에서 사용할 수 있게 만들 수는 있습니다. 그러나 이러한 변환에 따른 성능의 영향도를 고려해서 결정해야 합니다. 안그러면 억지로 돌린 꼴이 되니까요.
대리점 매출 추정 예에서는 Regression을 사용했습니다. 여러가지 요인들의 영향도를 파악해서 회귀식으로 만들었다.


나. 테스트 방안 설계 수립
어떤 모델링이 잘된 모델링인지 먼저 정해놓아야 딴소리가 없습니다.. 그러기 위해서 어떻게 테스트하고 쓸만한 모델인지를 평가하는 방법과 기준을 정해 놓아야 합니다.
즉, 모델링 기술에 따라 성능을 분석할 수 있는 지표를 미리 정하고 이 지표의 수준을 미리 정해 놓아야 합니다. 지도학습의 경우 (오분류표의) 오류율을 정하거나, 클러스터링 같은 비지도학습의 경우 실루엣이나 중심점과의 오차값 평균 등이 될 수 있겠습니다. 그리고 당연히 테스트를 위한 데이터는 별도로 만들어 놓아야 합니다. 보통은 모델 훈련 시 전체 분석 데이터의 70%를 이용해서 모델링하고, 나머지 30%를 테스트에 사용합니다.
사례에서도 7 대 3으로 나누어 진행했고 추정 매출액과 실제 매출액의 SME를 기준으로 10% +-를 목표로 잡았다.

 

 

5. 평가 : 얼마나, 무슨 의미가 있나??? 잘 한건가?

미리정해 놓은 폭표에 대비해서 어떻게 성과가 나왔는지를 정리하는 단계 입니다. 통계 모델의 입장에서 원하는 목표 성능은 나왔는지 그리고 이러한 성과가 비즈니스에 어떠한 의미를 주고 효과를 가져올 것인지 등을 정리하는 것 입니다.
그래서 제 생각에 이 단계에서는 성능 지표 분석과 모델/성능 최적화를 해야할 것 같습니다.
물론 많이 와서 전단계로 돌아가기 힘들지만 결국 이러한 순환/반복적인 작업이 바로 분석의 작업이고 의미있는 Insight를 찾아 내기 위한 활동이니까요. 이러한 경험과 노하우를 가지고 초기 데이터 정의, 전처리 단계 부터 여러 경우를 고려하면서 준비하면 빠르게 작업해 나갈 수 있습니다.


6. 발표/보고 : 이건 예술이야..!!!


드디어 마지막 단계인 Deployment 단게에 왔습니다.
이단계에서는 개발된 모델을 적용하여 결과를 확인하고 계속적인 관리를 위한 방법을 제시하는 단계 입니다. 간단히 말하면 완료 보고서를 쓰는 단계이지요. 프로젝트의 개요를 설명하고 비즈니스/데이터에 대한 이해 내용을 설명하고, 전처리 단계와 적용한 모델링 기술에 대한 내용을 설명하고, 결과로 나온 내용과 그 의미/시사점을 정리하면 됩니다. 마지막으로 향후 자동화 구축 방안 또는 모니터링 방안 등을 추가하여 보고하면 마무리 됩니다.


데이터 분석은 예술의 한 분야라고 생각합니다.
그림을 그리거나 글을쓰거나 또는 음악을 만들때 완벽한 것은 만들수 없습니다.
정말 드물게는 왼벽하다고 느낄 수도 있으나 일시적인 것이고 주관적인 입장에서만 그렇습니다.
데이터 분석도 그런 것 같습니다. 며칠 밤을 세워서 데이터를 정재하고 모델을 만들어도 마음에 쏙드는 결과를 얻는 것은 거의 물가능합니다. 다시 정재하고 보완하면 좋아질 수 있지만 이또한 완벽할 수 없지요.
그래서 방법론이라는 부분도 완벽할 수 없습니다. 모든 프로세스와 타스크를 체워 넣는다고해서 품질 좋은 모델이 만들어지는 것은 아닙니다.
결국 여러분이 진행하시려는 분석의 상황에 맞게 핵심 타스크를 잘 골라서 사용하시면 됩니다.
바로 예술적으로 말이죠....


도움이 되셨길 바라고 명품을 만드시길 바랍니다.

그리고 다른 글에서 실제 고객분석의 이론과 실무 방법을 알려드리겠습니다.




 

 

반응형

+ Recent posts