跳到主要內容

LINE Ads Platform 演進史,魔鬼藏在細節中

LINE Developer Day 2019 有一場 Session 讓自己一定要參加一下,LINE Ads platform revolution。

Ads Platform

對於大部分的人來說,這可能是一個最熟悉的陌生人,對於電商平台以及眾多需要曝光的使用者來說, Ads 的來臨讓各位迎來曙光。
最直接的例子莫過於 Facebook 廣告投遞,簡單來說,
投標 -> 快曝光 (給錢) -> 轉換 -> 達到目標

但是,最重要的就是這個 BUT , 投標與曝光之間有許多事情需要進行。
數位廣告已經脫離一刊 100 元的年代許久(雖然許多公司還是用這樣的概念在做事情),但實際上的概念是,
投標 -> 達到標地 -> 投遞 ->  投遞總量 * 投標金額 / 目標轉換
當此數字出來時,才會是大家所期待看到 100 元 / Click (或者任何轉換) 的計算金額。
聰明的各位肯定有想到了,這樣最簡單的方式,其實並不是告訴大家要投標多少,而是從使用者希望的轉換的預期金額,來進行回推投標金額。
因此還是一樣的概念,投標數字越高,就可以越快達到標,簡單來說就是,
如果有 100 元達不到的事情,那就 200 元,如果再不行就 ...

Ads Platform 驚奇之旅

對於廣告平台來說,有兩件事情,
  1. 讓使用者願意投錢
  2. 使用者投遞的錢,可以適當的放到正確位置,給正確的人
在所謂的 Realtime bidding 當中,最困難的部分莫過於, Realtime 的部分,以 LINE 的例子來說,如果台灣有 1900 萬的使用者,意味著如何在投遞的過程中做出 87% 相似,或盡量做到與實際狀況相同的推估,這要將 Data 在之前做大量的預先處理,以及對於版面的選擇做最優化處理,包含此群眾與版面之間互動關係推估等,會是
  • UI
  • API
  • DATA / Rules
  • AI / Preprocess
這幾個項目的結合,才可能可以做到很適當的配合與推估行為,讓使用者投遞金額時達到一定的信心程度,同時使用者在進行小量投遞的時候,也會參考 Ads Platform 的推估進行做實際數字比對,讓使用者進行交互比對,提高對於 Ads Platform 的信心程度。

Auto biding

能夠達到上述部分之後,擁有夠多的實際投遞結果,加上實際的數據,以及使用者喜好程度,素材,群眾類型,轉換行為等資訊後,才有辦法逐步做出 auto biding.
看似很簡單的投遞行為,實際上在 LINE Ads Platform 也提出幾個機制。
  • 即時監控機制(包含資料,投遞,使用者行為)
  • 可測試環境與資料 (進行實際狀況離線及線上驗證,進行小且多型的驗證 A/B testing)
  • 即時回饋機制(從投遞,到效益結果的表現)
而其中講者其實有輕描淡寫的講述了一部分,那就是在做 Prediction 的時候其實尤其困難,因為你不會知道使用者的投遞區間,假設 1week 的時間,其實你很難預測到 1week 後使用者行為會是怎麼轉變,會不會真的達到目標(轉換),並且這是要做整段時間的追蹤。
這段,雖然講述起來輕鬆,但實際過程實在煎熬,需要等待資料的累積,同時也需要同時修正預測模型和算法,需要不斷的與 AI 團隊溝通,同時又要背負著這個廣告平台怎麼這麼難用的煎熬 … (掩面哭泣)。
相信也是在這段時間才有辦法做出 Reach and frequency buying simulator,讓整體預估可以趨近於實際狀況。

後記

你說廣告系統好玩嗎?
很好玩,而且越是了解廣告系統行為之後,你就會更清楚 LINE / Google / Facebook 為什麼這樣下廣告,更可以了解數位廣告生態的模式,從投遞平台到實際測試投遞廣告,到廣告實際投放過程就可以體會到,目前這個廣告系統是到哪一個階段。
How LINE Ads Platform is Constantly Evolving 一場很輕鬆 40 多分鐘的演講,可能對於大部分的聽眾來說會是無感的,也會覺得只是在描述一個平台的成長過程,與自己所知道的名詞相差無幾。
實際上談笑風生之餘,底下藏了多少血淚,還有多少工程,數據,算法的結合,加上被需求與供給方追殺的血淚累積出來的成果。
就像是上面最後一張圖一樣,數位廣告方式實際上還在成長中,我們都也是在持續探索這個數位世界,當我們用 lookalike 探索出數位人格之後,能做的事情更大了。
但也表示需要對於使用者的隱私需要有更多的負責,也意味著 Ads Platform 需要做出一定的 filter, 讓真正的廣告可以被刊出,讓假廣告與擾亂人群的惡意擴散資訊退散,盡到平台該負責的責任。
雖然很久沒有接觸數位廣告,但能夠再次聽到 LINE Ads Platform 開發史這樣的歷程,可以讓我們思考一下,也許下個 5 年,數位廣告會是什麼樣子,我們可以怎麼進行整個架構規劃,一想起來就覺得『興奮啊』

留言

這個網誌中的熱門文章

[分享] 腳踏車環島注意事項

很多人都期望自己能夠做點什麼,做些什麼,而退伍之後的第二個星期,就展開了環島之旅。 對很多人來說這不算什麼,甚至有人展開了走路、跑步、溜滑板、單輪車等方式環島一周,充分展現對台灣的愛與關懷。 這篇主要讓不知道怎麼準備環島的人,作一個完善的解說,首先隨身的東西要有: 證件現金類 : 身份證 健保卡 學生證 現金 提款卡 悠遊卡

館長的網站技術瓶頸,小弟弟來解答 - notorious-2019.com

館長的網站技術瓶頸,小弟弟來解答 - notorious-2019.com 昨天看到館長的網站倒了,也看到館長說一個月花費大概一百萬左右的月費在支持這個架設的電商網站,也對外發布出來訊息,希望求救, 直接講結論 建議解法, 1. 首先要做的事情是讓整個網站可以橫向擴展 (Load Balancer + n 台伺服器),對,相信我,IIS 也是可以做 Scale out, 這是對於 Application layer 服務的解法。 2. 資料的部分 SQL 吞吐量,建議改成 GCP Cloud SQL, 或者就直接轉到 Azure SQL Server 環境上會相對容易解決 SQL 的問題。 上述 2 個步驟都處理完,其實 100 萬的費用,應該 20000 concurrent user 是沒有問題的,但前提是要設定『對』! 額外需要花較長期時間要處理的,建議就是在 Queue 的處理,購物車的狀態都可以進入到 Queue 再來處理 SQL insert 的問題,減少不斷的 insert / update 的狀態,後文會提到 ... 底下詳細的會再說明如何後後續還有哪些處理的細節。 這兩天剛好有個小空擋,就來分析一下狀況, 可以從外部讀取得到的服務大致上如下, ASP.Net : 4.0 IIS 10 + Windows (廢話) SQL Server (推測) OP Service: PleskWin Host: Google Cloud DNS: Cloudflare 前端服務內容架構 Server-side render, jQuery base, 推測有可能採用現成購物車來進行,看起來不太像是用 wooCommerce 比較像是 Cart Functionality 這類的項目直接搭建而成(當然這純屬猜測) 功能拆解 因為網站是透過 Server site render 所有頁面都需要重新透過伺服器進行載入,這樣的狀況,如果在頻繁忙碌的 eCommerce 網站架構下會是一個致命傷, 簡單來說,數量的查詢,特惠價,優惠碼等等資訊的處理,使用者每做一步都需要重新跳轉頁面,或者整頁面重新讀取,只是為了部分的資料更新,這些都可以抽取出來成為 API ,透過 AJAX 的方式進行讀取。 讀寫分離 在不了解目前資料庫複雜狀態下,首先要讓所有人都

[教學] 快快樂樂刪除CodeIgniter index.php

預設的CI網址預設都設定為index.php同一層級,因此所有的程式都必須指定index.php導向才能開始,例如 http://localhost/ci/index.php/welcome/test http://localhost/ci/welcome/test 本文將說明如何將惱人的index.php消除,還你一個漂亮的URL。 設定開始: 接下來說明如何使用rewrite方式將惱人的index.php去除。 rewrite不清楚的人,煩請先自行google 首先要先確定Apache的 mod_rewrite 有 開啟 ,如果沒有開啟請設定好之後重新啟動apache。 接著,在根目錄底下建立一個新檔案,檔名為 .htaccess ,裡面程式碼如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 接著到 application/config/config.php ,開啟檔案修改 $config['index_page'] = ""; 注意: /index.php/$1 要根據你目錄,例如 http://localhost/index.php ,網站根目錄為 /ci/index.php 則要寫成 /ci/index.php/$1 接著至CI目錄下,尋找 config\config.php , 修改一下裡面的檔案,修改如下: $config['index_page'] = ""; 存檔後,如此一來大功告成。 參考資料 官方網站說明