1. 程式人生 > >【圖機器學習】cs224w Lecture 13 & 14 - 影響力最大化 & 爆發檢測

【圖機器學習】cs224w Lecture 13 & 14 - 影響力最大化 & 爆發檢測

[toc] 轉自本人:[https://blog.csdn.net/New2World/article/details/106431424](https://blog.csdn.net/New2World/article/details/106431424) # Influence Maximization Influence maximization 字面意思,很好理解。比如 Twitter 要推一則廣告,肯定希望這則廣告能被更多的人看到,於是他們會選擇一些使用者投放廣告,讓這些使用者轉發廣告然後推薦給他們的朋友。如何選擇這些初始的使用者才能讓廣告的傳播更廣就是一個影響最大化的問題。也就是說,我現在要選擇 $k$ 個初始傳播點 $S$,並且從這些點開始能傳播到的最多的點的期望為 $f(S)$,那麼 influence maximization 就是一個優化問題 $\max\limits_{S\ of\ size\ k}f(S)$。而這個優化問題被證明是 NP-Complete 的,因此我們需要一個有效的 approx. 演算法。 ## Propagation Models ### Linear Threshold Model 任意節點都有一個閾值 $\theta_v\sim U[0,1]$,且每個節點都受其鄰接點的影響 $b_{v,w}$。當且僅當這個影響的累加值大於等於節點閾值時,即 $\sum\limits_{w\ active\ neighbor\ of\ v}b_{v,w} \geq \theta_v$,這個節點被啟用。 ### Independent Cascade Model 每對節點間都有一個概率 $p_{vw}$ 表示啟用概率,被啟用的點按概率啟用其未啟用的鄰接點。這個模型裡的順序不影響結果,比如 $u,v$ 都是已啟用節點,那麼由誰先嚐試啟用 $w$ 是無關的。 ## Greedy Hill Climbing Algorithm 這個演算法理論上能達到 $f(S) \geq (1-1/e)\times f(OPT) = 0.63 \times f(OPT)$。它的核心思想是逐個新增節點,每次新增一個能啟用最多點的節點。這裡涉及到一個獨立的數學分支 submodularity,這個玩意兒我做 influence maximization 的時候研究過但沒深入,Stanford 專門有一門講這個的課,可以去看看。不過它的基礎概念很簡單:回報遞減,即 $f(S\cup\{u\})-f(S) \geq f(T\cup\{u\})-f(T)$,其中 $S \subseteq T$。舉個例子:你現在很餓,給你一個漢堡你會非常開心;再給你一杯可樂你也會很開心,畢竟可樂漢堡是“標配”,但沒有剛得到漢堡時那麼開心;現在再給你一包薯條,還是很開心,但此時絕對沒有在極度飢餓的情況下得到漢堡和可樂那麼開心了,因為你可能已經飽了。 我們現在要證明在 influence maximization 中的 $f(S)$ 是 submodular 的,想偷個懶,這裡我就不寫了,cs224w 有單獨一個 hand-out 可供參考。 以 IC 模型為例,我們可以按概率先 sample 多次得到不同的“平行世界” (realizations),然後找能通過 $S$ 到達的所有點,即為一個 set cover 問題。根據多個 realization 的平均就能估計 $f(S)$ 的期望。 然而,這個貪心演算法相當慢,其複雜度為 $O(knRm)$,其中的符號分別是:初始選定的節點數、圖中總節點數、平行世界個數、圖中邊的條數。 ### Sketch-Based Algorithm 回顧貪心演算法為什麼慢,因為每次在平行世界中計算影響範圍時都是 $O(m)$ 的複雜度。由於計算影響範圍是一個不確定的過程,因此我們嘗試用一個 approx. 的方法來估計它,這就成了一個用 approx. 方法來估計 approx. 的過程。 - 首先得到一個平行世界 - 給每個節點分配一個 $[0,1]$ 的值 - 將每個節點的值更新為這個節點能到達的所有點中最小的值 直觀上講如果一個節點傳播的範圍更廣的話,它有更大的概率到達那些值很小的節點。因此我們可以通過對點按更新的值進行升序排序,值越小的節點影響越大。這些步驟都是預處理的步驟,也就是說在排好序後使用 greedy 時就只管查詢就行。因此我們能在 $O(1)$ 複雜度內找到影響大的節點了。 但只使用一個值可能會導致結果偏差很大,因此我們可以維護多個值來保證演算法的可靠性。我的理解是這樣的,給每個節點分配 rank 值,預處理的時候考慮所有平行世界,對每個節點保留 $c$ 個最小的 rank (因為不同平行世界節點間的連通性不一定相同,所以可能出現有些世界能到達更小的 rank 而有些不能)。接下來在貪心的時候就能直接選出最小 rank。將新的節點加入 $S$ 後要刪除所有由這個節點影響的點,並從其他節點中刪除選中這個節點時所用的那個最小 rank 值。 由於這個演算法是貪心的近似,因此它的上界其實是貪心的下界。而這個方法的效果能有多好取決於保留的 rank 數 $c$。實驗證明,sketch-based 能比貪心更快地得到和貪心差不多的結果。 # OutBreak Detection Outbreak detection 和 influence maximization 問題很類似,都是在網路中選擇一些節點來達到某個目的。以社交網路為例,influence maximization 是為了通過選中的節點使傳播更廣,而 outbreak detection 是為了通過這些選中的點來及時全面地偵測網路上可能會爆發的話題。這裡要求偵測滿足及時和全面兩個要求,因此選點就得慎重了。我們先規定節點 $u$ 得知事件 $i$ 的時間為 $T(u,i)$,以及通過我們選擇的點偵測到事件 $i$ 的收益 $f(S) = \sum_iP(i)f_i(S)$,$P(i)$ 為事件 $i$ 發生的概率。當然偵測所有點是最直接的方法,然而偵測一個點都會產生一定的代價。因此 outbreak detection 也是一個帶約束的優化問題。 $$\max\limits_{S\subseteq V}f(S) = \sum_iP(i)f_i(S) \\ s.t.\