---
# System prepended metadata

title: Use Case - From rule based recommendation to AI

---

# Use Case - From rule based recommendation to AI

## 請完善 Use case 中的企業背景描述，包含但不限於
- ### 產業別
    - 電商產品廣告平台
- ### 商業模式
    - 幫客戶的產品在網路上進行廣告投放與推薦，並將流量導向客戶的電商網站，以點擊(CPC)或轉化(CPA)計價收費。
- ### 簡易組織架構(包含公司規模、重要的部門)
    - 公司規模：150人
    - R&D:
        - FE engineer: 15人 （負責前端user event埋點串接）
        - BE engineer: 15人（負責後端服務與管線建置開發）
        - Data engineer: 20人（負責data pipeline相關基礎設施建置與開發）
        - Algo/ML engineer: 20人（負責推薦演算法與機器學習模型之開發）
        - IT engineer: 20人（負責底層雲基礎設施建置與維護）
    - 非R&D:
        - Product manager: 10人
        - Sales: 20人
        - Marketing: 10人
        - Labeling: 20人
        - Others: 20人
- ### data team 人數以及組成
    - 40人 data engineer + Algo/ML engineer 
## 請完善 Use case 中的需求情境，包括但不限於
- ### 需求單位
    - Project Manager/Product Owner, 想要一個基於AI的推薦系統(user/content based recommendation)
- ### 對接單位
    - BE
- ### 提出需求的原因/目的/想達成的效果
    - 原因：目前公司使用的rule-based推薦系統效果不佳，使用者歷程相關資料正在進行串接中，因此希望通過以AI為基礎的推薦系統，觀察使用者正在觀看的網頁內容(Content)，挖掘潛使用者的潛在興趣產品。
    - 目的：希望能升級推薦系統，使用演算法參考網頁資訊進行推薦。
    - 想達成的效果：提升公司廣告平台產品的推薦的點擊率與轉化率。
- ### 需求單位期待的交付物，或需求單位期待如何使用這個服務/產品
    - #### 需求單位期待的交付物
        - 一套content based的推薦系統，至少含有下述功能，並具有擴增Feature的能力。
            - Machine Learning Training Flow
            - Machine Learning Serving Flow
            - Data(content) Ingestion/Transformation Flow
            - Cache System for Serving
            - Monitoring Dashboard
    - #### 需求單位期待如何使用這個服務/產品
        - 希望後端能無痛從rule-based服務方案切換至content-based的服務方案，獲得更準確的產品推薦結果。

- ### 需求單位期待的 SLA（Service level agreement）
    - CPC lifts 5%
    - 99% service up time
    - maximum 200 ms response time increase
- ### 這需求對於企業/組織的價值
    - 推薦使用者更感興趣的產品，能增加CPC或CPA，提升廣告主滿意度與企業獲利

## 請初步設計來源資料來源資料的細節，包含但不限於
- ### 資料來源
    - 前端追蹤: page_views, clicks, display_events
    - 爬蟲: document_meta, document_topics
    - 廣告後台: promoted_content

- ### 資料格式
    - page_views  瀏覽資料 -- 使用者看了那些文章和背景屬性
        - user_id, document_id, timestamp, platform, geo_location, traffic_source
    - display_events 廣告曝光 -- 有關廣告曝光的資訊
        - display_id, user_id, document_id, timestamp, platform, geo_location
    - clicks 點擊資料 -- 使用者在廣告列表裡點了哪篇文章
        - display_id, ad_id, is_clicked
    - promoted_content 廣告內容
        - ad_id, document_id, campaign_id, advertiser_id
    - document_meta 文章的內容資訊 -- 例如文章內的物體名稱，類別，主題，發行商
        - document_id, source_domain_id, publisher_id, publish_time
    - document_topics 文章主題
        - document_id, top_id, confidence_level
- ### 資料量
    - 每兩週

| Table Name | Data Size | Data Quantity |
| -------- | -------- | -------- |
| page_views | 10GB | 200 million rows|
| display_events | 300MB | 2 million rows|
| clicks | 200MB | 8 million rows|
| promoted_content | 5MB | 6 thouthand rows|
| documents_meta| 10MB | 300 thouthand rows|
| documents_topics | 50MB | 1 million rows|

- ### 資料速度（多久會增加多少資料）
    - page_views: 14M/day (EPS:162/s)
    - display_events: 140K/day
    - clicks: 570K/day
    - promoted_content: 400/day
    - documents_meta: 20K/day
    - documents_topics: 70K/day

- ### 範例資料
    - 範例描述: 在某情境下推給某使用者的內容推薦，每個內容推薦列表可能會被使用者點擊一個或多個的推薦。使用者(user_id)瀏覽網頁(document_id), 網頁有內容文章例如新聞。推薦曝光(display_id)發生在當使用者瀏覽網頁時被推薦多個廣告(ad_id)，每個廣告屬於一檔由廣告主(advertiser_id)所舉辦的廣告活動(campaign_id)。
    - Data Table Relation ![Data Table Relation](https://i.imgur.com/9VKfWFo.png)
    - page_views ![](https://i.imgur.com/DnnZqyS.png)
    - display_events ![](https://i.imgur.com/HFfpCw8.png)
    - clicks ![](https://i.imgur.com/mBDDkOe.png)
    - promoted_content ![](https://i.imgur.com/apoaRgv.png)
    - document_meta ![](https://i.imgur.com/zUD7mvl.png)
    - documnet_topics ![](https://i.imgur.com/ZQBalBx.png)


 
- 請選擇公司的 IT 基礎建設，選項如下，每個選項至多兩組，請至 Google 表單填寫，先選先贏：
    - Others(Public + Private hybrid cloud)


- Reference 
    - [outbrain-click-prediction](https://www.kaggle.com/competitions/outbrain-click-prediction)
    - [how-feature-engineering-can-help-you-do-well-in-a-kaggle-competition-part-i](https://medium.com/unstructured/how-feature-engineering-can-help-you-do-well-in-a-kaggle-competition-part-i-9cc9a883514d)
