全台蔬菜交易視覺化(1,905)



徵,看圖說故事:

這一份文件自動產生了很多的蔬菜的視覺化,但我目前還沒有辦法讓電腦自動解讀這些圖的意義。假如你有興趣,你可以挑一組蔬菜,並試著解讀這一張圖的意義,寄到 muyueh.lee 的 gmail 信箱。我會把你的說明連同圖表,以 CC BY-NC-SA 3.0授權的方式公開。
此專案頁面上 ggplot2 程式碼以 GPL v.2 授權,文字及資料以CC BY-NC-SA 3.0


說明:

  • 這是全台過去十年來,所有在果菜批發市場交易的蔬菜視覺化,目前共有 1,905 張圖。
  • 視覺化想要回答的問題包含:
    • 菜量多寡,是否會影響價格?
    • 你假如生產了一大堆的大白菜,你應該運到哪一個市場賣?
    • 為什麼有一些菜,在一些市場的價格會波動,在另外一些市場可能連續三年都沒有變動?
  • 有一個詞彙叫做 Exploratory Data Analysis,想法是利用圖表的方式輔助資料探勘。這一系列的圖表可能就是這一個功用:圖表提出來的問題,比回答的問題還多。我把每一個圖表都切了十五個面向,每一個圖表有一點像是再問這一組資料一個問題,比方:「請問這一種蔬菜有沒有季節性?」。可能大部份的問題都不顯著,但有時候會出現有趣的趨勢:
    • 價格與交易量好似呈現負相關,好似供給是一條垂直線,交易便反應了需求線
    • 一些市場的交易資料維持恆定
    • 一些資料上,感覺一直都有兩個不同的群體的資料在反應

雖然一直以來,我都是用程式產生圖表。可是這一次我真的花了非常多時間在製作模板,抽象的思考:「應該來問什麼問題」;然後讓機器做大部份的功。

在做這一個分析,我一直在思考怎麼樣用 Machine Learning 的方法可以加快這一個程序,所以比方說做不同蔬菜的集群、做不同因素對於價格的回歸。機器應該也有辦法判斷這一張圖是不是一張有趣的圖。

另外一個有趣的思考點,是關於 Machine Learning vs. EDA:

  • Machine Learning 裡面的一個原則,是編程者不應該用眼力 fit 模型(因為這樣這一個程序就變成 humain learning 了)
  • EDA 的論述,是肉眼很容易辨識一些統計難以捕捉的例子

我還沒有套用 Machine Learning 的模組但這資料上,但我在想就算我套用了,我會有辦法注意到「有一些市場的價格是恆定不動」的觀察嗎?

致謝:

  • 這議題ㄧ開始是在臺大林照真老師「新聞資訊視覺化」的課中,由陳燕珩、蔣珮伊、蔣宜婷所做的報導,用 10 餘種蔬菜,過去兩年的觀察,發現有一些蔬菜是「颱風來之前」漲, 有另一些蔬菜是在「颱風來之後漲」;顯示大家的預期心裡其實可能是影響菜價的主要因素。

  • 資料來自農產品交易行情站,由 Howardsun 爬出,感謝 MLDM 的 Wush 協助 R 語言的修正。

  • 詮釋部份,很感謝吳聰敏老師、黃貞穎老師願意騰出時間讓我請教,讓我帶走了很多重要的問題。

技術細節:

  • 這一個原始資料接近 1G,整理過後 400 MB,產生 1,900 張圖;目前是我在視覺資料量的上界。
  • unix: sed/awk,用來清理抓取來資料,主要困難在原本的格式過於複雜
  • R/ggplot2/knitr,做一個模板,對資料進行簡單的清理,再針對不同蔬菜產生視覺;不過產生圖像的過程目前還是很大的瓶頸:光是要compile 1905 張圖(127*15)就會花掉約 90 min 的時間。
  • d3.js,我終究還是希望可以做出一個互動的界面,目前主要的困難是:1. 檔案 2MB-10MB 過於龐大;2. 我還沒有找到一個好的方法可以同時呈現上百萬個交易點,但又不會過於抽象畫:我假如一開始使用線性回歸代替資料點,可能就看不出來「有一些市場用固定價格交易」的趨勢了
  • 資料最後整理的格式如下:

    name date mktname sbtype transformation upperprice middleprice downprice avgprice quantity

    LH菠菱菜 085年04月01日 "台北二" "圓葉" null 15.0 10.0 5.0 12.0 6495

    LH菠菱菜 085年04月01日 "台北一" "圓葉" null 13.0 9.0 5.0 8.9 27816

    LH菠菱菜 085年04月01日 "永靖鄉" "圓葉" null 11.0 9.0 7.0 9.1 4971

緣由:

  • 每次看「老師」做股票的技術分析,看圖說故事的能力總是讓我很驚豔。股票被很多人研究,相對起來是一個有效率的交易。反觀,我們每天會吃到的蔬菜,反而沒有那麼多研究。

待做:

  • 複製結果到花卉、水果的資料組
  • 將資料切成小一點的檔案,改用 d3.js
  • 利用機器學習,跑出未來菜價預測
  • 跟颱風的資料比較