簡體   English   中英

如何通過學習以前的分布來預測用戶生成的分布

[英]How can I predict a user generated distribution by learning from previous distributions

我正在嘗試編寫一個預測算法,它根據用戶的預輸入來預測 4 個杯子中彈珠的分布。 但我不知道從哪里開始或可以使用哪些技術來解決這個問題。

例子:

有 4 個杯子,編號從 0 到 3,用戶將收到 x 個彈珠,他將這些彈珠分配到這些杯子中。 每一輪用戶都會收到另一個數量的彈珠(或相同數量),並且在用戶分發它們之前,算法會嘗試根據用戶之前的輸入來預測分布。 之后,用戶“糾正”它。 目標是用戶不必更正任何內容,因此算法會預測正確的分布。 然而,用戶分配彈珠的模式可以改變,算法必須適應。

這是問題的最簡單設計,已經不是很容易解決了。 然而,當彈珠具有可用於分布的附加屬性時,它會變得更加復雜。 例如,它們可以具有顏色和重量。

那么,舉例來說,算法如何得知用戶(大部分時間)將顏色相同的彈珠放在一個杯子里,但杯子 2 是(大部分時間是空的),其余的則平均分布?

所以在我的腦海里,算法必須做這樣的事情:

  • 在用戶分配完成后搜索模式。 這些模式可以是每杯彈珠的數量/每杯的重量或其他任何東西。
  • 如果找到模式,則將預定義值(權重)添加到模式中
  • 如果未找到先前的模式,則必須從模式中減去預定義的值
  • 當算法必須進行預測時,必須應用具有預定義權重的所有模式。

我不確定我是否遺漏了什么以及我將如何實施這樣的事情,或者我必須在哪個領域尋找答案。

首先,請記住,人類行為並不總是遵循某種模式。 如果用戶隨機分配這些彈珠,將很難預測下一步!

但是,如果分布中存在模式,您可以使用神經網絡或決策樹等算法來創建預測。

例如:

// dataset1
// the weights and colors of 10 marbles
let dataset1 = [4,3,1,1,2,3,4,5,3,4,7,6,4,4,2,4,1,6,1,2]

// cups1
// the cups distribution of the above marbles
let labels1 = [2,1,0,2,1,1,3,1,0,1]

現在您可以訓練算法,例如神經網絡或決策樹。 這不是真正的代碼,只是它如何工作的一個例子。

let net = new NeuralNet()
net.train(dataset1, labels1)

在使用大量數據(至少數百個這樣的數據集)進行訓練后,您可以為網絡提供一個新數據集,它會為您提供杯分布的預測

let newMarbleSet = [...]
let prediction = net.predict(newMarbleSet)

你想用這個預測做什么取決於你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM