簡體   English   中英

如何為機器學習和預測建立良好的訓練數據集?

[英]How to build a good training data set for machine learning and predictions?

我有一個學校項目,要編寫一個使用Weka工具進行足球(足球)比賽預測的程序。

由於算法已經存在(J48算法),因此我只需要數據。 我找到了一個免費提供足球比賽數據的網站,並在Weka進行了嘗試,但預測結果很糟糕,因此我認為我的數據結構不正確。

我需要從源中提取數據並以另一種方式對其進行格式化,以便為模型創建新的屬性和類。 是否有人知道有關如何正確創建用於機器學習預測的屬性和類的課程/教程/指南? 是否存在描述用於訓練機器學習算法的數據集屬性的最佳方法的標准? 這有什么辦法?

這是我目前擁有的數據的示例: http : //www.football-data.co.uk/mmz4281/1516/E0.csv

以下是各列的含義: http : //www.football-data.co.uk/notes.txt

問題可能是您擁有的數據集太小。 假設您有十個變量,每個變量的范圍是10個值。 這些變量有10 ^ 10種可能的配置。 您的數據集不可能這么大,更不用說涵蓋所有可能的配置了。 訣竅是將變量縮小到最相關的變量,以避免潛在的巨大搜索空間。

第二個問題是變量的某些組合可能比其他組合更重要。

J48算法嘗試使用樹中每個級別的熵來找到最相關的變量。 穿過樹的每個路徑都可以視為與條件:V1 == a&V2 == b ...

這涵蓋了由於聯合互動而產生的意義。 但是,如果結果是A&B&C或W&X&Y的結果呢? J48算法只會找到一個,並且當單獨考慮時,它將是第一個選擇的變量在整體上具有最大意義的算法。

因此,要回答您的問題,您不僅需要找到一個涵蓋“一般”人群中最常見的變量配置的訓練集,而且還需要找到一個能夠忠實地代表這些訓練案例的算法。 忠實的含義通常適用於未見過的案件。

這不是一件容易的事。 體育博彩涉及很多人和很多錢。 如果只要選擇適當的訓練集一樣容易,那么您可以確定現在可以找到它。

編輯:

評論中有人問您如何找到合適的算法。 答案與您在大海撈針中找到針頭的方式相同。 沒有固定的規則。 您可能很幸運並且偶然發現了它,但是在廣闊的搜索空間中,您永遠不會知道自己是否擁有它。 這與在非常復雜的搜索空間中找到最佳點是相同的問題。

短期的答案是

  • 考慮一下該算法真正可以完成的工作。 J48(和類似的)算法最適合用於分類,其中變量對結果的影響是眾所周知的,並且遵循層次結構。 花卉分類就是其中一個可能出色的例子。

  • 根據訓練集檢查模型。 如果在訓練集上效果不佳,那么在看不見數據的情況下,性能可能會很差。 通常,您應該期望模型對訓練的性能超過對看不見的數據的性能。

  • 該算法需要用從未見過的數據進行測試 針對訓練集進行測試,同時進行快速淘汰測試,可能會導致過度自信。
  • 保留一些數據進行測試。 Weka提供了一種方法。 最好的情況是在除一種情況下(其余方法)建立模型,然后查看模型在這些情況下的平均表現。

但這是假設手頭的數據沒有任何偏差。

第二個陷阱是讓測試結果偏離構建模型的方式,例如,嘗試不同的模型參數,直到獲得可接受的測試響應為止。 使用J48,讓這種偏差蔓延並不容易,但是如果這樣做的話,您就只是將測試集用作輔助訓練集。

  • 繼續收集更多數據; 測試越長越好。 即使經過以上所有操作,您仍然不會知道該算法的實用性,除非您可以觀察其在未來情況下的性能。 當看似好的模型開始表現不佳時,就該回到繪圖板上了。

出乎意料的是,有很多領域(大多數是在軟科學領域)沒有看到有必要用未來的數據來驗證模型。 但這是在其他地方更好討論的問題。

這可能不是您要尋找的答案,但事實就是如此。

綜上所述,

  1. 培訓數據集應涵蓋“重要”變量配置
  2. 您應該針對看不見的數據驗證模型

識別(1)和執行(2)是棘手的位。 沒有可遵循的干法配方。

暫無
暫無

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

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