簡體   English   中英

使用條件隨機場進行序列學習?

[英]Sequence learning using Conditional Random Fields?

我是順序學習(和機器學習)的新手,我試圖了解如何使用條件隨機場來解決我的問題。

我有一個數據集,它是我的應用程序的最終用戶何時和何地工作的順序日志。 例如,以下數據集將僅包含 User1 的值

User   Facility   Weekday
User1  FacilityA  Monday
User1  FacilityB  Tuesday
User1  FacilityC  Wednesday
 ...     ...         ...

我正在嘗試解決以下問題:給定用戶工作的工作日和設施,他們接下來將在哪個設施和工作日工作?

為了解決這個問題,我開始研究條件隨機場,但是對於任何圖書館來說都很難使用它。

我嘗試使用以下庫: 1. PyStruct ( https://pystruct.github.io/ ) 但由於這個問題,這對我不起作用: 索引越界:使用 Pystruct 擬合 SSVM

  1. CRFSuite( http://www.chokkan.org/software/crfsuite/ )(這依賴於 libBFGS。當我在我的 ubuntu 機器上安裝 libbfgs 時沒有任何錯誤,為 CRFSuite 運行“make install”仍然失敗並說它無法識別 libBFGS)

所以我轉向另一個庫.. 3. CRF++ ( https://taku910.github.io/crfpp/ )

我能夠安裝 CRF++ 並且能夠運行他們發行版中給出的示例。 但是,我需要一些幫助來了解如何修改模板文件以適合我的用例...

此外,我認為我的標簽將是上述數據集中的設施+工作日的串聯字符串。

我是序列學習的新手,目前正在努力研究如何解決這個問題......

任何建議都會非常有幫助,因為我似乎有點卡在這里..

謝謝!

  1. 是的,由於您要預測兩個標簽( Facility 和 Day ),因此需要連接標簽。 否則,您還可以學習 2 種不同的模型來預測每個標簽(參見第 3 點)。

  2. 我認為你應該研究這個問題的回歸模型而不是 CRF。

  3. 我認為數據的排列應該以易於了解用戶的日志歷史記錄的方式進行。 您能告訴我您對“任何”用戶(最近 3 次登錄?5 次登錄?7 次登錄?)的“最低”歷史記錄嗎?

假設您有每個用戶的最后 3 次登錄。 然后,如果在你的位置上,我會以不同的方式排列數據並學習 2 個不同的模型,一個用於預測日期,另一個用於預測設施。 用於預測日期的數據和模板文件的排列示例是here 類似地,將星期幾更改為設施名稱並學習用於預測設施的模型。 您也可以考慮並為我建議的功能添加更多功能。 如果您有更多用戶數據(例如職業或年齡或其他內容),那么您絕對應該嘗試向訓練數據添加更多列,並將這些列作為特征添加到模板文件中。 請記住,測試文件應以與訓練文件相同的方式排列(除了最后一列可以為空/缺失,因為它是模型在測試期間要預測的標簽)。

如果您想繼續並在一個模型中預測兩個標簽,您可以嘗試串聯(在我給您的示例中,day 現在將變為 day_facility)。

暫無
暫無

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

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