iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0

TensorFlow Transform

主旨:了解如何使用 tf.transform 來實作特徵處理和特徵建立

TensorFlow Transform

tf.transform 是由 Beam 和 TensorFlow 所建構而成的,因此他一方面保有 Beam 可以快速處理大量資料的能力,令一方面又擁有 TensorFlow 計算做轉換的功能

在昨天 Day21 的文章中,我們有提到做特徵工程的三個地方,其中在前處理的步驟,做特徵工程的話就適合使用 tf.transform,而其又可以分為兩個階段:分析(Analyze)與轉換(Transform)

分析是指對所有資料進行分析,例如說我要找到最大最小值,或者有幾種不同的類型,這些需要對全部資料做分析才可以得到的結果,就需要借用到 Beam 特長。

轉換則是根據分析的結果做數值上的運算轉變,例如說找到最大最小值之後,我要將整體值縮放,以利梯度下降的訓練,又或者是對種類數目做 one-hot encoding。

在分析的階段,一般來說會有3個步驟:

  1. 設置訓練資料的格式
  2. 接著在訓練資料運行 analyze-and-transform Ptransform,得到前處理過後的訓練資料和 transform function
  3. 輸出前處理過後的資料到 TFRecord (在 TensorFlow 中最有效率的格式)

而在轉換階段要注意地方有:

  1. 前處理的函式只能用 TensorFlow graph 中的函式
  2. 對於評估的資料集,處理方式雖然和訓練的相似,但是我們不會在評估資料上再重新做一次分析,而是會使用訓練資料集分析的結果

[GCP Lab實作-16]:探索 tf.transform

這個實作中,我們將學會:

  • 使用 tf.transform 實作特徵前處理和特徵生成
  • 在大量和串流資料上有效率地實現特徵前處理

註:這次 Google 提供的實作程式竟然沒辦法成功的在GCP上運行起來,推測是 tf.transform 和目前 TensorFlow 版本之間有一些衝突,不過還是會講一下整個運作的流程。

[Part 1]:探索 tf.transform

  1. 登入 GCP,並在 storage 創建一個 bucket。

  2. 開啟Notebooks後,複製課程 Github repo (如Day9的Part 1 & 2步驟)。

  3. 在左邊的資料夾結構,點進 training-data-analyst > courses > machine_learning > deepdive > 04_features > taxifeateng ,然後打開檔案 tftransform.ipynb

  4. 先安裝 Apache Beam、TensorFlow Transform 在 Python2 的相關套件:

  1. 確認套件版本:

  1. 設定環境變數名稱如 PROJECT、BUCKET、REGION等等:

  1. 將原始資料用 BigQuery 撈出來:

  1. head()describe() 看一下資料基本的樣子:

  1. 定義前處理需要用的幾個函式:is_valid()preprocess_tft() ,分別用來檢查資料輸入的範圍和資料的格式轉換:

  1. 前處理的函式 preprocess(),裡面涵蓋到了我們前面講的分析、轉換的步驟,詳細的程式碼可以參考這裡 (我是做到這裡會出現錯誤訊息):

  1. 在本機做訓練模型:

  1. 使用自己寫的一筆測試資料(test.json)預測:


今天介紹了 TensorFlow Transform,明天我們將開始第五個,也是最後一個子課程Art and Science of Machine Learning


上一篇
鐵人賽Day21 - Feature Engineering (5/6)
下一篇
鐵人賽Day23 - Art and Science of Machine Learning (1/6)
系列文
Machine Learning with TensorFlow on Google Cloud Platform30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言