當對時間資料執行特徵工程的時候,謹慎選擇用於計算的資料是十分必要的。通過使用乙個time index列注釋實體 並且 在計算中提供乙個cutoff time時,featuretools會自動過濾截止時間之後的任何資料,然後再執行計算。
時間索引是資料中的列,用於指定何時知道每一行中的資料,例如:檢查乙個客戶交易表。
上表中,每筆transaction都有一行資料,而transaction_time列指定了交易發生的時間。這意味著transaction_time是時間索引,因為它指示每行中的資訊何時變為已知並可用於要素計算。
但是,並非每個datatime列都是乙個時間索引。考慮客戶實體:
上表中,有join_date和date_of_birth兩個時間列。雖然兩列都可能對建立特徵有用,但是應該將join_date用作時間索引,因為它指示該客戶首次在資料集中可用的時間。
**注意:**時間索引定義為第一次可以使用行中的任何資訊。如果在計算特徵的時候指定了截止時間,則時間索引值較高的行將被自動忽略。
cutoff_time指定了可用於特徵計算的一行資料的最後時間點。此時間點之後的所有資料都將在計算特徵之前被過濾掉。
例如:考慮乙個帶有時間戳的客戶交易資料集,要在該資料集中**客戶1、2和3在1月1日04:00到當天結束之間是否會花費¥500。為該**問題構建特徵時,需要確保在計算中不使用04:00之後的資料。
傳遞cutoff time到featuretools.df() 或者 featuretools.calculate_feature_matrix()如下使用cutoff_time引數:
即使實體集包含每個客戶的完整交易歷史記錄,但只有時間索引最高且包括截止時間的資料才用於計算上述特徵。
通常,機器學習的訓練示例來自不同的時間點。要為結果特徵矩陣的每一行指定唯一的截止時間,可以傳遞乙個dataframe,它包括instance id的一列和對應cutoff time的另一列。這些列可以按任何順序排列,但是必須正確命名。具有instance id的列必須命名為instance_id,或者與目標實體索引具有相同的名稱。具有cutoff time的列必須命名為time或與目標實體time_index相同的名稱。
instance ids的列名和cutoff time的值都應該明確。傳遞同時包含和target entity index同名的一列 和 名為instance_id的列 的dataframe會導致錯誤。同樣地,cutoff time dataframe同時包含與target entity time_index同名的一列 和 名為time的一列 會導致錯誤。
**注意:**僅僅與instance ids和cutoff times相關的列被用來計算特徵。傳遞的所有其他列都將附加在結果特徵矩陣中。這通常用於傳遞機器學習標籤,以保證它們的特徵矩陣保持一致。
可以看出,特徵矩陣的每一行都是在截止時間資料幀中的相應時間計算的。因為在不同的時間計算每一行,所以可能會有回頭客。上例中,在04:00和08:00都為客戶1計算了特徵向量。
預設情況下,將使用直到截止時間(包括截止時間)的所有資料。可以使用「training window」來限制選擇的歷史資料量。比如:使用2h的訓練視窗。
可以看出,同樣的count特徵的值在縮小了訓練視窗之後變小了。
featuretools的training window限制了在計算特定特徵向量時可以使用的過去資料量。如果實體的時間索引的值在訓練視窗之前或之後,則將其過濾掉。這適用於在單個時間點發生行的實體,但是有時可能會持續存在一行。
例如:乙個客戶的會話具有多個交易,並且可以在不同的時間點發生。如果需要計算使用者在給定時間段內的sessions數量,通常希望計算在訓練時段內所有transaction的所有sessions。因此,不僅需要知道session何時開始,還要知道何時結束。乙個entity的last_time_index儲存了instance最後一次出現在資料中的時間。可以比較上面會話實體的時間索引和最後乙個時間索引:
featuretools可以通過執行entityset.add_last_time_indexes()自動將上次索引新增到實體集中的每個實體。如果已經設定last_time_index,featuretools將檢查last_time_index是否在訓練視窗開始之後。結合截止時間,dfs可以發現與給定訓練視窗相關的資料。
FeatureTools框架概述
featuretools 功能強大,主要用於自動化構建特徵工程 三種重要的組成 實體,特徵基元,dfs 實體 類似乙個表 多個實體間可以構建關係,類似關聯表 多個實體形成實體集 特徵基元 類似對表字段的處理方式,一種處理方式稱為一種特徵基元,且可以自定義特徵基元,比如 求和 sum 最小值 min ...
機器學習5
機器學習第六章走起 接著上一章,對於break point 按照前面的規律來看,隨著n的增大,我們的effective n 與pow 2,n 的差距越來越大 bound function 就是成長函式的乙個上限,我們剛才分析的成長函式是對於不同的h給與不同的分析,那我們有個目標,就是我們知道我們的n...
學習日誌5
學習日誌 姓名 孔令斌 日期 2018.7.13 今日學習任務 1.結構體 2.結構體和鍊錶 3.記憶體管理 4.union enum typedef 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 今日的任務雖然按計畫完成,但完成率不高,對結構體以及記憶體管理的運用並不熟練。今日開發...