# 基於社群網路分析的交友軟體推薦系統
###### tags: `MLG`
簡報網址:hackmd.io/@kuouu/MLG_final
提案簡報:hackmd.io/@kuouu/MLG_final_proposal
---
## Introduction
----
### AInimal 人工智慧社群養成

網頁版 👉 ainimal.io
----
#### 目前配對機制

1. 符合篩選條件
2. 當天有上線
3. 隨機
----
#### 改良--基於個人特質的聊天活絡程度預測
[Google Colab](https://colab.research.google.com/drive/1V33OHXKVuFGInMpeTwKCzmjxGJMZwjyt?usp=sharing)

----
#### 正確率
```
train accuracy: 0.78
test accuracy: 0.62
```
可能原因:
- 模型太過簡單
- 人格特質不適合作為聊天活絡程度的評斷標準
- ???
----
人格特質或許跟交友有關,但沒有辦法確定是“很像的人”還是“不像的人”容易成為朋友,甚至是情侶(大多數人用交友軟體的目的)
----
比起個性或興趣,我認為成為朋友的契機更注重於一些當下的因素,心情、場域、機緣等,因此決定使用社群網路來做推薦系統,並進行分析
----
### 配對成功?
----
#### 會回訊息

----
#### 聊得很熱絡

----
#### 真命天子/女、一生的好朋友

----
軟體宗旨是找到真命天子/女,但得知後續發展可能要做調查,在訓練上會難以做標記,所以退一步到**找到很會聊的人**
---
## Relative Work
----
- [Recommender System for Online Dating Service](https://arxiv.org/pdf/cs/0703042.pdf) 2007 / 162 cites
- [RECON: A reciprocal recommender for online dating](https://www.researchgate.net/publication/221140972_RECON_A_reciprocal_recommender_for_online_dating) 2010 / 184 cites
- [Recommender Systems for Online Dating](https://core.ac.uk/download/pdf/33736431.pdf) 2015 / 6 cites
- [Design of Reciprocal Recommendation Systems for Online
Dating](http://web.cs.ucla.edu/~yzsun/papers/snam2016.pdf) 2016 / 24 cites
- [Shedding More Light on How Instagram Works](https://about.instagram.com/blog/announcements/shedding-more-light-on-how-instagram-works?fbclid=IwAR0L5kk9JEu3dEmz1VqIETTOevSWoc0IcZceaGTS9Vj_m0LccUGuJGsu_T0)
---
## Algorithm
程式碼 👉 github.com/erickuo5124/MLG_final
----
### rule base
----
#### rule base
依據當下的==平均聊天量==由高至低做推薦
$$
平均聊天量 = \frac{\sum_{聊天室}聊天字數}{聊天室數量}
$$
----
#### 期望結果
- 會聊天的人優先,會“被”配對到很多人
- 不會聊天的人比較不會被主動配對到
- 在時間內配對到一定程度會讓聊天量下降,後面順位的人往上排名
----
#### 解決的問題
- 配對到的人最近一定有在玩,而且很活躍
- 雙方至少有一人有一定的社交程度,造成尷尬開場的機率較低(難聊的人不會互相遇到)
- 聊天室數量增加會降低平均聊天量,因此過度配對會降低排名,不會有某個人一直配對到超多人的情況
- 與比較會聊的人配對,增加社交能力較低的人的自信
----
#### pseudo code
1. get G
2. get user_list
3. remove random edge, get G’
4. get rec_list by G’
5. validation
----
### GNN
----
#### GNN
用 GCN 得到 node embedding ,並使用 similarity 做 user user 的 Collaborative Filtering
----
1. GCN 學習 node embedding
2. 做 user user 的 CF
---
## Experiment
----
### Evaluation: recall
$$
Recall(pred, label) = \frac{pred 出現在 label\_list 出現次數}{label\_list 的長度}
$$
----
### Data set
| 資料名稱 | 數量 |
| -------- | -------- |
| user | 5043 |
| chat | 290559 |
| friend | 22683 |
----
- gid
- gender
- animal
- heart
- type
- personality
- bgm
- active_time
----
 
分別為 2020, 2019 年 11/01~11/15 的資料
- rule base: < 0.1
----
其實很多點“沒有往外的邊”,也就是很多使用者沒有在使用,可能只是下載來看一看就再也沒有登入了,因此在加入 user feature 之後,我將不活躍的使用者移除,並按照性別改變顏色,圖形變成如下
- 在移除不活躍的使用者之後,rule base 的 Recall 提升至約 0.1 ~ 0.2
----

- rule base 的 Recall 提升至約 0.1 ~ 0.5
- GNN 約為 0.4 ~ 0.5(較穩定
----
### 問題點
- 需要每個時間點資料庫的 snapshot,ex: 更新時間、今日登入、交友狀況
- 移除不活躍的使用者之後資料不足(需要一段時間內的資料
- 沒有標記的資料
---
## Conclusion
----
- 利用圖形來視覺化呈現資料並分析使用者習性
- 聊天狀況
- 配對偏好
- 平均聊天量
- 使用時間區段內的使用者資料來做配對
----
### future work
- 利用網路圖來呈現目前使用者的狀況
- 定期備份資料庫狀態以拿來做訓練
- 改善軟體配對機制,取得標記資料
---
## END
{"metaMigratedAt":"2023-06-16T02:54:15.446Z","metaMigratedFrom":"Content","title":"基於社群網路分析的交友軟體推薦系統","breaks":true,"contributors":"[{\"id\":\"35cea605-1599-4b9b-a7f8-610e7a3b3107\",\"add\":3855,\"del\":381}]"}