:::

最佳化問題:規劃求解 / Optimization Problem: Solver

image

這是巨量資料探勘與統計應用課程的投影片「最佳化問題:規劃求解」。本單元雖然被歸類系列課程中的「資料敘述級」,但其實它跟其他的資料分析方法有很大的不同:規劃求解會直接給你明確的答案。在本單元中,處理資料類型為「連續」類型。

「規劃求解」是屬於「最佳化問題」領域中的技術。雖然同樣是處理數字,但「最佳化問題」並非「統計」,而跟「資料探勘」領域比較相近。在大部分資料探勘的工具裡,要解決的問題比較明確、使用者較難以自行控制。而許多資料探勘介紹的基因演算法(Genetic Algorithm, GA)又是「最佳化問題」中的進階技術,一般使用者難以輕易上手。所以我這個單元介紹的是「最佳化問題」中比較基礎的「規劃求解」。

「工廠在有限的物料跟時間內,要選擇生產多少產品,才能賺到最多利潤?」或者是「圖書館有10萬元經費,不同讀者想看不同類型的書,要怎麼買才能在有限經費內滿足讀者需求?」像是這些問題,都可以用規劃求解來找出答案。本單元利用Google試算表Solver來實作規劃求解,學生不用自己動手算喔。這個單元包含了三個實作學習單,供同學邊看邊練習。


單元大綱 / Outline

  • 規劃求解是什麼?
  • Google試算表安裝Solver
  • 實作:規劃求解(條件1)
  • 實作:規劃求解(條件1+2)
  • 課堂練習:麵包跟蛋糕要作多少?

投影片 / Slide

我以Google簡報的檔案匯出成PPTX,再備份到以下位置:

學習單 / Worksheets

2017-09-30_123212

本單元包含了以下的學習單,請搭配課程投影片一起練習吧。

資料集 / Dataset

2017-04-08_180054

本單元的例題出自於以下資料:

  • Milton, M.(2010)。深入淺出資料分析(楊仁和譯)。臺北市:歐萊禮。(ISBN:978-986-6840-42-5)

2017-09-30_123603

為了讓同學更容易使用規劃求解,我將規劃求解的步驟分成了四個:

  1. 決策變量
  2. 目標函式
  3. 目標變量
  4. 限制條件

規劃求解框架試算表檔案如下:

線上操作平臺 / Online Workplace

google_driveAlecive-Flatwoken-Apps-Google-Drive-Forms

本單元的實作不需用到本機端的軟體,全部使用以下雲端服務。建議使用Google Chrome瀏覽器開啟:


小結 / In closing

為什麼會想要教「規劃求解」呢?原因很簡單,因為我真的覺得這個方法很有用,而且可以用在許多地方。分析資料的目的,最終都是為了在某些問題中找出最佳的解答,而「規劃求解」正是這樣的方法。

image

然而,我在準備教材的時候赫然發現,其實高中數學中已經有這樣的課程,叫做「線性規劃」(Linear Programming,簡稱LP)。「規劃求解」這個名詞,我是參考自Excel跟LibreOffice Calc都有的功能,可參考「EXCEL的好用功能─規劃求解」這篇 (原本Excel的說明寫得太難懂了)。

986684042

(圖片來源:三民網路書店)

但規劃求解這個概念,老實說我在高中時並沒有印象有學到這樣的技術,反而是後來在「深入淺出資料分析」一書中才對它有很深的印象。深入淺出資料分析在開頭的第三章介紹規劃求解,標題跟內文並沒有很明確的提到「規劃求解」或「線性規劃」這幾個名詞,但卻將規劃求解的概念介紹的十分清楚。因此本單元的標題名稱雖然是來自於Excel的功能,但內容卻主要參考了深入淺出資料分析的介紹,並且再簡化、調整,好能夠在課堂中介紹。

2017-04-08_180054

可惜的是,實際授課過程並沒有如我想像中的單純。主要是因為Google試算表的Solver有些bug,導致同學無法完成學習單中的任務。不知道是網路問題,還是Solver無法接受大量同時進行的請求 (雖然這些資料計算應該都不會帶來大量負荷才對啊?),總之本堂課並沒能好好地教完,甚是可惜。

不過,最後有同學跟我表示,她覺得規劃求解很棒:「我可以用這個方法來規劃購書細節,對吧?」,我感到十分欣慰。如果下次還有機會的話,我希望能在課堂上好好地將規劃求解介紹給同學。

推薦書:深入淺出資料分析 / Head First: Data Analysis

images

(圖片來源:Google圖書)

最後我要來推薦「深入淺出資料分析」這本書。我一向是深入淺出系列的愛好者,因為這些書籍致力將複雜的概念用淺顯易懂的方式陳述,並且加入了大量的練習跟反思活動,加深讀者印象。深入淺出有許多書籍都涉及資料探勘或統計領域,而深入淺出資料分析是其中寫得最好的一本。反觀現在講到大數據就是程式設計(特別是Python或R)、統計就是使用工具(SPSS或R,怎麼又是R),該書不強調程式設計或特定工具的使用,而是確確實實地去「認識資料」、「學習如何分析資料」、「什麼時候應該這樣分析資料」。該書的工具最多只有用到Excel,像是本單元的規劃求解,但它可以輕易替換成其他的試算表工具,像是Google試算表。

該書的章節如下:

  1. 資料分析簡介:化整為零
  2. 實驗:測試你的理論 
  3. 最佳化:超越巔峰 
  4. 資料視覺化:文不如圖 
  5. 假設檢定:假如我不是真的 
  6. 貝式統計:新事證的力量
  7. 主觀機率:相信數字 
  8. 試探法:像人一樣分析 
  9. 直方圖:數據的形狀 
  10. 回歸分析:未卜先知 
  11. 誤差:誤差難免 
  12. 關聯式資料庫:關係匪淺 
  13. 清理資料:賦予次序

許多章節都跟一些專門書籍有些重複。例如你可能會在統計書籍看到「資訊視覺化」、「假設檢定」、「主觀機率」、「直方圖」、「回歸分析」、「誤差」,在資料探勘書籍看到「最佳化」、「資訊視覺化」、「貝式統計」(是的,很多統計書籍講機率是為了算信賴區間,跟貝式無關)、「試探法」(heuristic,啟發法)、「回歸分析」、「清理資料」,在資料庫書籍中看到「關聯式資料庫」,最後可能會在研究方法的書籍裡看到「實驗」的內容。

對很多專門書籍來說,該書講的都太淺,但老實說,這些卻都是資料分析所需要具備的重要能力。有人學了資料庫,就覺得自己只要懂資料庫就好;有人會用SPSS跑統計,覺得這樣就足夠。但很遺憾的是,這些各自專業的技能並不能幫你完成整個資料分析的任務。對各個領域的更專精是件好事,但要進行資料分析,就其他相關領域的知識卻不得不略知一二。

從這個角度來看,深入淺出資料分析提供了很全面、有趣、容易理解的介紹。比起現在眾人吹捧「大數據」中花俏又高深的技術,基礎又實務的資料分析才是入門者都應該熟悉的第一道課題。

附帶一題,本書我最喜歡的是「假設檢定」這一章。雖然核心概念等同於推論統計的假設,但是該章不談統計,而是透過真實案例的推導來闡述「假設檢定」的核心價值與哲學原理。特別推薦學過統計的同學來看看本章,你會對推論統計的概念有更深入的認知喔!