簡體   English   中英

在這種情況下,哪種機器學習算法最好?

[英]What machine learning algorithm would be best in this scenario?

更新 - 簡短版本

在閱讀了一些答案和評論之后,我想我可以更好地總結一下我的問題。 請參閱下面的詳細示例。

我正在尋找一種機器學習算法,可以:

  • 生成幾個不同變量的組合,
  • 從持續的人工反饋中學習,將每個組合分類為“好”或“壞”,並提高其未來的生成准確性
  • 在小反饋(訓練)數據集上工作得相對較好
  • 權重最近提供了反饋(訓練)數據 - 換句話說,與新反饋相比,舊反饋數據隨着時間的推移應該變得不那么有影響力

示例場景

讓我們說我正在嘗試創建一個能夠生成鍛煉計划的算法。 我會給它一些限制(我每天只能花45分鍾鍛煉,周四不能鍛煉等)。 然后,我希望它為一周中的每一天生成鍛煉計划。

然后,我希望能夠告訴算法我不喜歡它生成的計划的一部分(也許我不喜歡在ab鍛煉的同一天運行)。 我給出算法的唯一輸入是給定日期的一個練習是“壞”(我取消ab或運行部分,任一個)。

但我不會告訴它為什么它是壞的,只是因為它無論什么原因都不起作用。 這可能是一百萬種不同的原因之一,也許我在運動后將其標記為“不好”,我甚至都不知道為什么它不順利,只是因為我感覺不舒服。

此外,該算法可以假設我沒有標記為“壞”的任何鍛煉計划表至少是“好的”。

我在找什么......

我正在尋找一種算法(機器學習,我假設),它會接受這些反饋並隨着時間的推移進行訓練,以嘗試猜測我會喜歡哪些訓練。 它可能會在相對較小的數據集上工作(我一周不會鍛煉數千次),而且我無法從其他人那里獲取數據(所以某種推薦引擎就是Netflix了)。

我認為這屬於二元分類問題 (提議的鍛煉計划是“至少確定”或“不好”) ,但我不確定從算法的角度來看最佳方法是什么。

我可以(希望)自己找出編碼和算法細節,但我需要一些指導或建議,從哪個算法開始!

解決方案1:
Netflix獎解決了類似的問題。 該算法知道您喜歡/不喜歡的電影數量相對較少,並且基於此[和其他用戶體驗],它會建議您喜歡哪部電影。

關於這個主題的文章很多, BellKor解決方案得分最高。

這當然不是同一個問題,因為它也解決了其他用戶的偏好,並使用它來匹配您喜歡的電影,但它可能會對您有所幫助。

(*)在您的問題中,“電影”是一種競爭訓練[例如abs +有氧運動],並且基於您喜歡/不喜歡的訓練,以及它與其他用戶的相似性,可以為您挑選優先訓練。

更多信息可以在Netflix Prize主頁上找到


解決方案2
預先更簡單但可能不太准確的解決方案可以基於k個最近鄰居算法。 每當用戶指示他喜歡/不喜歡訓練時,您都會存儲它。
在這里,您的功能是鍛煉部分[二進制值,例如,如果您有運行+ abs訓練,這些值將設置為true,其余值為false]。
當您需要選擇訓練時,您可以將其與最近的k個鄰居[最相似的特征]進行匹配,並根據他對類似“鄰居”的回答來預測用戶是否喜歡/不喜歡此訓練。
請注意,此算法僅檢查是否喜歡/不喜歡鍛煉,並且不會創建鍛煉。 一個可以隨機選擇,只有當算法認為它是好的時才應該被接受,否則:隨機選擇一個新的,依此類推......

一般性評論:跟進評論討論:
機器學習主要基於啟發式和實驗。 在我看來,你可能應該有一些算法,並根據實驗檢查哪些分數是最佳准確度,或者結合一些算法以獲得最佳結果。 基於這個答案如何組合算法的一種可能性是:

1. choose a workout based on the BellKor solution to the Netflix prize
2. check k nearest neighbor - if this workout is likely to be approved by the user.
   2.1. If it is likely to be approved: pass it to the user and finish
   2.2. else: return to 1, and choose a different workout.

這確實感覺像二元分類問題。 我首先閱讀Naive Bayes分類器 真正的工作是決定每個鍛煉程序的“特征”。 長度? 困難? 肌肉工作? 燃燒大約卡路里? 一天的時間? 那天天氣? 因為這些算法正在學習驅動你的決定。

我推薦Mahout in Action (我寫了一部分,但不是分類器),它涵蓋了Apache Mahout ,並且有一個相當不錯的實用分類介紹。

你不能用一個algorythm來創造這個。 您應該構建將使用不同算法的pipline。 如果你想要構建一個好的工作應用程序,那不是很簡單的事情。

您可能需要考慮閱讀有關多實例學習的內容。 這個想法是你發送要評估的東西袋子,如果袋子里的任何物品都不好,整個袋子的評級都會很差。 如果所有項目都很好,你會獲得正面評價。

然而,這並不是你問題的完美匹配,因為在你的問題中,兩件好事可能會一起變壞,但至少可能會指出你正確的方向。

這是另一個領域中模糊相似的東西: http//en.wikipedia.org/wiki/Evolutionary_music

就個人而言,我會從一個簡單的調度程序開始(例如,按優先順序一次一個地將活動納入計划中),並添加一個GUI,允許您按計划轉換活動,或標記要刪除和重新安排的一組活動,可能是在不同的優先順序下,或者是某種隨機擾動。

暫無
暫無

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

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