---
# System prepended metadata

title: Untitled

---

---
marp: true
theme: gaia
paginate: true
style: table{font-size: 25px} section.small{font-size: 27px}   section.medium{font-size: 30px} section.ultrasmall{font-size: 22px} section.twoc{columns:2 } section{font-family:Roboto, Noto Sans TC; font-weight: 300;} black{color: yellow; }
backgroundColor: #ECF0F1
headingDivider: 2
---

- PaddleRec提供的測試結果

|   模型    | auc  | batch_size | epoch_num | Time of each epoch |
| :-------: | ---- | ---------- | --------- | ------------------ |
|    FFM    | 0.79 | 4096       | 10        | 約 14.3 小時       |
|    FM     | 0.78 | 4096       | 10        | 約 2.5 小時        |
|  deepFM   | 0.78 | 512        | 1         | 約 2 小時          |
| wide_deep | 0.79 | 512        | 4         | 約 2 小時          |
<!--FM 和 FFM 更新應差 39倍，不是因平行化，也不是因embedding -->

- 自行跑的結果(without GPU)

|   模型    | auc    | batch_size | epoch_num |              Time |    Time Per Epoch |
| :-------: | ------ | ---------: | --------: | ----------------: | ----------------: |
|    FM     | 0.7060 |        512 |        10 |         30.0 小時 |         3.00 小時 |
|  DeepFM   | 0.7649 |        512 |        10 |        30.77 小時 |         3.08 小時 |
| FFM(k=9)  | 未完成 |        512 |         1 | 253.44 小時(預估) | 253.44 小時(預估) |
| wide_deep | 0.7899 |        512 |        10 |         32.6 小時 |         3.26 小時 |


<!-- _class: small -->

---

- 自行跑的結果(with GPU)

|   模型    | auc    | batch_size | epoch_num | Time       | Time Per Epoch |
| :-------: | ------ | ---------: | --------: | ---------- | -------------: |
|    FM     | 0.7658 |        512 |        10 | 10.46 小時 |      1.04 小時 |
|  DeepFM   | 0.7653 |        512 |        10 | 10.68 小時 |      1.06 小時 |
| FFM(k=1)  | 0.7801 |        512 |        10 | 37.3 小時  |      3.73 小時 |
| FFM(k=9)  | 0.7604 |        512 |        10 | 81.85 小時 |      8.19 小時 |
| wide_deep | 0.7895 |        512 |        10 | 15.33 小時 |      1.53 小時 |

以上皆於Criteo資料集測試
<!-- _class: small -->

## 時間估計

$k$:隱向量長度, $N$:輸入特徵個數, $N'$:非零輸入特徵個數

| 方法 | 更新時間   | 模型大小 |
| ---- | ---------- | -------- |
| FFM  | $O(kN'^2)$ | $O(fkN)$ |
| FM   | $O(kN')$   | $O(kN)$  |

### 執行10Epoch的時間

| Dataset        | 非零特徵 |    資料筆數 | FM         | FFM        | Wide and Deep |
| -------------- | -------- | ----------: | ---------- | ---------- | ------------- |
| Criteo         | 39       |  44,000,000 | 12.45 小時 | 81.85 小時 | 16.33 小時    |
| 同學會(275 天) | 647      | 165,966,307 |            |            |               |
| 同學會(5 天)   | 647      |   1,179,916 | 19.43 分鐘 |            | 19.04 分鐘    |
<!--_class: small-->

## GBDT + LR

- Facebook, 2014
- GBDT(Gradient Boosting Decision Tree)產生特徵Embedding
- LR(Logistic Regression)學習
- 歷史定位：特徵工程的模型化
- 缺點：GDBT難平行化，LR模型太簡單

![bg right:50% fit](../../img/notused/GBDTLR.png)

## 新聞推薦(NRMS)

- 特徵
  - 新聞標題
    - Glove embedding, 長度為 300
    - 標題平均11.29字
  - 用戶觀看記錄
![bg right:50% fit](../../img/recommend/NRMS.png)

## 新聞推薦(NRMS)

| 非零特徵                          |  資料筆數 | 時間     |
| --------------------------------- | --------: | -------- |
| $(300 \times 11.29) \times (N+1)$ | 1,000,000 | 7.3 分鐘 |

![bg right vertical fit](../../img/notused/NRMS-Input.png)


<span style="font-size:40%">Xeon E5-2620 v4 CPU, GTX1080Ti GPU</span>


## Money錢 資料

沒有瀏覽記錄

- 文章資料
  - 分類
  - ~~來源~~
  - 標題
  - ~~內文~~
  - ~~發布時間~~
  - 作者
  - 標籤、keyword
  - 點擊數
- 使用者資料
  - ~~性別、居住地區、教育程度~~
  - 行為資料
    - 購買記錄

<!-- _class: twoc -->


## 同學會資料

以 2021/2/8 ~ 2021/11/10(275天) 的資料計算

- 共有 165,966,307 次行為(603,513/日)
- 用戶數 U
  - 參與互動行為人數共 1,365,232人
- 文章數 A
  - 有互動行為的文章共 4,202,055篇(15,280/日)

## 所有同學會資料

- 文章資料
  - ~~文章頻道類型(101:個人公開頻道，102:個人私訊頻道……)~~
  - ~~文章類型 (1:一般文 2: 問答文 3: 一般回文 4:問答回文 5: 轉推文)~~
  - 作者
  - 股票標籤(最多5個)
  - 文章標題(前56個字)
  - ~~文章內容~~
  - ~~發布時間~~
- 使用者資料
  - 頻道等級
  - ~~性別、居住地區、教育程度~~
  - 自選股
  - ~~股票庫存~~<!-- 註：看不到股票庫存 -->
  - 行為資料
    - 行為類型(文章被~~閱讀~~/點擊/按噓/按讚/轉推/回應/打賞)

<!-- _class: ultrasmall -->

## 使用的同學會資料1

- 文章資料
  - 作者(one-hot)
  - 股票標籤(multi-hot)
  - 文章標題(BERT embedding)
- 使用者資料
  - 頻道等級(number)
  - 自選股(multi-hot)
  - 行為(文章被~~閱讀~~/點擊/按噓/按讚/轉推/回應/打賞) → 行為分數(number)
<!--
- 資料庫
  - `CMOceanDB_V2.dbo.Article`(一年份資料)
  - ...
- 文章資料
  - 作者(`CMOceanDB_V2.dbo.Article`)
  - 股票標籤()
  - 文章標題(`CMOceanDB_V2.dbo.Article`)
- 使用者資料
  - 頻道等級
  - 自選股
  - 行為資料
    - 行為類型(文章被~~閱讀~~/點擊/按噓/按讚/轉推/回應/打賞)
-->

## FM 輸入結構1

![bg right:50% fit](../../img/notused/FM-Input.png)

- BERT: 預設 embedding 長度為 768
- 共 1601 個非零特徵
  1. 用戶特徵(51)
     - 頻道等級(1)、自選股(50)
  2. 候選文章特徵(775)
     - 標題(768)、作者(1)、股票標籤(5)
  3. 用戶行為記錄(775)
     - [文章特徵]$\times$[對文章的行為分數] 加權和

<!--TODO: 股票還可以做EMBEDDING，如上漲、下跌-->
<!-- _class: small -->

## 使用的同學會資料2

- 文章資料
  - 作者
  - 股票標籤
  - 文章標題
- 使用者資料
  - 頻道等級
  - 自選股
  - 行為(文章被~~閱讀~~/點擊/按噓/按讚/轉推/回應/打賞) → 行為分數(number)


## FM 輸入結構2

![bg right:50% fit](../../img/notused/FM-Input.png)

- 共 647 個非零特徵
  1. 用戶特徵(35)
     - 頻道等級(1)、自選股(34)
  2. 候選文章特徵(306)
     - 標題(300)、作者(1)、股票標籤(5)
  3. 用戶行為記錄(306)
     - [文章特徵]$\times$[對文章的行為分數] 加權和

<!--TODO: 股票還可以做EMBEDDING，如上漲、下跌-->
<!-- _class: small -->

## 資料處理

使用新DB(`MongoDB`和`ForumOcean`)的資料取代舊DB(`CMOceanDB_V2`)

新增資料
- 用戶行為：文章被感興趣、收藏、投票、回文

只有舊DB有的資料
- 用戶行為：文章被點擊(Table `ArticleCourse`)
- 用戶資料：頻道等級(Table `Level`)

移除沒有正確記錄的資料
- 用戶行為：文章被瀏覽

<!--_class: small-->

---

### 目標(研究中)

最終目標：用戶使用時間⬆️

1. ~~行為分數⬆️~~
4. 點讚/點擊/回應率⬆️
   - 有點讚/點擊/回應 = 1，(有行為)$\cap$(未點讚/點擊/回應) = 0
   - 有點讚/點擊/回應占總行為的61.4%/12.2%/10.2%

### 架構

![bg right fit](../../img/notused/structure.png)
- 如右圖，使用**點讚/點擊/回應**文章的特徵**平均**來表示用戶點擊記錄


<!--
SELECT ArticleId, MemberChannelId, BehaviorPopularity
  FROM [CMOceanDB_V2].[dbo].[ArticleCourse] where timestamp between '2021-12-21' and '2022-01-09' GROUP BY ArticleId, MemberChannelId, BehaviorPopularity 
  having behaviorPopularity=?
-->
<!--_class: small-->

<!--
| 天數 | 文章數 |   行為數 | 用戶數 |
| ---- | -----: | -------: | -----: |
| 14   | 126091 |  2981389 | 246510 |
| 28   | 259001 |  6219009 | 335929 |
| 5    |  58102 |  1176429 | 152326 |
| 7    |  61156 |  1357516 | 163479 |
| 90   | 785454 | 18383413 | 536865 |
-->


---
##### 同學會資料3
| 特徵     | 原始資料                                | 處理方式                                                                                    | 結構      | 長度 | 非零長度 |
| -------- | --------------------------------------- | ------------------------------------------------------------------------------------------- | --------- | ---- | -------- |
| 作者     | 頻道 ID                                 | 追蹤人數>1500 的非股票頻道，其餘頻道為同一類                                                | one-hot   | 884  | 1        |
| 文章標題 | 文章內文                                | 取前 56 個字做 word2vec embedding                                                           | embedding | 300  | 300      |
| 股票標籤 | 股票代號(如 0050)最多 5 個 ❓            | 依[產業別](https://data.gov.tw/dataset/18419)分類(共 29 類)，各標籤有看多/看空/不指定三種 ❓ | multi-hot | 87   | <=5      |
| 自選股   | 股票代號(如 0050)最多 50 個             | 依[產業別](https://data.gov.tw/dataset/18419)分類(共 29 類)                                 | multi-hot | 29   | <=29     |
| 行為     | 同上                                    | 不處理                                                                                      | multi-hot | 7    | <=7      |
| 行為分數 | 文章是否被點擊/按噓/按讚/轉推/回應/打賞 | 各行為有一分數，加總有執行行為的分數                                                        | number    | 1    | 1        |
| 頻道等級 | 含 0 正整數                             | 不處理                                                                                      | number    | 1    | 1        |

<!--_class: small-->

## 使用的同學會資料3

- Input: 共 U + 2A 個特徵
  1. 用戶特徵(U)
     - 頻道等級、自選股
  2. 候選文章特徵(A)
     - 標題、作者、股票標籤
  3. 用戶行為記錄(A)
     - 使用**點讚/點擊/回應**文章的特徵**平均**
- Output: 是否有**點讚/點擊/回應**

## 目標

<!--最上層: 推薦使用者喜歡的，但因為喜歡太難衡量，用ctr, 評分，停留時間來代替喜歡 → ctr, 評分… -->

- `大部份推薦系統`：點擊率(CTR, Click Through Rate)、點擊成本(CPC, Click Per Cost)
- `電商`：轉換(Conversions)
  - 完成某目標，如購買
  - TODO: 看DIN, DIEN
- `雙邊市場`：正確訂單於搜尋結果的排名
  - Evaluation: NDCG
  - Airbnb, Uber, Shopee
- `評分(Movielens)`：接近真實評分
- `Youtube`、`同學會`：使用者參與度
  - 使用時間

同學會沒有記錄使用時間
<!-- 和強化學習的reward不同的地方是，因為推薦系統沒有明確的目標，所以需要人來訂分 -->



## 推薦好文章

與其推薦好文章，不如消除或隱藏爛文章，以提高文章的平均水準

- 一天約22000篇文章
- 0個讚文章占 ❓ %

## 推薦好文章

與其推薦好文章，不如消除或隱藏爛文章，以提高文章的平均水準

- 一天約22000篇文章
- 0個讚的文章占 62% (13702)
![bg right fit](../../img/notused/x.png)

## 問題

1. User Behaviour Model
     - ~~行為分數~~
     - 研究中
3. Label、目標
   - ~~行為分數~~
   - 長期目標為觀看時間
   - 目前暫以特定行為代替，如點讚/回應
     - 點讚數量約為回應4倍
     - 點讚=1，未點讚=0

## 使用的同學會資料 Ver. 4

- Input Feature: 共 U + 2A 個特徵
  1. 用戶特徵(U)
     - 頻道等級、自選股
  3. 用戶行為記錄(A)
     - 用戶**點讚**過的文章特徵的**平均**
  2. 候選文章特徵(A)
     - 標題、作者、股票標籤
- Output Label: 若用戶有對候選文章**點讚**=1，其他=0



## FM 與 Wide and Deep 的特徵比較

In every model, FM and Wide & Deep **use the same feature** 

- NFM(Neural Factorization Machines)
  - Categorical feature only
- AFM(Attentional Factorization Machines)
  - Categorical feature only
- LSTUR(Long-and Short-term User Representations)
  - TF-IDF features from news title
- DKN(Deep Knowledge-Aware Network)
  - TF-IDF features
  - Averaged entity embeddings
<!--_class: small-->



---

### FM修正

- 修改 FM 的 Input
  - 文章標題
    1. 使用TF-IDF Vector
    2. 將Embedding轉換成Categorical feature

## 同學會新資料
- 文章資料：MongoDB
  - 頻道和文章的關聯
  - 包含行為資料
  - 一天更新一次
- 行為資料：ELK
  - 30萬/天
  - 即時更新
  - 大約存放10天的記錄
- 其他：SQL

## 文章標籤數

![width:600](../../img/notused/MicrosoftTeams-image.png)



## 輸入資料

- 閱讀記錄之後會記
- 其他行為(感興趣、檢舉…)的時間可以順便請後端記錄

![bg right fit](../../img/notused/data.png)

## 資料處理

1. 以時間區分
     - (N天內發表的文章A) → (N天內對A的行為資料B) → (有參與行為的用戶U)
       - → N天內用戶對N天內的文章的行為
     - Train data：第1~N天，共N天
     - Test data：第N+1~N+n天，共n天
2. 以使用者區分
     - 從用戶資料U中隨機抽出用戶，用戶累計約20%的行為資料為Test data，其餘為Train data

## 流程 - 產生推薦文章

![width:1100](../../img/notused/flow.png)

## 流程 - Candidate Generation

用多種方法取得候選文章
- 已實作方法
  1. Collaborative Filtering
  2. 股票標籤推薦
  3. K-means分群
- 取得用戶相關文章
  - 取得追蹤作者的文章
  - 取得自選股相關文章
- 取得熱門文章

## 流程 - Ranking
#### Model - Wide and Deep

- Input Feature: 共 U + 2A 個特徵
  1. 用戶特徵(U)
     - 頻道等級、自選股
  3. 用戶行為記錄(A)
     - 用戶**留言**過的文章特徵的**平均**
  2. 候選文章特徵(A)
     - 標題、作者、股票標籤
- Output Label: 若用戶有對候選文章**留言**=1，其他=0


## Candidate Generation1

![](../../img/notused/flow2.png)

## Candidate Generation2

![](../../img/notused/flow3.png)

## 新聞推薦 AUC

- ![](../../img/notused/auc.png)
- https://paperswithcode.com/sota/click-through-rate-prediction-on-criteo

## 結果

- 以留言為目標做Classification
- Wide and Deep
  - Train: `2021/12/20`~`2021/12/27`(297564筆, 3.03GB)
  - Test: `2021/12/27`~`2021/12/29`(87335筆, 942MB)
  - 只取活躍行為者(約占有行為的使用者30%、占所有行為的84%)


## 結果

| 方法          | 參數                                                                                                             | 預測結果                                  | 標籤                               | 訓練時間                                                 | 預測時間                        |
| ------------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ---------------------------------- | -------------------------------------------------------- | ------------------------------- |
| Wide and Deep | Batchsize:32<br>Epoch:200<br>Fully Connected:[1024, 512, 256, 128, 64, 16] with ReLU/Sigmoid<br>Adagrad:0.000001 | <span style="color:red">auc:0.7810</span> | 對文章點讚=1，有其他行為但不點讚=0 |                                                          |                                 |
| Wide and Deep | 同上                                                                                                             | auc:0.8213                                | 對文章留言=1，有其他行為但不留言=0 | 7.18Hour/200Epoch<br>2.15Minute/Epoch<br>2306Data/Second | 17.36 Second<br>5031Data/Second |

## 取得資料

- 機器人文章、新聞文章不推薦
- Kafka: 即時接收資料，暫時用不到

## 計算特徵重要性

#### 方法

1. 一次移除一個特徵並重新訓練模型，確認模型預測正確降低程度
2. 計算Gradient Descent

## Candidate Generation

輸入：兩日內文章

- 優先取
  - 追蹤的人發的文章
  - 自選股相關文章
  - 熱門文章
- 再用其他方法評分
  1. 計算User和Item的Embedding
  2. 非學習方法

## Candidate Generation

- 熱門文章取法
  1. 依行為計分，計算文章總分
  2. 目前實作的「最熱」算法
- 計算Embedding方法
  1. FM: 輸入為UserID和ItemID
  1. Graph Embedding
  2. 其他: DSSM...
- 非學習方法
  1. Collaborative Filtering協同過濾
  1. KMeans分群
  2. Stock Prefer股票標籤
- 最多隨機取1000篇以避免計算時間太長

<!--_class: small-->

## 預測時間

兩天總文章數: 48289

- 48289 Items / 497s → 130s
  - 預測時間: 38.99s
- 1000 Items / 6.12s
  - 預測時間: 2.02s
- 目標
  - Candidate Generation: 最多 1000 篇文章
  - 降低總預測時間
  <!--簡化模型、簡化input、換框架-->

## 目前同學會特徵

| 特徵     | 原始資料                                          | 處理方式                                                                        | 結構      | 長度 | 非零長度 |
| -------- | ------------------------------------------------- | ------------------------------------------------------------------------------- | --------- | ---- | -------- |
| 作者     | 頻道 ID                                           | 追蹤人數>1500 的非股票頻道，其餘頻道為同一類                                    | one-hot   | 884  | 1        |
| 文章標題 | 文章內文                                          | 取前 56 個字做 word2vec embedding                                               | embedding | 300  | 300      |
| 自選股   | 股票代號(如 0050)最多 50 個，可以有多個自選股清單 | 依[產業別](https://data.gov.tw/dataset/18419)分類(台股 29 類、美股 16 類)       | multi-hot | 45   | <=45     |
| 股票標籤 | 股票代號(如 0050)最多 5 個                        | 依[產業別](https://data.gov.tw/dataset/18419)分類，各標籤有看多/看空/不指定三種 | multi-hot | 135  | <=5      |
| 頻道等級 | 含 0 正整數                                       | 不處理                                                                          | number    | 1    | 1        |


## 特徵改進(預定)

- 個股Input Feature
  - 台股[1744支](https://www.sfb.gov.tw/ch/home.jsp?id=1010&parentpath=0%2C4%2C109)、美股[>4000支](https://www.nasdaq.com/market-activity/stocks/screener)，若做multi-hot有點多
  - 可做Embedding
- 清理Word Embedding資料
  - Emoji
  - URL連結
  - Stop words
  - 簡體字
- 使用全文而非前56字


<!--_class: medium-->

## 資料改進

- Test data 使用 train data 的行為記錄
- 限制每個使用者的資料筆數

## 實例

http://localhost:9526/docs/
- candidate generation篇數
- 計算有行為的文章的auc和logloss
- 推薦所有文章(依文章分數排列)

| uid     | auc  | logloss | candidate generation                                                                   | 所有文章                                                       |
| ------- | ---- | ------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| 3752240 | 0.45 | 0.9629  | 100篇(全為熱門) [檔案](../../../../../Code/Recommendation/candidate3752240.json)       | [檔案](../../../../../Code/Recommendation/predict3752240.json) |
| 6259921 | 1    | 0.1675  | 126篇(熱門+追蹤) [檔案](../../../../../Code/Recommendation/candidate6259921.json)      | [檔案](../../../../../Code/Recommendation/predict6259921.json) |
| 1278106 | 0    | 0       | 389篇(熱門+追蹤+自選) [檔案](../../../../../Code/Recommendation/candidate1278106.json) | [檔案](../../../../../Code/Recommendation/predict1278106.json) |
| 467903  | 1    | 1.317   | 221(熱門+追蹤+自選) [檔案](../../../../../Code/Recommendation/candidate467903.json)    | [檔案](../../../../../Code/Recommendation/predict467903.json)  |
| 2051501 | 1    | 0.1427  | 242篇(熱門+追蹤+自選) [檔案](../../../../../Code/Recommendation/candidate2051501.json) | [檔案](../../../../../Code/Recommendation/predict2051501.json) |

<!--TODO: start-->

## 修正

- 修正Test Data會使用Train Data之後才發生的行為的錯誤
  - auc: 0.79747

## Abalation Study

- 參數Batchsize:32, Epoch:200, Fully Connected:[1024, 512, 256, 128, 64, 16] with ReLU/Sigmoid, Adagrad:0.000001
- 對文章留言=1，有其他行為但不留言=0

| 方法             | 預測結果    | 相差     |
| ---------------- | ----------- | -------- |
| 所有特徵         | auc:0.79747 |          |
| 移除文章標題     | auc:0.79275 | -0.00472 |
| 移除用戶等級     | auc:0.79269 | -0.00478 |
| 移除自選股       | auc:0.79206 | -0.00541 |
| 移除文章股票標籤 | auc:0.78456 | -0.01291 |
| 移除文章作者     | auc:0.76114 | -0.03633 |

## 廣告文處理

- 預先處理
  - Rule-based
  - 額外train一個model
- 推薦的模型無法處理詐騙
  - 文章特徵比較
    - 作者不同
    - 文字embedding幾乎相同
    - 文章股票標籤相同
  - 用戶行為(互動)較少
  - 可加上檢舉次數作為feature

<!--人類惡意攻擊 adverseral attack -->

## 案例分析

- simple case: 只看一支股票A的人
	- 用戶 有/無 將A放入自選股
	- 假設用戶只對所有包含A的文章有行為
  	- 全留言(全1)/一半留言(半1半0)/全不留言(全0)

預期
- 全留言: 會推相同產業股票的文章
- 一半留言: ❓
- 不留言: 不會推相同產業股票的文章

## 案例分析

<!--
2022-03-11 13:56:22.653 | WARNING  | __main__:generateFakeUserByStock:878 - stock 6111 shape (275, 5)  
2022-03-11 13:56:47.589 | WARNING  | __main__:generateFakeUserByStock:878 - stock 2718 shape (2, 5)    
2022-03-11 13:56:47.812 | WARNING  | __main__:generateFakeUserByStock:878 - stock 3512 shape (4, 5)    
2022-03-11 13:56:48.218 | WARNING  | __main__:generateFakeUserByStock:878 - stock 1802 shape (73, 5)   
2022-03-11 13:56:54.493 | WARNING  | __main__:generateFakeUserByStock:878 - stock 1229 shape (20, 5)  
-->

6111(): 共275篇文章
| 有自選股 |        |          |        |
| 無自選股 |        |          |        |

---

###### 案例分析

| UID=3752240 | 正樣本                  | 負樣本                  | 預測結果                                                       | 預測結果(加權)                                                                                                                                    |
| ----------- | ----------------------- | ----------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| 作者        | '702': 13               | '702': 14               | '702': 9<br>'645': 8<br>'442': 8<br>'508': 4<br>'403': 3       | '702': 6.017127633094788<br>'645': 5.6935224533081055<br>'442': 5.296189486980438<br>'508': 2.533134341239929<br>'403': 2.059164583683014         |
| 股票產業    | '28': 10<br>'13': 3     | '28': 13<br>'13': 1     | '21': 16<br>'28': 14<br>'0': 7<br>'9': 6<br>'15': 4            | '28': 8.96494323015213<br>'21': 7.161814332008362<br>'0': 4.164242267608643<br>'24': 2.012532353401184<br>'5': 1.5356134176254272                 |
| 個股        | '1785': 10<br>'2610': 3 | '1785': 13<br>'2610': 1 | 'TWA00': 6<br>'2317': 3<br>'2105': 3<br>'2014': 3<br>'2482': 2 | 'TWA00': 3.5340999960899353<br>'2317': 1.6003779768943787<br>'2482': 1.48931086063385<br>'2105': 1.4488155245780945<br>'2461': 1.3094945549964905 |

---

###### 案例分析

| UID=6259921 | 正樣本    | 負樣本                                                        | 預測結果                                                       | 預測結果(加權)                                                                                                                                   |
| ----------- | --------- | ------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| 作者        | '702': 1  | '702': 13<br>'640': 1                                         | '702': 31<br>'564': 3<br>'337': 2<br>'442': 2<br>'663': 2      | '702': 21.59288078546524<br>'564': 2.3949829936027527<br>'337': 1.7035017013549805<br>'442': 1.6563262343406677<br>'663': 1.5618103742599487     |
| 股票產業    | '21': 1   | '21': 9<br>'28': 8<br>'22': 3<br>'24': 3<br>'23': 2           | '21': 60<br>'0': 4<br>'24': 3<br>'25': 3<br>'23': 3            | '21': 23.051762223243713<br>'24': 2.2469388246536255<br>'23': 2.0688310265541077<br>'9': 1.5870697498321533<br>'25': 1.5757833123207092          |
| 個股        | '6104': 1 | '3305': 8<br>'6104': 3<br>'2376': 2<br>'3588': 2<br>'2409': 1 | '2303': 4<br>'5483': 4<br>'3035': 4<br>'TWA00': 3<br>'6182': 3 | '5483': 2.844673454761505<br>'2303': 2.4573071002960205<br>'6182': 2.150454819202423<br>'6488': 2.1019363403320312<br>'2498': 1.5370911955833435 |

---

###### 案例分析


| UID=1278106 | 正樣本                                                        | 負樣本                                                        | 預測結果                                                       | 預測結果(加權)                                                                                                                                   |
| ----------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| 作者        | '700': 4                                                      | '700': 4                                                      | '645': 8<br>'442': 6<br>'205': 5<br>'403': 4<br>'508': 4       | '645': 6.137364029884338<br>'442': 4.017549097537994<br>'205': 3.295173227787018<br>'508': 2.7215352058410645<br>'403': 2.718760311603546        |
| 股票產業    | '13': 16<br>'23': 4                                           | '13': 16<br>'23': 4                                           | '21': 16<br>'13': 13<br>'0': 10<br>'9': 9<br>'23': 6           | '21': 6.203213393688202<br>'13': 4.955893874168396<br>'9': 4.953993439674377<br>'0': 3.4948708415031433<br>'5': 3.107422649860382                |
| 個股        | '2603': 4<br>'2609': 3<br>'2615': 3<br>'2636': 2<br>'2409': 2 | '2603': 4<br>'2609': 3<br>'2615': 3<br>'2636': 2<br>'2409': 2 | 'TWA00': 7<br>'2603': 5<br>'2609': 4<br>'2014': 3<br>'4132': 3 | 'TWA00': 3.4948708415031433<br>'2609': 2.115208923816681<br>'2603': 2.110948145389557<br>'1529': 1.6582815647125244<br>'2105': 1.556811273097992 |

---

###### 案例分析


| UID=467903 | 正樣本                                                         | 負樣本                                                         | 預測結果                                                        | 預測結果(加權)                                                                                                                                     |
| ---------- | -------------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| 作者       | '702': 2                                                       | '702': 6                                                       | '702': 13<br>'645': 8<br>'442': 5<br>'205': 5<br>'403': 4       | '702': 6.590899646282196<br>'645': 4.709285944700241<br>'442': 2.82102569937706<br>'205': 2.687421202659607<br>'403': 2.5931748747825623           |
| 股票產業   | '0': 2<br>'26': 1<br>'15': 1<br>'5': 1<br>'23': 1              | '21': 4<br>'0': 2<br>'26': 1<br>'15': 1<br>'5': 1              | '0': 25<br>'21': 12<br>'13': 9<br>'9': 7<br>'6': 5              | '0': 8.7772196829319<br>'21': 4.45562806725502<br>'9': 2.5705286860466003<br>'15': 2.048224985599518<br>'6': 1.6637003719806671                    |
| 個股       | '00900': 2<br>'2347': 1<br>'2883': 1<br>'1580': 1<br>'3008': 1 | '00900': 2<br>'3711': 2<br>'2347': 1<br>'2883': 1<br>'1580': 1 | 'TWA00': 18<br>'4132': 5<br>'1611': 3<br>'2603': 3<br>'2014': 3 | 'TWA00': 7.202548027038574<br>'4132': 1.5746716558933258<br>'1611': 1.0583577454090118<br>'2504': 1.0369415879249573<br>'6118': 0.7090867757797241 |

---

###### 案例分析


| UID=2051501 | 正樣本                                                         | 負樣本                                                         | 預測結果                                                        | 預測結果(加權)                                                                                                                                   |
| ----------- | -------------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| 作者        | '662': 1                                                       | '604': 4                                                       | '442': 11<br>'645': 6<br>'205': 6<br>'403': 4<br>'376': 3       | '442': 10.089585959911346<br>'205': 5.651042819023132<br>'645': 5.578168570995331<br>'403': 3.741880416870117<br>'376': 2.8349897265434265       |
| 股票產業    | '22': 2<br>'23': 1<br>'0': 1<br>'25': 1                        | '13': 7<br>'21': 5<br>'23': 4<br>'0': 3<br>'24': 1             | '0': 19<br>'21': 12<br>'23': 11<br>'22': 7<br>'24': 6           | '0': 12.17797976732254<br>'21': 6.52028614282608<br>'22': 6.477800250053406<br>'23': 5.498333692550659<br>'25': 3.732504725456238                |
| 個股        | '2374': 1<br>'2417': 1<br>'6235': 1<br>'TWA00': 1<br>'6158': 1 | '2603': 4<br>'TWA00': 3<br>'2303': 3<br>'2340': 2<br>'2610': 2 | 'TWA00': 12<br>'4132': 4<br>'2409': 4<br>'6150': 3<br>'3138': 3 | 'TWA00': 9.338282227516174<br>'4132': 2.839697539806366<br>'6150': 2.832429051399231<br>'2465': 1.8704217076301575<br>'2409': 1.8368200063705444 |

## 案例分析

- cold-start: 一篇都沒看，等級=0，但有自選股的人
- all-positive: 全部都留言的人(隨機文章)
- all-negative: 全部都不留言的人(隨機文章)

<!--
## 案例分析

- spam: 文章相似，但後面加上`+line`等文字，查看分數
	- 作者不同
	- 文章內容幾乎相同
	- 股票標籤相同
  -->

## TODO

- 降低推薦所需時間
- Wide & Deep debug
- 台股分類變多(71種)
- 案例不夠多: 增加Train Data的時間範圍

![bg right:70% width:800](../../img/notused/flow-now.png)

<!--TODO: end-->
<!--
## 行為分數

1. Airbnb: 設行為分數
3. 目前的方法是行為分數的特例
```
{
    SEE: 0,
    REPLY: 1,
    LIKE: 0,
    BOO: 0,
    SHARE: 0,
    ...
}
```

## 制定行為分數

假設目標是回應數，令其分數$S_{Reply}=1$。

而觀看分數為
→ $S_{See}=S_{Reply} \times P(Reply|See) = P(Reply|See)$

制定其他的行為$X$的分數
$Score_{X}=P(Reply|X)$
-->