데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

[기술12기] 디지털 사이니지 데이터 분석을 통한 맞춤형 광고추천

데이터 이야기
작성자
dataonair
작성일
2018-01-03 00:00
조회
2603


[기술12기] 디지털 사이니지 데이터 분석을 통한 맞춤형 광고추천

모두가 만족하는 효과적인 광고를 위하여



기술전문가 12기 우수조는 맞춤형 광고를 추천할 수 있는 디지털 사이니지 데이터 분석을 수행하였다. 디지털 시대에도 변치 않는 광 고업계와 광고주의 영원한 고민인 광고효과의 향상을 위해 빅데이 터 기반의 스마트 광고 추천 방법과 기술을 디지털 사이니지 통합 관리 시스템에 적용하는 시도였다.



The Challenges

1) 무엇을 고민하는가
광고주와 광고운영사 및 매체사는 늘 고민을 안고 있다. 광고주는 지역과 장소, 계절과 시간 대, 연령과 성별에 따라 더 효과적인 광고를 할 수 있는 방법을 고민한다. 또한 사람들이 얼 마나 광고에 주목하는지, 광고 예산에 비해 얼마나 많은 광고효과를 거두고 있는지를 알고 그에 따라 다음 광고에 대한 정량적 기준을 제시하려 한다.

한편 광고운영사는 광고효과를 분석하는 방법을 고민한다. 보통은 일방적으로 광고를 노출 하는데, 그 광고에 대한 반응을 정확하게 측정하기가 어렵다. 예컨대 어떤 상품의 매출이 늘 어나는 이유는 광고뿐만이 아닌 다른 여러 가지 이유가 복합적으로 작용한다. 그래서 매출만 으로 광고효과를 판단하기도 어렵다. 광고효과에 대한 객관적이고 과학적인 근거를 제시하 기 어렵기 때문에, 광고운영사는 광고주를 상대로 광고비를 책정하는 기준을 마련하기 어려 운 실정이다.

2) 디지털 사이니지의 특징
디지털 사이니지(Digital Signage)란 디지털 정보 디스플레이(Digital Information Display, DID) 를 이용한 옥외광고로, 관제센터에서 통신망을 통해 광고 내용을 제어할 수 있는 광고판을 말한다. 지하철 역사, 버스정류장, 아파트 엘리베이터 등 유동인구가 많은 곳에서 흔히 볼 수 있다. 대형 LCD TV에서 TV CF와 비슷한 동영상 광고나 실시간 뉴스를 다루기도 하고, 3D 디스플레이에 영상을 재생해 눈길을 사로잡거나 증강현실(AR)을 활용하기도 한다.
이 디지털 사이니지는 어떤 시스템으로 움직이는가 사이니지 위에 설치된 영상카메라로 사이니지 앞에 모이는 사람들을 촬영해 시청하는 이들의 시간, 성별, 나이를 분석한다. 그에 따라 서비스 서버에서 상황, 성별, 나이에 맞는 맞춤형 광고를 제공한다. 아울러 광고주에게 광고효과를 보고하고 광고비 책정의 기준을 제시한다.



The Approach

1) 프로젝트의 목적과 구현 방법
기술전문가 12기 우수조 구성원들은 네트워크 기반 디지털 사이니지의 운영 로그 데이터 를 효과적으로 수집하고 가공 및 분석할 수 있는 빅데이터 환경을 구축하고 테스트하기로 하였다. 이것은 수집된 광고의 계획, 운영, 결과 등이 포함된 데이터를 통해 광고에 영향을 주는 주요 변수의 적합한 분석 방법과 모델을 만들어 시험 후 그 결과를 시각화하는 것이 다. 빅데이터 기반의 스마트 광고 추천 방법과 기술을 디지털 사이니지 통합관리 시스템에 적용하여 고객에게 맞춤형 광고를 제공하고, 광고주와 광고대행사의 만족도를 높이기 위한 것이다.

이를 이루기 위해 먼저 디지털 사이니지의 로그 데이터와 광고 데이터를 fluentD와 kafka 를 활용하여 실시간으로 수집하고 웹 크롤링, 날씨 Open API를 통해 배치 수집을 진행하 기로 하였다. 분석에 필요한 인프라는 HDFS와 Zookeeper를 기본으로 하고, 실시간 처리 에 Spark Streaming을, 데이터 마트 생성은 Hive를 이용하였다. 또 엑셀이나 MySQL을 통 해 산출된 평균이나 합계 등의 통계 데이터를 CF필터링으로 분석하며, 데이터 마이닝은 스 파크를 활용한 머신 러닝 라이브러리(MLLib;Machine Learning Library)로 진행한다. 끝으로 통계 리포트를 Bootstrap과 구글 차트, 그리고 Jquery로 시각화하기로 하고, 프로젝트 일정 을 구성하였다.

column_img_3206.jpg

기간이 짧은 7주 프로젝트는 범위와 인력을 관리하는 것이 가장 중요하다. 다행히 구성원 중 디지털 사이니지 사업을 하는 분이 로그 데이터를 처리할 수 있는 인프라 구축과 로그 데이터를 통한 광고의 추천 및 효과분석을 제대로 해보고 싶다는 현실적인 고민을 제시해 준 덕분에 프로젝트 주제와 범위의 선정이 이른 시점에 확정되었다. 또한 전문성을 가진 팀 원들 간의 역할과 책임이 명확했고, 진행과정에서 협업도 잘 이루어졌다. 해결해야 할 문제, 데이터, 비즈니스 인사이트를 가진 고객(최지훈), 기술 아키텍처를 잡아줄 아키텍트(김인 환), 하둡, 스파크 클러스터를 설치하고 구동시켜준 엔지니어 및 시각화 개발자(허동진), 스 파크 스트리밍/ML 개발자(한동훈), 데이터 분석가(김동현, 임영재)가 한 팀으로 구성되었다.

2) 빅데이터 기술 아키텍처 구현과 사용기술
구성원들은 각자 2개 이상의 역할을 갖고 네이버 밴드와 구글 docs에서 공지사항과 의견 을 교환하며 프로젝트를 진행해 나갔다. 또한 이 과정에서 빅데이터 기술 아키텍처를 아래 와 같이 구현하였다.

column_img_3207.jpg

데이터 수집은 배치수집과 실시간 수집으로 나뉜다. 배치수집에는 Java Jsoup과 Open API 가 사용되었다. Jsoup는 웹페이지 HTML 파싱을 위한 JAVA Library다. 2015년 디지털 사이 니지 로그와 날씨의 연관성을 분석하기 위해 지난 날씨를 수집하는데, 기상청에서 지난 날 씨는 API가 아닌 웹 형태로만 제공하기 때문에 웹크롤링이 필요했고, 여기에 Jsoup를 사용 했다. 또 날씨가 분석에 중요한 변수일 경우 날씨를 통한 광고 추천이나 예측을 위해 날씨 예보자료가 필요했다. 예보자료는 기상청에서 Open API로 xml형태로 제공받을 수 있었다. 실시간 수집을 할 때 분산 로그 수집에 fluentD를 쓴 것은 데이터 수집기 중 안전성과 단순 성으로 유명했기 때문이다. 수천 대의 사이니지 기계마다 수많은 로그데이터가 쌓여 있어 수집의 안전성이 필요했던 것이다. 한편 분산 메시징 시스템으로 kafka를 쓴 것도 파일 기 반 메시징 처리로 높은 데이터 안전성을 가진 kafka의 특징을 활용한 것이다.

분산처리저장시스템인 HDFS는 수집된 사이니지 로그의 저장, 데이터마트, 분석모델 생성 후 저장 등 모든 파일의 저장소 역할을 하였다. 또 분산코디네이터인 Zookeeper는 Hadoop 의 HA 구성과 Kafka의 관리를 위해 사용되었다.

한편 Hive는 Hadoop용 데이터 웨어하우스다. 분석용으로 수집한 로그의 데이터는 무려 1,700만 건에 달하는데, 이들의 최대값과 최소값 등 데이터를 분석하거나, 데이터 마트를 구축할 때 sql로 분석이 필요한 경우 Hive를 사용했다. 또 대량의 데이터를 분석하거나 데 이터 마트 구축에 고성능 클러스터 컴퓨팅 시스템인 Spark를 사용했다.

R과 Rserve는 통계·데이터 마이닝 및 그래프를 위한 언어인데, 사전데이터 분석용으로 사 용하였다. 협업 필터링 알고리즘을 R의 recommenderlab 패키지를 활용하여 구현하였다. 또 분석 수행 초기에 Random Forest Classification 구현을 위해 Spark-MLlib을 사용했다. 또한 실시간 광고 추천을 위해 Spark-Streaming모듈을 사용하여 사이니지로부터 발생되는 로그의 실시간 처리를 진행하였다. 시각화 도구인 Zeppelin은 Spark를 이용한 분석 및 마트 생성과, Spark-ML을 이용하여 Random Forest Classification 모델을 생성할 때 사용되었다. 마지막으로 네이버 지도 API는 현 지도에 보여주기 위해 사용했으며, 구글에서 제공하는 차트 오픈 소스는 2015년 사이니지 데이터 의 통계성 데이터를 차트로 보여주기 위해 사용했다.

3) 데이터 수집과 분석 모델링
수집한 데이터는 디지털 사이니지 업체에서 제공한 광고 스케줄 데이터와 디지털 사이니지 의 로그 데이터, 기상청의 과거 날씨와 예보, 그리고 서울시 유동인구 서비스에서 제공하는 지역별 유동인구가 있다.

column_img_3208.jpg

column_img_3209.jpg

구성원들은 분석 모델링에서 우선 광고의 주목시간에 영향을 끼치는 주요 변수를 선택하 기로 하였다. 주목시간과 기타 변수 간 상관관계를 분석한 결과, 주목시간과 연관된 변수는 연령임을 확인했고, 주목시간과 기타 변수 간 인과관계를 분석해보니 주목시간에 영향을 주는 변수는 성별임을 알 수 있었다. 또 랜덤포레스트를 이용해 변수 중요도를 확인한 결 과, 연령이 주목시간 구간대 분류에 영향을 주는 변수임을 파악했다. 모델의 정확도는 20% 미만을 보였다.

4) User Based CF
빅데이터 분석에서 사용자의 과거 행동 데이터를 중심으로 사용자에게 필요한 정보나 제품 을 골라 제시해 주는 시스템을 추천시스템(Recommender System)이라 한다. 추천시스템에 도 User Based CF, Item Based CF나 Content-based Filtering, Knowledge-based Filtering 및 Hybrid 방식 등 종류가 다양한데, 본 프로젝트에서는 그 중 User Based CF(Collaboravtie Filtering)를 적용하였다.

User Based CF란, 구매·소비한 제품에 대한 각 소비자의 평가를 받아서 평가 패턴이 비 슷한 소비자를 한 집단으로 보고, 그 집단에 속한 소비자들의 취향을 활용하여 추천하는 협 업 필터링 기법을 말한다. 예를 들면 ‘갑’이라는 소비자와 제품평가 패턴이 비슷한 사람들 (이웃)을 찾아내고, 이 사람들이 공통적으로 좋아하는 제품 중에서 ‘갑’이 아직 접하지 않은 광고를 골라서 제시하는 기술이다.

먼저 기본 User Based CF 모델 트레이닝을 실시하여 테스트 데이터의 사용자별로 5개의 광고를 추천했다. 이 추천모델의 유사도를 측정하는 기준을 결정하고 모델의 정확도를 파 악하였다. 그 다음 추천모델에 대한 이웃수 결정을 시뮬레이션하였다. 이상 3개의 단계를 16번 반복하여 데이터 분류 기준별 모델을 생성하고, 그 모델과 활용 데이터를 저장했다. 5)실시간 추천
column_img_3210.jpg

실시간 추천은 Rserve를 통해 CFSS.R의 함수를 호출하여 추천광고를 데이터베이스에 저 장하고 실시간으로 광고를 내보내는 이른바 광고 추천 서비스를 사용하는 것이다. 위 그림에서 보듯이 구성원들이 사용한 서버 중 Spark04 서버에 설치된 R을 이용하여 실 시간 추천 서비스를 구축하였다. CFSS.R을 Spark-Streaming으로 1회 로딩하고 사이니지 로그로부터 추출한 변수값을 fn_pred함수에 파라미터로 입력하여 호출하면 사용자그룹별 추천광고를 리턴해주는 방식이다. 추천 광고가 없을 경우 해당 사이니지, 성별, 연령대별로 가장 많이 본 광고를 추천하였다.



The Outcome

이번 분석에서 처음에는 광고주의 광고 타겟팅의 정확성 통계도 분석모델로 삼고자 하였으 나, 광고주가 목표로 하는 것에 대한 정보가 없어 최종 분석에는 반영되지 못해 아쉬움이 남 았다. 또 추천시스템 중 User Based CF만을 적용하였으므로, Item Based CF 방식을 혼용하 여 적절한 모델을 선정하는 방법을 고려할 필요도 있을 것이다. 아울러 데이터 측면에서 광 고 콘텐츠에 대한 메타 정보를 확보할 수 있다면 Content based CF 방법을 적용한 hybrid 방 식의 추천 모델링도 가능하다고 보고 있다.

기술전문가 12기 우수조의 구성원들은 향후 아마존웹서비스(Amazon Web Services)에 빅 데이터 기술 인프라를 구축하여 디지털 사이니지 맞춤형 광고를 상용화할 예정이다. 또한 실제 광고를 이미 구축한 추천 모델링에 적용하여 정확도를 높이고, 사이니지에 달린 카메 라의 인식률을 높여 실시간 추천까지 영역을 확장해나갈 계획이다.



출처 : 한국데이터진흥원

제공 : 데이터 전문가 지식포털 DBguide.net