我們首先考慮VSM 中的兩個問題:權重如何調整以及文章長度的問題。我們使用 的權重調整方式為TFIDF,分為四種。若只考慮 TF 不考慮乘以 IDF 的情況,相當於從
第二種方法則是將一組食品之營養素分別除以此組食品之營養素平均值。第三種 方法則是先將第二種方法中的計算結果分別乘以該營養素之Entropy 權重值。而第四種 與第三種相仿,則是將第二種方法中的計算結果分別乘以該營養素之標準差權重值。以 上這四種權重方法會在下一節中詳細介紹。
而另一個問題:文章長度,因為建置營養資料庫時每個食品是以100g 為單位測量 營養素之值,所以每個食品的份量相同自然也就沒有份量不同的問題。但是在跨資料庫 時必須注意,因為其他的營養資料庫可能不是以100g 為基準。所以跨資料庫進行近似 度研究時必須注意重量的問題。
我們假設食品只有三種營養素,熱量、鋅以及維生素A 效力。因此食品 A 若其熱 量為100,鋅 50,維生素 A 效力 0,便可以在向量空間中表達成如圖 4-3所示。
圖 4-3 將 VSM 套用在食品營養素之中
4.3 影響因素
我們可能會面臨到一些問題,首先是資料的完整性。在台灣與美國地區營養資料 庫中皆有部分資料為未量測由計算而得或者是未直接測量等資料。因此我們必須先思考 如果計算過程中遇到缺值或者是上述未量測之值該如何計算。
其次是營養素之正規化的問題。營養素在以原始資料進行近似度計算時,可能會 因為某幾個營養素之數值過大,例如:熱量比維生素C 通常來的大且單位不同等問題,
最後一個問題就是討論近似度的計算方法。常用的公式為 Cosine,在研究後期我
因此我們用正規化(Normalized)的方法將這種比例縮小,如圖 4-5 所示。鋅(mg) 與水分(g)之間的比例已經縮小到 2 倍左右。因此可以縮小因單位不同所造成的差距。
約2倍 圖 4-5 經過 Normalized 的資料
4.3.3 營養素之權重問題
在正規化後營養素間因為單位不同的差距已經有所改善,但是這樣的結果可能不 夠完善。考慮到類似 IDF[13]之權重的問題,我們使用 Entropy 以及標準差這兩種。若 我們將正規化之後的數值乘上對應營養素之Entropy 或標準差之權重值的話,也許會有 不錯的結果,如圖 4-6、圖 4-7 所示。
圖 4-6 經過 Entropy 加權後之資料
4.3.4 營養素之挑選
log(0.97 10 (-0.97 10 ))log(0.89 10 (-0.89 10 )
log(0.77 10
log( 1.21 10 (- 1.21 10 ))
log( 1.04 10
(- 1.04 + +
+
10 )) log( 0.77 10 log( 0.77 10
(- 0.77 + +
+
10 ))
log( 1.38
10
(- 1.38
+
Entropy 之定義為亂度,因此我們選擇越大的 Entropy 值,藉以來區分食品之類別。
如此將所有營養素都計算一次,就會得到每個營養素之 Entropy 值,如圖 4-11 所示。
在這個例子中我們取Entropy 值前 5 大的營養素。
圖 4-9 實驗所取之食品範例
Sum:10
圖 4-10 Entropy 計算過程
圖 4-12 經過 Entropy 權重後之營養素數值
計算完每個營養素的Entropy 權重值後,便將原本經過正規化的數值乘上該營養素
之權重值。在 、 、 中,以文旦為例,假設只看熱量、鋅以及維生
素A 效力這三個營養素。原始資料中文旦可以被表示成(32, 0.1, 0)這樣的向量形式,經 過正規化後文旦向量的數值變成(0.77, 0.62, 0),若再撘配上各營養素的 Entropy 權重值 分別是(0.988, 0.753, 0.668),將 0.77x0.988=0.76,0.62x0.753=0.47,0x0.668=0,所以經 過Entropy 權重後文旦向量的數值就變成(0.76, 0.47, 0)。
其他營養素也是相同,再將較高的標準差值之營養素挑選出來,藉以用作判別食 為High Order。此外,若反過來看數值較小的營養素也許會有意想不到的效果,我們將 這種挑選較低數值之營養素的方式稱為Low Order。假如將上述 High Order 與 Low Order 各取一部份的營養素,我們將這種取營養素的方法稱為Mix Order。
4.3.5 近似度計算方法之選擇
近似度之計算常用的方法如圖 4-14 所示。除了使用常見的 Cosine 外,我們在後 期實驗也加入Dice 以及 Jaccard,實驗 Cosine 與 Dice、Jaccard 之間是否有顯著的差異。
圖 4-14 常用的近似度計算公式
以 中的文旦與白柚為例計算 Cosine 假設只看三個營養素:熱量、鋅以及 維生素 A 效力,文旦:(0.76, 0.47, 0),白柚:(0.88, 0.47, 0)。
圖 4-12
4.4 實驗方法與結果
根據先前討論的方法,我們可以區分為取營養素的方法與取出之數值處理方法。
取營養素的方法有八種,分別是取全部營養素、基本成分表之營養素、5 個基本營養素、
Entropy 之營養素、標準差之營養素、High Order 之營養素、Low Order 之營養素以及 Mix Order 之營養素。而取出之數值處理方法有四種,分別是原始資料(RAW)、正規 化(Normalized)、正規化後乘上 Entropy 權重以及正規化後乘上標準差權重。
因此我們首先實驗這些方法互相搭配之效果,我們將實驗分為初步實驗與進一步 實驗。初步實驗目的在找出效果較好的組合,進一步實驗則是深入探討初步實驗之結果 做更多食品組合更詳細的實驗。
4.4.1 實驗範例
我們先取一組食品,這組食品有 21 個各種類別食品 ,其中有 4 個食品與基準食 品相同類別。我們實驗目的就是希望同類別的食品能夠在計算近似度時排名越高越好。
如圖 4-15 所示,第 1 個食品大排(猪)就是基準食品,實驗希望找出一個有效的搭配 方法計算近似度可以讓同類別的食品排名較高,排名越高代表近似度也越高。除了基本 食品,同類食品有4 個分別是猪肝、山羊肉、猪頰肉以及猪舌肉。
圖 4-15 實驗所取用之食品
理想的實驗結果如圖 4-16 所示,因為我們取 4 個與基準食品同類的食品,所以在 縱軸表示取得相同食品類別的比例,而橫軸表示食品之排名。若第1 個食品為相同類別 則曲線會爬升到25%,而第 2 個食品為不同類別則曲線不會往上爬升,以此類推。最好
圖 4-16 理想的實驗結果
4.4.2 實驗一:尋找近似度最佳組合
在實驗一中,我們每組食品取樣21 個,其中包含 1 個為基準食品、4 個與基準食 品相同類別的食品,剩下的16 個食品隨機挑選與基準食品不同類別的食品共取十組食 品取平均。
如圖 4-18 所示,每個圖中都有一個數字,如 Entropy 中為 7.8,此數字所代表意義 為三次挑選食品之最低名次之平均。因為我們希望與基準食品相同類別的食品排名越前 面越好,最好是前四名都是相同類別。所以這上面的數字越小越好,同時也代表同類別 的順位越前面。
此外在圖中標準差的值是空的,這是因為標準差挑選營養素上所導致的情形,由 於標準差之定義為一群觀察值與平均數之差,稱為離均差,各離均差之平方的平均數(即 變異數)再予開方所得即為標準差。所以標準差很容易挑選到其中一個食品有值而其餘 皆為0 的營養素欄位,若以這種營養素計算近似度就會得到都為 0 的近似值,因此也無 法繪出圖形。如圖 4-17 所示。
圖 4-19 為原始資料經過正規化的實驗結果。圖 4-20 為正規化後的數值再乘以 Entropy 的權重值的實驗結果。圖 4-21 則是正規化後的數值再乘以標準差的權重值的實 驗結果。最好的取營養素方式為Entropy 與全部營養素,另外基本成分表的結果還算可 以。至於數值的處理方式,我們發現經過正規化後的結果普遍優於其他方法,至於是否 需要乘以Entropy 或標準差之權重值,可能還要再觀察。
檢閱實驗結果,我們大致有了一個方向:資料在經過正規化(Normalized)後的實 驗結果普遍都比其他方法好。在取數值的四種方法中,正規化資料實驗結果、正規化資 料乘上Entropy 權重實驗結果以及正規化資料乘上標準差權重實驗結果這三者結果都不 錯,因此我們在實驗二中將保留這三種的取數值方法。至於取營養素的八種方法中,我 們發現High、Low 以及 Mix Order 這三種方法結果不甚理想,甚至實驗過程中最低名次 的變動率相當高,這有可能與食品之分類有關。例如:豆漿之分類,有的認為應該分在 豆類,但有的認為分應該在嗜好飲料類。所以我們決定這三種方法先行剔除。此外取基 本成分表之營養素(Basis)的方法也是不夠好,而取標準差營養素(STDDEV)則是 先前提過容易取到不適當的營養素,所以決定也將這兩種方法剔除。
圖 4-18 實驗一原始資料(RAW)實驗結果
圖 4-19 實驗一正規化資料(Normalized)實驗結果
圖 4-21 實驗一正規化資料(Normalized)乘上標準差權重實驗結果
4.4.3 實驗二:探討最佳的權重方式
根據先前的實驗,我們將對正規化資料、正規化資料乘上Entropy 權重以及正規化 資料乘上標準差權重這三者做進一步的實驗。而取營養素的方法則是採用 Entropy、5 個基本營養素以及全部營養素等三種。
在實驗組數我們隨機取十組,每組中有51 個食品,其中包含 1 個為基準食品、10 個與基準食品相同類別的食品,剩下的40 個食品隨機挑選與基準食品不同類別的食品。
圖 4-22、圖 4-23 以及圖 4-24 為實驗結果。從實驗結果中可以發現到取 5 個基本 營養素的方法較不理想,而取Entropy 之營養素的方法在三種計算數值的方法中都有著 不錯的表現,因此在計算正規化資料後是否需要乘上Entropy 或標準差權重似乎沒有很 大的差別。
可以看出實驗二與實驗一有著相符的結果。最好的取營養素方法以及權重方法為 取 Entropy 營養素並以 Entropy 權重計算,其次為取 Entropy 營養素並以標準差權重計 算,第三為取Entropy 營養素並將原始資料正規化。第四則是取全部營養素並以 Entropy 權重計算。
圖 4-22 實驗二正規化資料(Normalized)實
圖 4-24 實驗二正規化資料(Normalized)乘上標準差權重實驗結果
4.4.4 實驗三:不同近似度公式之影響
先前提到計算近似度時有許多公式可用,我們必須實驗看看哪一種公式對於計算 營養近似度時有比較好的結果,因此我們在這裡挑出Dice 以及 Jaccard 這兩者與 Cosine 比較。
我們在此實驗共取十組,每組食品包含一個基準食品,十個與基準食品相同類別 之食品以及四十個其他類別食品。取營養素的方法有取Entropy 營養素、取五個基本營
我們在此實驗共取十組,每組食品包含一個基準食品,十個與基準食品相同類別 之食品以及四十個其他類別食品。取營養素的方法有取Entropy 營養素、取五個基本營