Insights
Data science with R - 3. 최적화
2017-04-04
By
Keith Lee
Insights
Data science with R - 3. 최적화
April 4, 2017
By
Keith Lee

“A learning machine is any device whose actions are influenced by past experience.”

필자는 책 읽기를 좋아한다. 특히 요즘처럼 미세먼지가 겁날 땐, 주말에 타블렛, 쇼파와 삼위일체를 이루고 하루종일 뒹굴면서 구글 북 스토어를 뒤지다 하루를 보낸다. 하나 재밌는 사실은, 구글이 이제 필자의 관심사를 잘 파악했는지 필자가 읽고 싶어할만한 책들만 상위 리스트에 보여준다. 바둑 잘 두던 알파고를 이젠 구글 북 스토어 유저의 관심사 파악을 위해서도 쓰고 있나 보다.

사실 온라인 북 스토어 뿐만 아니라 쇼핑몰, 패션몰, 심지어 게임까지 온라인 사업 곳곳에서 유저의 행동 패턴을 바탕으로 관심사를 파악해 영업에 활용한다는 글을 심심찮게 볼 수 있다. 지난 글에 썼듯이, 빅 데이터 시대로 넘어오면서 단순하게 최종 결제 데이터만 보는게 아니라, 결제 이전 클릭했던 기록들을 활용해서 어떤 상품에 더 관심이 있을지를 예측하는 모델들이 빠르게 정교화되고 있다. (필자의 친구는 웹 오픈 스토어에서 구매하려고 고민하다 포기했던 상품이 계속해서 광고로 따라오는게 농담반 진담반 소름끼친다는 이야기까지 하더라.)

흔히들 마케팅의 최종 목표를 Right Person, Right Ad, Right Time으로 요약한다. 한 사람이 관심있을 광고를 적절한 타이밍에 보여주려면, 일단 그 사람이 무엇에 관심이 있을지 정확하게 파악을 해야한다. 고전적인 마켓 리서치 방식은 직접 예상 수요자를 찾아가서 설문조사를 하겠지만, 우리는 이제 “빅 데이터” 시대에 살고 있지 않은가? 필자가 구글 북 스토어에서 꾹꾹 눌러봤던 책들은 필자가 어떤 제목과 어떤 요약글에, 그리고 어떤 장르의 서적에 관심이 많은지를 잘 보여준다. 설문조사에는 로맨스 소설을 좋아한다고 “뻥”을 치더라도, 정작 구글 북 스토어 클릭 기록을 보면 SF 소설과 괴기 소설밖에 없다면 필자의 진정한 관심사는 무엇일까? (전문용어로 Explicit data collection vs. Implicit data collection 이라고 표현하고, 필자의 행동을 바탕으로 추론해낸 선호도를 “현시선호, Revealed preference"라고 한다. )

여기서 질문을 하나 던진다. 필자의 현시선호를 바탕으로 필자가 좋아하는 책 장르 위주로 추천을 하는게 더 좋은 방법일까? 아니면 필자와 비슷한 현시선호를 보인 다른 유저가 봤던 다른 책들 위주로 추천을 하는게 더 좋은 방법일까? 첫번째 방법은 Content-based (or personality-based) filtering으로, 컨텐츠의 특징을 외부적으로 지정하고 그와 유사한 책을 추천하는 방식이고, 두번째 방법은 Collaborative filtering으로, 다른 유저들의 행동 패턴 데이터 중 유사한 패턴을 찾아 유저의 특징을 지정하는 방식이다.Link

첫번째 방법은 누군가가 장르를 인위적으로 지정해야하고, 두번째 방법은 다른 유저의 (방대한) 로그 데이터가 있어야 한다. 예전엔 첫번째 방법이 주류였고, 빅 데이터 시대가 오면서 두번째 방법을 채택하는 회사가 많이 늘어났다. 그렇다고, 두번째 방법이 꼭 더 우월한건 아니다. 사실 좋은 추천 엔진은 두 방법을 (적절하게 잘) 혼합한다. 그리고 결론을 미리 언급하면, 더 좋은 엔진은 퓨전하기 전에 더 잘 만들어서 퓨전한다. (먼저 초사이어인이 되고 퓨전해야된다.)

1. 데이터 다루기

외부 투자자들을 만나면 필자가 얼마나 좋은 모델을 갖고 있냐는 질문을 자주 받는다. 광고 시장 기준으로 번역해보면 얼마나 효율이 잘 나오는 모델인지를 묻는 질문이라고 생각한다. 자기 돈을 써서 결과를 보고 싶은 투자자나 서비스 이용자 입장에서는 적절한 질문이지만, Data Scientist 입장에서는 사실 좋은 질문은 아니다. 필자 입장에서 좋은 모델보다 더 중요한 것은 좋은 데이터, 그리고 잘 골라낸 데이터다. 머신러닝 엔진은 결국 데이터로 완성되니까.

데이터에 기반한 연구를 하다보면 크게 두 가지 접근 방식이 있다. 하나는 합리적인 가정과 경험적인 지식을 바탕으로 모델을 만드는 것이다. 내 광고에 많이 노출된 사람, 내 광고를 많이 클릭한 사람, 내 웹페이지에 많이 들어왔던 사람, 우리 회사 앱을 많이 열어본 사람이 우리 회사 상품을 많이 사줄 것이라고 가정하면, 아마 크게 틀리지는 않을 것이다. 물론 광고에 한번만 노출되고 바로 구매한 사람과 광고 비용만 많이 들어가고 정작 경쟁사 웹사이트에서 구매한 사람도 있겠지만, 최소한 한번도 노출 안 된 사람이 구매할 확률이 0%라고 생각하면, 한 명, 한 명에 대한 예측은 어려워도 몇 백명의 유저에 대한 예측은 어느 정도 합리적으로 맞출 수 있지 않을까?

두번째 접근 방식은 보유한 데이터를 다 넣어보는 방식이다. 통계학에서는 Stepwise regression이라고 부르는데, N개 변수의 모든 부분 집합들을 하나씩 다 넣어봐서 가장 높은 설명력을 가진 변수 집합을 찾는 접근법이다. 머신러닝 수업에 들어가보니 같은 방식을 Wrapper method라고 부르더라. 인간의 인지 능력에 한계가 있기 때문에, 인간이 보지 못했던 상관관계를 찾아낼 수 있다는 점에서 더 우월한 방식인 것 같지만, 의외로 수학 좀 들어간다는 학문하는 사람이 이런 통계 방법론으로 연구하는 경우는 매우 드물고, 머신러닝에서도 Computational cost가 많이 들고 모델의 Overfitting 이슈가 있다는 점 때문에 일반적으로 쓰이는 방식은 아니다. (Overfitting은 데이터 세트 1번에서 매우 완벽한 설명력 or 예측력을 자랑하는 모델이 데이터 세트 2번에서는 좋은 모델이 아닌 경우를 말하는데, 좋은 모델은 데이터 세트에 관계없이 설명력 or 예측력을 유지할 수 있는 모델이다.)

이전 시리즈 글에 언급한대로, 예전에 도무지 예측용으로 쓰기 어려울 것 같은 데이터로 클릭율(CTR)이 높게 나올만한 유저들을 찾아달라는 부탁을 받은 적이 있었다. 한참동안 데이터를 정리하고 이것저런 모델들을 고민해보다, 일단 LASSO algorithm으로 데이터 전체를 넣어서 클릭율에 Regression을 돌려봤다. 참고로 LASSO는 설명력이 0%가 아닌 모든 변수를 다 잡아낸다. 그리고 Decision tree로 어떤 변수가 어떤 방식으로 설명을 해내는지도 찾아봤다. 이렇게 일단 체를 치고나면 남은 데이터를 자신있게 딥러닝 알고리즘에 퍼담으면 될까?


(Decision tree 예시)

변수 추출 (Feature selection)

우선 최종 목표가 유저의 AD ID니까, 그 기준으로 노출 횟수, 클릭율, 노출된 상품, 클릭한 위치 등등의 기초 정보를 바탕으로 데이터를 정리했다. 그리고 기존의 유저 타게팅에서 하는대로 각 그룹별로 클릭율을 묶어봤다. 아마 가장 많이 알려진 방법은 성별이나 연령별로 유저들을 묶어보는 방식일 것이다. 아래는 연령대별로 다른 클릭율을 도식화한 표다. 뿐만 아니라, 스마트폰 브랜드 별, GPS 기반 거주 지역별 등등 다양한 방식으로 그룹을 나눠볼 수 있다.


(연령대별 CTR)

그러나 필자는 유저의 프로필 데이터로 유저 성향을 추적하는 방법에서 한 발자국 더 나아가 행동 패턴으로 유저의 특징을 찾아보고 싶었다. 우선 광고 노출 시간대를 기준으로 보면 새벽에는 클릭율이 높다. 또 대부분의 사람들이 숙면을 취하고 있는 시간이라 사용자의 숫자도 적다.

(시간대별 CTR과 사용자 수)

그렇다면 이 시간대에만 접속하는 유저들과 아닌 유저들을 구분해보는 방법은 어떨까? 한 단계 더 나아가서, 두 개 이상의 다른 시간대에 노출된 유저의 행동 패턴이 다른 경우는 어떻게 할까?

타켓이 유저가 아니라 어떤 특징을 갖춘 그룹이라면 Network를 도식화해서 그룹간 특성이 유사한 집단과 유사성이 떨어지는 집단으로 묶을 수도 있다. 유저 행동 패턴을 바탕으로 여러가지 가능성들을 놓고 하나하나 테스트해보면서 “쓸 만한” 변수들을 추려내는 작업은 보통 이렇게 진행한다. (더 구체적인 내용은 Confidentiality 이슈로 생략한다.)

변수 추출을 한 문장으로 요약하면? Think Big? Think Deep!

2. 모델 선정 (Model selection)

"Premature optimization is the root of all evil in programming.”

위의 방식으로 데이터를 정리하고, 합리적인 변수(Feature)들을 도출해내고 나면, 이제 “예측”을 위한 모델을 만들어 볼 수 있다. 서두에 언급한대로 우선 "협력 필터"(Collaborative filtering) 모델을 만들어보자. 협력 필터는 크게 두 가지로 나뉜다. 하나는 유저간(User-to-user), 다른 하나는 상품간(Item-to-item) 협력 필터다. 쉽게 설명하면, 유사한 행동 기반 데이터를 가진 유저(Neighbor)들을 찾아주는 방식과, 비슷한 패턴으로 검색되는 상품을 묶어주는 방식이라고 보면 된다. 같은 맥락으로 언어 번역에 많이 등장하는 Sequence-to-sequence 협력 필터도 있는데, 단어 나열 순서에 따라 전체적인 의미가 달라지는 것을 추적하는 방식이다. 세가지 방식 모두 상품이나 단어같은 구성요소의 나열을 보고 특성을 파악해낸다는 점에서 동일하고, 차이점은 기준점이 유저인지, 상품인지, 아니면 문장인지라고 보면 되겠다.


유저 기준 협력 필터 예시

간단하게 쇼핑몰 유저 데이터 기준에서 기술적인 난관을 설명하면, M명의 유저와 N개의 상품이 있으면 최대 M x N개 만큼의 가능성을 고려해야한다. 물론 현실에서는 1-2개 상품만 보고 떠나는 유저가 대부분이라 가능성의 집합이 훨씬 작기는 하지만, 유저의 숫자와 상품의 갯수가 많은데 정작 데이터가 적은 쇼핑몰일수록 일반적인 협력 필터는 잘 작동하지 않는다. 또한 완전 반대 성향인 제품을 계속해서 따라가고 있는 유저에게 적절한 필터를 찾기도 쉽지 않은 문제가 있다. (언어의 경우에는 비꼬는 문장, 언어 습관의 차이 등등의 이유로 훨씬 더 많은 조건을 따져야한다.)

아마존은 이미 오래전부터 상품간 협력 필터를 도입해 사용하고 있다.PDF 상품간 유사성을 유저들의 상품평을 바탕으로 찾아내 x상품과 y상품에 긍정적인 평을 했던 유저들이 많은데, 당신이 x상품에 좋은 평을 썼으니 y상품에도 좋은 평을 쓸 것이라는 가정을 바탕으로 한 모델이다. 유저간 정보를 매칭하는 것보다 훨씬 더 적은 조합을 고려해도 된다는 점에서 효율적이지만, 데이터가 적은 쇼핑몰, 특이한 조합을 검색하는 유저가 많은 쇼핑몰에서 오작동할 여지가 있는 것은 마찬가지다.


상품 기준 협력 필터 예시

쇼핑몰을 운영하고 있으면 매일 새로운 데이터가 들어올 것이고, 이런 알고리즘을 Recurrent Neural Network에 얹어서 추가적인 Learning을 시키면 (평균적으로) 매일매일 모델의 성능이 좋아지는 것을 볼 수 있을 것이다. (모델 잘 짜고, 데이터 좋으면)

협력 필터의 한계

데이터가 충분해서 소수의 특이한 조합의 유저들을 걸러낼 수 있다고 하더라도 협력 필터가 모든 문제를 해결하는 것은 아니다. 여러가지 문제가 있겠지만, 필자의 경험을 바탕으로 크게 두 가지 문제를 뽑으면, 1. Positive feedback problem, 2. Cold start problem으로 정리해 볼 수 있겠다.

첫번째 문제는 다양성이 부족한 유저가 계속 유입되면, 협력 필터의 결과로 특정 시퀀스 위주의 데이터 셋으로 변한다는 것이다. 쉽게 말하면, 상품 a-b-c만 노출되고 d에서 z까지 다른 상품이 노출 안 되는 문제가 생긴다. 실제로 상품으로 협업 필터를 적용하면 데이터 쏠림이 심해져서, 극히 일부의 상품만 팔리는 경우를 흔히 볼 수 있다. (통계학에서 Bias toward popularity 라고 한다.) 이런 부익부 빈익빈의 대표 사례가 리타게팅 광고 상품이다. 리타게팅 광고의 경우는 특정 상품을 봤던 유저에게 같은 상품을 계속 노출시키는 것도 중요하지만, 유사한 상품, 혹은 유저가 관심있을만한 상품을 노출시켜 그 유저가 되돌아 올 수 있는 추가적인 정보를 제공해서 데이터 오염을 방지해야한다. 이렇게 기존에 노출이 없었던 상품을 노출시켜 유저들에게 신선함을 주는 것을 **”Serendipity”**라고 통칭하는데, Serendipity를 효과적으로 만들어낼 수 있는 알고리즘이 보통 더 효율이 더 높(다고 알려져 있)다.

두번째 문제는 데이터가 없는 유저, 노출된 적이 없는 상품들의 경우다. 많은 정보가 없는 유저, 혹은 많은 노출 정보가 없는 상품의 경우는 아예 엔진이 작동할 수가 없다. 어느 쇼핑몰 웹사이트 홈페이지만 슬쩍 방문하고 바로 튕겨나간 유저의 경우를 생각해보자. 다시 돌아오라고 리타게팅을 하는데 어떤 상품을 보여주는게 맞을까? 기존의 유저들에서 뽑은 데이터 패턴으로 맞춰보고 싶어도 맞출 데이터가 없으니 솔직히 리타게팅 엔진으로 할 수 있는 부분이 없다. 그리고 많은 쇼핑몰들에게는 안타까운 사실이지만 이런 유저의 비율은 매우 높다.

컨텐츠 필터 (Contents-based filter)

Cold start problem이 발생할 때 무조건 인기 상품을 노출하면 어떻게 될까? 아마 Positive feedback problem에 걸려 특정 상품만 대거 노출되는 문제가 생길 확률이 높아질 것이다.

컨텐츠 필터(Contents-based filter)는 협력 필터의 한계를 일부 보완해줄 수 있다. 아무런 정보가 없는 유저에게 여러 상품을 무작위로 노출시킨다음, 반응을 보이는 상품과 유사하게 묶인 상품들을 노출시키는 방법을 택하는 것이다. 규칙은 모델을 만드는 Data scientist가 결정하면 되겠지만, 단순하게 예를 들면, 최초 3개 상품에 대한 현시 선호가 나타날 때까지는 쇼핑몰 내부적으로 정해놓은 카테고리에 맞춰서 노출시키는 방법을 택해볼 수도 있다. 그리고 이런 하이브리드 시스템이 현재 대다수의 온라인 스토어가 운영되는 방식이다. 필자가 가끔 신규 구글 계정을 만들어 구글 북 스토어를 열어보면 기존 계정에서 필자에게 노출되던 도서와 유사하게 정리되기까지 일단의 시간과 클릭이 필요함을 확인할 수 있다.

혹시나 유사한 기능을 자사에 얹을려고 하는 데이터 사이언티스트 분께 아픈 경험담을 간략하게 공유해드리면, 컨텐츠 필터가 오작동하면 유저 데이터가 오염되어서 협력 필터가 초기 데이터의 오류를 수정하는데 오랜 Learning이 필요한 경우가 있다. 또, 최초 방문시에 컨텐츠 필터가 잘 작동하더라도, 협력 필터로 특정 상품에 쏠린 데이터가 증가하면서 결국 Positive feedback problem을 극복하지 못한 사례도 많았다. 필자의 결론은 컨텐츠 필터를 잘 만들고, 적당히 Serendipity가 나타나는 협력 필터를 만들기 전까지는 두 모델을 무작정 퓨전해서는 안 된다는 것이다.

한 줄 요약: 퓨전되기 전에 초사이어인을 만들어놓고 퓨전하자.

3. 알고리즘 최적화

알파고가 이세돌 9단을 이겼다는 사실에만 집착한 나머지, 많은 사람들이 간과하고 있는 내용이 있다. 구글이 이 게임을 위해서 무려 CPU 1202개, GPU 176개를 썼다는 사실이다. 물론 요즘같은 시대에 컴퓨팅 파워를 위해 100억 정도를 투자하는게 큰 기업 입장에서는 크게 부담스러운 일이 아닐지도 모른다. 그렇다고해도, 필자는 "하드웨어를 무작정 많이 투자한다고 모델의 성능이 좋아지는게 아니라서 알고리즘을 꾸준히 개선해왔다고” 이야기한 구글 딥마인드 데미스 하사비스 CEO (같은 기사)의 발언에 주목해보고 싶다.
(필자의 조심스런 짐작으로는 CPU 숫자를 더 늘려도 시스템 내부적인 통신 속도 때문에 계산 속도가 느려지는 경우가 더 많았을 것 같다.)

일반에서 쓰는 머신러닝 모델은 대규모 강화학습 (Reinforcement learning) 모델이 아닌 이상, 굳이 저렇게 대량의 계산 비용을 들여야할 이유가 없(다고 생각한)다. 오히려 간략한 모델로 계산 시간을 줄이고, Overfitting 이슈도 피하는 편이 더 좋지 않을까? (체력 소모가 심한 초사이어인3를 만들어서 퓨전할 필요는 없다.) 모델의 계산 비용을 줄이기 위해서는 불필요한 변수를 제거하고, 핵심 변수만을 추려내는 방식으로 데이터를 정리하는 방법이 있고, Neural network 모델 자체를 수정하는 방법, 개인용 컴퓨터에서 CPU에 더해서 GPU를 쓰도록 코딩을 수정하는 방법 등이 있다.

데이터 최적화

일단 아주아주 유사한 변수 2개가 있다고 생각해보자. 둘 모두 예측에 큰 도움이 되어서 변수로 추출되었는데, 정작 둘 중 하나만 써도 크게 차이가 없다면? 그런데 둘 다를 모델에 넣었다면? 이런 경우 통계학에서는 다중공선성(Multi-collinearity)으로 인해 모델 결과값이 부정확할 수 있다고 지적한다. 머신러닝에서도 Gradient descent가 수렴하지 않는다고 모델이 에러값을 낼 것이다. 통계학적으로 여러가지 대안이 있겠지만, 필자는 머리아픈게 싫어서 평소에는 둘 중 하나를 제거한다.

이번엔 변수가 많은데, 일부 변수는 매우 도움이되고, 다른 변수들은 그다지 도움이 안 되는 경우를 생각해보자. 이 때 필자가 자주 쓰는 도구 중 하나는 Principal component analysis (PCA)다. 예를 들어 변수가 10개 있을 때, 그 중 4개 변수만 써도 전체의 95% 설명력을 다 유지할 수 있다면, 굳이 나머지 6개 변수를 더 쓰면서 5%의 추가적인 이득을 얻어야할 필요가 있을까? (물론 그 5%가 중요한 경우가 분명히 있겠지만...)

(참고로 PCA는 covariance matrix에서 eigenvector를 뽑아내고, 그 중에서 가장 큰 eigenvalue 값을 찾아내, 작은 dimension으로 최대한 유사한 covariance matrix를 만들어내는 방법이다.)


(PCA 막대 그래프 예시: 각 변수별 (co-)Variance의 크기)

두 변수가 서로 반대 방향의 영향을 주고 있을때는 어떻게 해야할까? 위와 같이 데이터들을 벡터로 표현해서 변수들간의 관계를 벡터간 관계로 도식화할 수 있다. (참고로 구글이 자연어 처리할때도 같은 방법을 쓰더라. Structure learning이라고 부른다. 궁금하시면 Word2Vec)


(PCA 벡터 그래프 예시)

모델 최적화

강화학습(Reinforcement learning)을 직접 돌려본 사람들은 알 것이다. 결과물이 복잡할수록, 성능이 향상되는데 많은 데이터와 긴 학습 시간이 필요하다. 많은 데이터와 긴 학습 시간이 필요한 이유는 컴퓨터가 인간처럼 똑똑하질 않아서 필요없는 부분까지 다 계산해서 확인하고 넘어가기 때문이다. 그럼 어떻게 해야할까? 인간처럼 불필요한 계산을 제거하도록 미리 설정을 하면 된다. 사실 어느정도 Deep neural network가 돌아가고 나면 무의미한 Node가 나타난다. 그 부분들을 제거기만해도 연산 속도가 상당히 빨라질 수 있다. 당장 필자가 hidden layer 설정을 (3,4,2)에서 (3,2,2)로 줄이면 고려해야하는 Node의 숫자가 3 x 4 x 2 = 24 개에서 3 x 2 x 2 = 12 개로 절반으로 줄어들고, Learning이 계속되면 뒤의 2 x 2 둘 중 하나의 Layer는 필요없게 되는 경우가 많다.

Deep Neural Network에서 Node deactivation 예시

이외에도 CPU의 멀티 코어 기능을 활용하는 방법으로 Parallel computing이 있고, 심지어는 매트릭스 연산에 특화된 GPU를 쓰는 방법 등으로 하드웨어 자원을 최대한 활용하는 방법도 일반에 알려져 있다. (좀 더 기술적인 내용을 주워담으면, CPU는 속도에 방점이 맞춰져있고, GPU는 한꺼번에 계산하는데 초점을 맞춘 연산을 한다. 메모리는 작지만 데이터를 빠르게 계산할 때는 CPU의 능력이 필수적이지만, 빅 데이터를 한번에 읽어서 계산을 해내야할 때는 GPU가 더 필수적이다. Link)

최적화란?

온라인 광고 시장에 머신러닝을 적용할 수 있는 방법은 헤아릴 수 없이 많다. 위에 기본적인 아이디어만 살짝 나열한 CTR optimizer는 사실 기초다. 여기에서 좀 더 나아가면, 전환율이 높은 유저를 타게팅하는 CVR optimizer도 만들 수 있고, 돈을 많이 쓸 ROAS optimizer도 만들어 볼 수 있다. CTR optimizer가 잘 만들어졌다면, 나머지 두 모델 모두 변수 몇 개만 더 추가하고 가중치를 약간만 조절하면 된다. 그리고 가중치 조절은 Deep neural network 모델이 알아서 해 줄 것이다. 더 나아가서, 광고 효율이 제일 좋은 최적 지면을 찾아주는 알고리즘을 만들수도 있고, 최적의 배너 폰트, 크리에이티브, 디자인을 찾아주는데도 적용할 수 있다. 그리고 기본적인 모델 로직은 위에서 크게 바뀌지 않을 것이다.

필자가 시리즈 글 내내 주장하는대로, 사실 (일반 비지니스 레벨) 머신러닝 모델은 이미 Tensor flow, scikit-learn 같은 패키지를 통해 제공되고 있기 때문에 모델에 대한 기술적 이해보다는 어떻게 적용하는지에 대한 창의적인 아이디어가 더 중요하다. 그리고 그보다 더 중요한 것이 하나 있는데, 바로 데이터다. 얼마나 많은, 얼마나 큰 데이터가 아니라, 어떤 종류의 데이터를 갖고 있는지가 더 중요하다고 이미 수 차례 언급했다. 그리고 그런 핵심 데이터가 있어야 좋은 아이디어들이 빛을 본다.

따라서 재미없는 초사이어인 이야기보다는 질 좋은 데이터를 모으기에 더 집중해보기를 추천한다. 모바일 앱을 운영하는 개발사라면, 데이터를 모아주고, 관리해주고, 광고주가 원하는 솔루션으로 바꿔주는 플랫폼, airbridge 한번 써보면 어떨까?

  1. 빅 데이터, 머신러닝, 데이터 사이언스에 대한 오해
  2. 데이터 시각화(Data visualization)
  3. 최적화 - CTR Optimizer
  4. 멀티 터치 어트리뷰션(Multi-Touch Attribution Model)
  5. 크로스 디바이스 매칭(Cross-Device Matching)
  6. RTB란?
Keith Lee
더 알아보기
펫프렌즈, “데이터는 업무 효율성과 퍼포먼스 극대화를 위한 조력자이지, 데이터 그 자체가 우리의 목적이 아니니까요.”
반려동물 전문 온라인 쇼핑몰 펫프렌즈가 데이터 기반 의사결정 문화를 기반으로 어떤 그로스 전략을 실행하고 있는지 알아보세요.
성공 사례 보러가기
띵스플로우, "UA 및 CRM 마케팅 성공 사례를 만들려면, 마테크 인프라가 갖춰져 있어야 합니다."
‘헬로우봇’부터 ‘스토리플레이’와 ‘비트윈’까지, 띵스플로우의 마케팅을 총괄하고 계신 이슬기 CMO님을 인터뷰했습니다. 띵스플로우의 성장에 함께하고 있는 에어브릿지 및 브레이즈의 활용 인사이트를 확인해보세요!
성공 사례 보러가기
15,000명 이상의 업계 관계자들이 구독하고 있는 뉴스레터를 통해 업계 최신 트렌드를 가장 먼저 만나보세요.
응답이 제출되었습니다. 감사합니다.
잘못된 메일주소입니다.
주식회사 에이비일팔공
서울특별시 서초구 강남대로 61길 17, 3층, 4층 (서초동)
사업자등록번호: 550-88-00196
대표이사: 남성필
Copyright ⓒ 2023 AB180 Inc. All Rights Reserved.
개인정보 처리방침