Chat老師隨機教你演算法之Reservoir Sampling(蓄水池抽樣)

更新 發佈閱讀 3 分鐘

解決的問題:假設你有一條超長資料流或不知道總長度的資料(例如日誌、Sensor stream),想要等機率抽到1筆或k筆當作隨機樣本,但你不能把全部資料存起來。

抽一筆的流程

  1. 先把第一筆當作樣本sample
  2. 讀到第i筆時(i從2開始),以1/i的機率用它替換掉sample
  3. 最後留下來的那一筆,會是所有資料中等機率的隨機一筆

1/i機率的程式寫法可以random(0, i-1)等於0得之

證明為等機率,第j筆最後留下來的機率計算方式為,

  1. 第j筆換掉sample的機率是1/j,換不掉的機率是1-(1/j)
  2. 後續筆數都換不掉被選中為sample的機率為 (1-(1/(j+1)))(1-(1/(j+2)))(1-(1/(j+3)))...(1-(1/n))),連乘後消去((j)/(j+1))((j+1)/(j+2))((j+2)/(j+3))...((n-1)/n)=j/n
  3. 合併算式後(1/j)(j/n)=1/n,所以每一筆為樣本sample的機率為1/n,得證等機率

抽k筆的流程

  1. 先放k筆進池子
  2. 第i筆(i > k)以機率k/i決定要不要進池子
  3. 若要進池子,就隨機踢掉池子中的一筆(每個位置機率1/k)
  4. 依照以上方式,任一筆出現在蓄水池的機率都是k/n

k/i機率的程式寫法可以random(0, i-1)落於[0, k-1]得之

證明機率為k/n,可分兩種情況證明

t > k 後來才來的元素

  1. 當在處理第t筆時,其被選進池內的機率是k/t
  2. 被選進池內後一路不被踢掉,直到處理完第n筆的機率計算為

每一筆後續元素i=t+1...n,第i筆發生替換事件的機率為k/i,而在替換事件發生的前提下,池內元素被踢掉的機率為1/k,所以處理第i筆時t被替換掉的機率為(k/i)(1/k)等於1/i,因此處理第i筆時t不被替換掉的機率為1-(1/i)等於(i-1)/i,直到處理完第n筆都替換不掉t的機率為(t/(t+1))((t+1)/(t+2))...((n-1)/n),連乘消去後等於t/n;合併考量下,在t < k時t被選進池內且不被替換掉的機率得證為(k/t)(t/n)等於k/n

t <= k 一開始就在池內的元素

因為一開始已在池內,因此需計算k+1...n過程t都不被替換掉的機率;假設i=k+1...n,第i筆發生替換事件的機率為k/i,而替換掉池內t的機率為1/k,可得(k/i)(1/k)等於1/i為t被替換掉的機率,進而知道t不被替換掉的機率為1-(1/i)等於(i-1)/i;直到處理完第n筆都替換不掉t的機率因此為(k/(k+1))((k+1)/(k+2))...((n-1)/n),連乘消去後得k/n得證



留言
avatar-img
Edison Lin的沙龍
0會員
3內容數
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
Soluron β 首部語音動畫登場!真人+Q版形象一次展現,結合中英雙語配音與AI聲線,完整展現 Chat老師家族的智慧角色魅力,由 Maxine 全程企劃製作。
Thumbnail
Soluron β 首部語音動畫登場!真人+Q版形象一次展現,結合中英雙語配音與AI聲線,完整展現 Chat老師家族的智慧角色魅力,由 Maxine 全程企劃製作。
Thumbnail
前幾天朋友發了一張圖片給我看, 內容是計時人員(以下稱小A)在通訊軟體上跟老闆辭職並表示只做到這個月底, 但老闆希望他能依照班表做到下個月中, 但小A傳了勞基法上關於提起辭職的天數計算方法。 對我來說,甚麼樣的人都有, 也甚麼事情都會發生, 我不會特別去探討評論或是選擇站邊。
Thumbnail
前幾天朋友發了一張圖片給我看, 內容是計時人員(以下稱小A)在通訊軟體上跟老闆辭職並表示只做到這個月底, 但老闆希望他能依照班表做到下個月中, 但小A傳了勞基法上關於提起辭職的天數計算方法。 對我來說,甚麼樣的人都有, 也甚麼事情都會發生, 我不會特別去探討評論或是選擇站邊。
Thumbnail
瞭解如何透過日文來預約日本風俗店,包括判斷店家是否接受外國客人,書寫預約信件的格式、注意事項以及日文信件輔助工具的使用。
Thumbnail
瞭解如何透過日文來預約日本風俗店,包括判斷店家是否接受外國客人,書寫預約信件的格式、注意事項以及日文信件輔助工具的使用。
Thumbnail
將 ChatGPT 與 Canva 結合使用可以幫助加速製作您的社交文案。 我從一個 YouTube 視頻中了解到如何將 ChatGPT 與 Canva 結合使用來創建社交媒體帖子。這是一個非常簡單的過程,但它確實有幾個步驟,他確實幫我省下很多「複製、貼上」的過程,我將在這篇文章中解釋如何操作。 一
Thumbnail
將 ChatGPT 與 Canva 結合使用可以幫助加速製作您的社交文案。 我從一個 YouTube 視頻中了解到如何將 ChatGPT 與 Canva 結合使用來創建社交媒體帖子。這是一個非常簡單的過程,但它確實有幾個步驟,他確實幫我省下很多「複製、貼上」的過程,我將在這篇文章中解釋如何操作。 一
Thumbnail
有幸在今年2月,上了台灣大學進修推廣學院,開的人工智能AI的相關課程,對這個領域陌生的我,剛好趕上Chat GPT爆紅時,讓我更了解AI的功能,以及它能幫人解決的問題。 有一個不完全但是貼切的比喻,那就是Chat GPT它是一個文字接龍器,這個文字接龍器有這強大的資料庫以及學習功能
Thumbnail
有幸在今年2月,上了台灣大學進修推廣學院,開的人工智能AI的相關課程,對這個領域陌生的我,剛好趕上Chat GPT爆紅時,讓我更了解AI的功能,以及它能幫人解決的問題。 有一個不完全但是貼切的比喻,那就是Chat GPT它是一個文字接龍器,這個文字接龍器有這強大的資料庫以及學習功能
Thumbnail
前言 最近Chat GPT很夯,網路上也對於Chat GPT出現很多文章,對於我原本就有在創作(小說)的人,對於Chat GPT的出現,其實不太擔心會取代我。 聽了歐陽立中老師的podcast的Chat GPT那麼猛!我們寫作還有前途嗎? 覺得有些心得,於是決定寫一篇給大家參考
Thumbnail
前言 最近Chat GPT很夯,網路上也對於Chat GPT出現很多文章,對於我原本就有在創作(小說)的人,對於Chat GPT的出現,其實不太擔心會取代我。 聽了歐陽立中老師的podcast的Chat GPT那麼猛!我們寫作還有前途嗎? 覺得有些心得,於是決定寫一篇給大家參考
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News