資料轉換-使用計數學習

本文說明 Azure Machine Learning Studio 中的模組 (傳統) 支援以計數為基礎的特徵化。

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

使用計數學習是一種有效的方法,可建立一組以值計數為基礎的精簡資料集功能。 您可以使用此類別中的模組來建立一組計數和功能。 稍後,您可以更新計數和功能以利用新的資料,或合併兩組計數資料。

關於以計數為基礎的特徵化

計數為基礎的特徵化 基本概念是藉由計算計數,您可以快速且輕鬆地取得哪些資料行包含最重要資訊的摘要。 此模組會計算值出現的次數,然後將該資訊提供給模型輸入的功能。

想像您正在驗證信用卡交易。 這是這項交易的來源,這是一件很重要的資訊。 其中一個最常見的交易來源編碼方式是郵遞區號。 不過,可能有多達 40,000 個郵遞區號和地理區域編碼要列入考量。 您的模型是否擁有足夠容量來學習 40,000 個以上的參數? 如果您提供該容量給它,您是否有足夠的定型資料來防止過度學習?

如果您有很好的資料,有許多範例,這類精細的本機細微性可能很強大。 但是,如果您只有一個詐騙交易的範例(從較小的位置),是否表示該位置的所有交易都不正確,或您沒有足夠的資料?

其中一個解決方案是學習計數。 除了引進40000以上的功能之外,您還可以觀察每個郵遞區號的詐騙計數和比例。 藉由使用這些計數作為特徵,您可以取得每個值的證據強度相關資訊。 此外,藉由編碼計數的相關統計資料,學習模組可以使用統計資料來決定何時要變更其方法,而改為使用其他功能來取得資訊。

以計數為基礎的學習很有吸引力,原因很多。 使用以計數為基礎的學習,您會有較少的功能,需要較少的參數。 較少的參數可讓您更快速地學習、更快速地預測、較小的預測指標和較不可能的過度學習。

如何建立以計數為基礎的功能

基本範例可協助示範如何建立及套用以計數為基礎的功能。 假設您有如下的表格,其具有標籤和輸入。 每個案例 (或資料列或範例) 都有一組值在資料行中。 在此範例中,值為 A 和 B。

標籤資料行 輸入值
0 A
0 A
1 A
0 B
1 B
1 B
1 B

以下是建立以計數為基礎的功能時所採取的步驟:

  1. 針對一組特定的值,請在該資料集中尋找具有相同值的所有其他案例。 在此情況下,有三個實例和四個實例 B。
  2. 將每個值的類別成員資格計算為其本身的功能。 在此情況下,您會得到一個小型的矩陣:有兩種情況,其中 A = 0;其中 A = 1 的案例B = 0 的案例之一;B = 1 的三個案例。
  3. 根據此矩陣,您可以取得各種以計數為基礎的功能。 這包括計算記錄機率的比率,以及每個目標類別的計數。 下一節中的資料表會顯示資料。

以計數為基礎的功能範例資料表

標籤 0_0_Class000_Count 0_0_Class001_Count 0_0_Class000_LogOdds 0_0_IsBackoff
0 2 1 0.510826 0
0 2 1 0.510826 0
1 2 1 0.510826 0
0 1 3 -0.8473 0
1 1 3 -0.8473 0
1 1 3 -0.8473 0
1 1 3 -0.8473 0

範例

使用 Azure Machine Learning 建立點選連結預測模型的情況下,Microsoft Machine Learning 團隊會提供如何在機器學習中使用計數的詳細逐步解說。 本文會比較以計數為基礎的模型與其他方法的效力。

技術說明

本節包含對常見問題的執行詳細資料、秘訣和解答。

記錄檔遺失值的計算方式

記錄檔遺失值不是一般記錄檔的機率。 在此情況下,會使用先前的散發來使記錄機率的計算變得更順暢。

假設您有一個用於二元分類的資料集。 在此資料集中,第0類別的先前頻率為 p_0 ,而類別1的先前頻率為 p_1 = 1 – p_0 。 針對特定的定型範例功能,類別0的計數是 x_0 ,而類別1的計數是 x_1

在這些假設下,記錄機率的計算方式是 LogOdds = Log(x0 + c * p0) – Log (x1 + c\p1) ,其中 c 是可由使用者設定的先前係數。 Log 函數會使用自然基底。

換句話說,針對每個類別 i

Log_odds[i] = Log( (count[i] + prior_coefficient * prior_frequency[i]) / (sum_of_counts - count[i]) + prior_coefficient \* (1 - prior_frequency[i]))

如果之前的係數是正數,記錄可能會與不同 Log(count[i] / (sum_of_counts – count[i]))

為什麼某些專案未計算記錄檔的機率

依預設,計數小於10的所有專案都會在單一值區中收集,稱為「垃圾 bin」。 您可以使用 [修改計數資料表參數] 模組中的 [垃圾 bin 臨界 值] 選項來變更這個值。

模組清單

[ 包含計數的學習 ] 類別包含下列模組:

  • 組建計數轉換:從資料集建立計數資料表和以計數為基礎的特徵,然後將資料表和功能儲存為轉換。
  • 匯出計數資料表:從計數轉換匯出計數資料表。 此模組支援與實驗的回溯相容性,這些實驗會使用組建計數資料表 (已淘汰的) 和計數 Featurizer (已淘汰的) 來建立以計數為基礎的特徵。
  • 入計數資料表:匯入現有的計數資料表。 此模組支援與實驗的回溯相容性,這些實驗會使用組建計數資料表 (已淘汰的) 和計數 Featurizer (已淘汰的) 來建立以計數為基礎的特徵。 此模組支援將計數資料表轉換成計數轉換。
  • 合併計數轉換:合併兩組以計數為基礎的特徵。
  • 修改計數資料表參數:修改衍生自現有計數資料表的計數功能。

另請參閱