[英]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.