2016-09-01 13 views
0

可以說我有N個已知的列表。 (A,B,C},{B,B,B,C,C},{B,B,B,C,C}用於從數據列表中預測最可能的項目的算法

我需要一些算法(有些機器學習一個也許?),回答了以下問題:

鑑於項目的新的&未知的部分列表,例如,{A,B},什麼是概率C會根據我從之前的列表中得知的內容出現在列表中。如果可能的話,我想要更細粒度的概率:給定一些部分列表L,C出現在列表中的概率是多少,出現兩次的概率等等。順序無關緊要。在{A,B}中C出現兩次的概率應該等於它在{B,A}中出現兩次的任何算法都可以做到這一點?

+1

取決於列表的長度,我猜。其餘的:馬爾科夫。 – wildplasser

+0

https://en.wikipedia.org/wiki/Good%E2%80%93Turing_frequency_estimation可能有用 – mcdowella

回答

3

這只是純粹的數學,沒有實際的「算法」,只是簡單地估計數據集中的所有概率(字面上計算出現的次數)。特別是你可以做非常簡單的數據結構來實現你的目標。代表每個「目錄」作爲信袋,即:

{A,A,B,C} -> {A:2, B:1, C:1} 
{A,B} -> {A:1, B:1} 

等,並建立某種形式的基本反向索引,例如保持索引每個字母分開,通過他們的計數來分類的。

現在,當查詢出現時,例如{A,B} + C,您所做的只是搜索包含至少1個A和1個B(使用索引)的數據,然後通過計算包含C的迴歸結果的比例來估計概率(或者恰好一個C)與所有迴歸結果(假設您的數據是來自某些基礎數據生成分佈的一羣獨立樣本,這是一個有效的概率估計)。

或者,如果您的字母非常小,您實際上可以預先計算所有字母值的所有值P(C|{A,B})等等。

相關問題