在開發 數據產品 中,有些數據層面的考量需要一開始就思考清楚,才能在往後的開發上面無往不利。這邊是我想要分享一些自己面臨到的考量點,提供給大家反思,期許大家在做相關的產品的時候都能順利開發。
本文的架構,如同圖一所示,由於要打造數據產品的第一步就是訓練數據的收集,我們一開始就會評估數據收集的問題,針對問題去用一些解決方法去改善,才能確保這個數據產品是可以被建構出來的。接下來,因為數據產品將來會落地,必須要針對實際的測試資料做預測,所以我們需要考量到數據產品到底能不能有效針對實際資料正確的預測。我們的評判標準就是訓練資料是不是與測試資料是一致的?
訓練數據收集問題:
1.有些數據是收集不到,該如何因應?
像是一般在收集異常數據的時候,異常數據的數量真的非常稀少,這部分該如何因應呢?我們提出以下的建議方法:
(i)最簡單的做法,就是採用自編碼器的方式,透過只輸入正常情況下的數據,讓機器學習正常行為。以後機器在測試的時候,只要發現數據偏離正常的行為,就視為異常。
(ii)如果這些數據是與物理機制相關,可透過領域專家,採用物理模型模擬得到模擬數據,進行資料擴增,補足原本缺少的數據。
(iii)如果這些數據是影像相關,可先對這些資料進行平移,旋轉等等簡單的操作來擴增資料。如果想要更進一步得到不一樣的異常特徵,可考慮使用GAN造出異常數據。
透過以上手法,就可以在面臨不平衡的資料情況,也可讓機器有更好的學習。
2.收集數據時間過長
如果收集時間過長,如果收集時間很長,有好有壞,好處是因為這些數據收集時間很長,所以短時間內競爭對手會比較難以切入競爭,就可有效創造數據競爭門檻,保持一定領先優勢。壞處就是開發時間會比較長,這邊就是提供幾個可以參考的點。
(i)因為收集數據時間很長,所以一開始就要把需要收集的面向以及條件想清楚,才不會後面才發現沒想到,又重新耗費時間在收集。
(ii)尋找其他方法看能不能推估而得,像是用線性回歸,看能不能預測未來的數據,就可省掉時間。
訓練數據與測試數據一致性問題:
1.測試數據取得可行性?
如果我們可在開發階段就獲得真實測試數據,那就需要盡量確保測試數據的特性要與訓練數據相近,才能確保開發出來的數據產品,可針對實際情況準確預測。如果我們拿不到測試數據,那就會面臨到開發過程中,訓練數據與測試數據會有差異存在,就需要去評估到底用先前收集的訓練數據所開發的模型是否可適用在實際的測試數據?一定要確保這點是可行,才可往下做開發,最終才有可能得到成功的數據產品。
圖一 數據考量點
相關文章
[1] https://peterlihouse.com/人工智慧/ai-類神經網路dnn介紹/
[2] https://www.bnext.com.tw/article/66039/data-tools-five-point?