跳到主要內容

發表文章

目前顯示的是 7月, 2018的文章

閱讀 |《大數據的傲慢與偏見》閱讀心得

《 大數據的傲慢與偏見:一個「圈內數學家」對演算法霸權的警告與揭發 》 Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy 在大數據標語與口號滿天飛、以及演算法充斥著網頁瀏覽器及社群平台的時代,即便是不曉得演算法為何物的輕度網路使用者(例如許多人的父母長輩),也或多或少能從其瀏覽的網頁資訊、社群軟體當中發現一些端倪。但本書所提到的演算法,並不局限於網路,而是遍佈於你我的生活當中,諸如求職、工作表現評比、廣告、保險、乃至於政府行政與法律問題。作者大量引用了相關報導以及研究,說明錯誤地運用這些複雜的數學演算法,將如何使人類社會失衡並帶來災難。 看完之後令我特別感到有趣的,是本書的作者。作者 Cathy O’Neil 女士,是美國哈佛大學數學博士,除了在大學任教之外,她還有在金融業、行銷、傳媒、等事業單位擔任資料科學家的經歷。在以男性為主要成員的數學與資訊科學相關領域當中,是少見的女性成員。有趣的點,正因為她是一位女性、而且還是一位家庭主婦。 我們常見的大數據、AI、或者其他基於統計學、程式演算法的相關技術,通常應用於工業、商業等領域。坊間也不難找到相關書籍以及收費課程。但上述的應用大多僅強調這些技術的強大以及益處,延伸來解讀,我們可以說其強調如何使應用者邁向成功;但幾乎不會提到,在某些演算機制的缺陷下,或者誤用(乃至於惡意地)這些數學方法,可能有受害者產生(尤其是對那些原本就處於弱勢的人們)。而在傳統社會的印象當中,會認為男性就是應該要有一番作為、被期許要成功、個性要剛強有主見等等;正好而這些「失敗」、「弱勢」等等概念詞彙,相對立的。 同樣地,傳統上,在男人們專注於打拼事業、專注於邁向成功之虞,誰來照顧那些弱勢者?(這裡指弱勢者,可能是老弱婦孺、或泛指社會上生活困頓無可依靠者)以及,誰更容易關切這些弱勢者?是女性。想想戰爭期間,男人上戰場作戰,女人則留守家園照顧老幼、以及進行各種後勤工作。延伸到現代,無論是東方或西方,這種「男人在外工作打拼;女人留在家照顧老幼」的模式,仍不在少數。(啊,這裡沒有表達性別歧視或偏見的意味,我只是在描述從早期一直延伸到現代的一種社會文化認知情況) 我在想,是否正因為作者是女性,且又是一名家庭主婦,她所看到、所想

雜談 | 邁向資料科學家之路 其一

我在曾在〈 不是工程師的工程師 〉一文當中,開宗明義地介紹這個部落格的目的。 既然是以成為「未來的資料科學家」為目標,那麼總該清楚回答:資料科學是什麼?資料科學家平常在幹嘛?以及其價值定位……等等問題。於是,我決定用兩篇文章的篇幅,第一篇談「 入門 」與「 觀念 」;第二篇談「 技術 」與「 職場 」,依序回答每個層級的相關疑惑。 多數內容或許都是老生常談(尤其對業界人士,或者像我一樣有同樣目標的在學者而言),但我仍希望將自己的學習歷程,做個有系統的回顧與統整,乃至於和我有相同目標的同好、亦共同參考學習。 【入門】 如同文章開頭提到的,我們總得從最根本的問題回答起: 什麼是資料科學? 〈 揭開資料科學的神秘面紗 〉這篇文章中給了簡單扼要的說明。 作者Meng Lee本身就是一名資料科學家,他根據他個人的經驗,說明了到底啥是資料科學?資料科學到底在夯什麼?為什麼我要學資料科學? 如何成為一名資料科學家? 〈 如何成為一名資料科學家? 〉裡頭提到,一位資料科學家,不外乎同時具備以下這三項專業能力:Hacking Skills, Math & Statistics Knowledge, Substantive Expertise 此外,他也以自身企管顧問背景的經驗,提出了另一套看法,他說明了「商業力」、「分析力」、「技術力」這三種專業能力結合的重要性,也就是能理解業務(Domain Knowledge)、知道如何有系統地分析與業務相關的問題(Analysis)、以及透過數學、程式語言、軟體等工具來解解決上述問題的能力(Programming、Coding),尤其對商業環境當中的資料科學家而言,尤是如此。 關於資料科學的迷思 現在我們對資料科學與資料科學家,都能有個87成概念了,但是目前為止談的都是美好的理想與目標,而現實總是殘酷的, 我們總得認清哪些是媒體、廣告商、與補習班過度跨大及美化的噱頭、還有自己幻想出來的美好泡泡。 〈 資料科學的五大迷思 〉一文,就為我們歸納並解惑了許多常見迷思,包含對資料科學的功用的過度誇大、什麼都得來個大數據的浪潮、還有「以為上過幾堂Python、SQL、Machine Learning課程,就可以是一名資料科學家/工程師」等等膚淺的認知。〈 資料科學家的告白:給幼

SQL | MS SQL 初心者筆記 其一

該學哪一套 SQL ? 這是我決定要開始學  SQL  之後所遇到的第一個問題,常見的方案就有  Oracle 的  MySQL 、 Microsoft  的 SQL Server 、和 Open Source  的  PostgreSQL 。雖然指令及語法基本上一致,但個別資料庫軟體的操作細節還有其對應的作業平台也都有所差異,這對資工或資管背景的朋友而言可能不會造成太大問題,可是對程式素人的我而言就有差了。 回顧一下前文章提到的重點: 「 先確認目的  or  需求是什麼,再來決定要做些什麼。 」 於是我先調查了一下我的理想職缺當中,主要要求的是哪一種資料庫系統,再考量到我熟悉的作業系統平台,我決定從 Microsoft SQL Server( 以下簡稱 MS SQL) 來學習  SQL 。 選擇教材資源 在這個網路如此發達,各種線上教學資源多如繁星的時代,我覺得還去報名什麼 X 匠電腦之類的補習班課程,實在是傻子。我不否認這種成套的付費課程仍舊有其優點,但我秉持著 「如果學習者自己不夠積極努力,那麼無論報名再怎麼濃縮懶人高效的付費套裝課程,也都只是在浪費成本而已。」 於是,我開始蒐羅、篩選適合自己的教材及資源。 說到線上資源,許多人會想到的可能是大專院校當中的  Open Course Ware 或是  MOOCs 。然而我選擇的是從  YouTube 上尋找專業技術人員的教學影片,例如這個: 【 SQL Server tutorial for beginners 】 【 SQL Server Report Builder 2016 】 【 SQL Server Reporting Services (SSRS) Tutorial 】 【 SQL Server Integration Services (SSIS) Tutorial 】 【 SQL Server Analysis Services (SSAS) 】 這項選擇的原因是, Open Course Ware  或是  MOOCs  的一堂課程影片,通常是針對大學生(甚至說,非進修部的大學生)而設計的,學生們通常有充裕的時間能吸收、思考、練習。但 對上班族而言,這樣的一部教學影片內容往往過長,不利吸收、消化、乃至於練習。相

R | R 初心者筆記 其一

先前的文章 中提及,我是從前一份工作當中發展出對資料科學程式語言的興趣。可是,資料科學與程式語言並非完全重疊的兩項專業,而我個人的學習歷程是: 1.       對資料分析產生興趣 → 2.       對資料科學產生興趣 → 3.       進一步瞭解了資料科學 → 4.       開始學習程式語言 → 5.       開始尋找資料科學相關工作與所需技能 → 6.       開始學習資料庫 根據上述先後順序,我是因為想進一步學習資料科學的實作技術,才去學習程式語言。然而在當今的業界環境當中,除非是在大型、且分工非常專業明確的工作團隊,否則要從事資料科學、數據分析相關工作,幾乎都需要具備一定程度的程式語言底子,為了夢想,值得學習程式語言。 Python vs. R 如前文所述,我的最終目標,是想從事資料科學相關工作,再更明確定義,主要是有關 統計分析 、 作業研究 、 資料採礦 、與 資料視覺化 的工作。開源的  Python 、 R  都是很好選擇,而在自行做過功課比較過該兩種語言的特色及優缺之後,我個人選擇從 R 起家,這麼做的原因有三: 1.   我的目的是專精在數據分析, Python  雖然易學性及程式的可讀性高,且應用的層面十分廣泛,但若要強調數據分析這個目的性,則  R  的「專門性」又高過於  Python 。 2.   無論是在綜合應用或者資料科學領域,程式語言的使用者當中, Python  的使用者都是相對較多的。既然這麼多人都在用  Python ,而且用得比我好的人還很多,那我何樂不專注在  R  上面,做出自己的專業區隔性,而不是去擠那個競爭者較多的市場? 3.   R  的語法以及套件使用方式,與  MS EXCEL  非常相像。這使得我很容易用類比的概念來學習  R 。比起  Python ,我能夠更快的熟悉  R  的基本環境與操作方式。 選擇教材資源 在瞭解自己該專注於哪種工具之後,接著就是專注在學習上。一如我在另一篇文章中提過,我的學習方式一向都是從免費資源當中,摸索、篩選、並發展出最適合我自己的學習方式。以下則是我個人十分推薦的教材: 《 R 錦囊

雜談 | 不是工程師的工程師

這是一個非科班出身的程式語言及資料科學自學者的學習歷程部落格。 這很適合放在本部落第一篇文章的內容當中。在這裡,你找不太到程式語言的技術教學,有的是一位程式語言自學者,對於自學寫程式的心得與看法。 對於學習,我的觀念都是這樣的, 唯有持續的練習、並定期記錄、審思自己在過去一段時間內的學習內容,才會知道自己是否真正有所成長。 抱著這樣的信念,我開始寫這個部落格。 為什麼想學習寫程式? Cause I want to be a data scientist. 這要從我前一份工作談起。我在中部的一家小型貿易公司擔任業務助理,其中一項主要的工作內容,即是製作各式報表供主管們參考。但公司僅採用功能陽春的  ERP  來執行進銷存作業,且沒有資訊部門。問題來了,主管們所需要的這些報表,通常無法由  ERP  直接生成,必須先從  ERP  取出  raw data ,再以人工的方式加工而成。這些報表的加工所需時間不一,主管們對於報表資訊的需求又頻繁且多樣。為了解決這個問題,我便鑽研起各種  MS Excel  的函數使用方法。僅憑常見的加總函數、樞紐分析表、或是內建的統計圖表是不夠的,一定還需要搭配參照、條件式函數、甚至是巨集。 於是,我不僅大幅改善了製作報表的所需時間,同時能夠製作過去其他同仁們不知道該如何產生的報表資料。印象最深刻的例子是,同樣一份報表資料,我的同事用手工方式一欄一列慢慢鍵入,需要半天、甚至一整個工作天的時間 ;我用結合多種函數而寫出的巢狀迴圈,只需要幾十分鐘便可完成。對於  programming  的興趣,也是在此時慢慢培養出來的。本文標題的亦出自於此,即 明明不是工程師,可是在做的卻是相當於( 廣義上的) 工程師的工作內容 。 等等 !!? 那這跟 D ata Scientist 有什麼關聯? 說到底資料科學家也是一種職業啊  XD 可是小小一枚助理,即便真的具備十足本事,想將資料科學的知識技術發揮在工作上,大概也十分有限。既然如此,那就找一份真正與資料科學相關的工作吧!前面提過,我並非出身於資訊工程相關學科背景,可是放眼望去,與資料科學、資料工程、資料分析相關的工作,所需要具備的專業技能幾乎都脫離不了寫程式,可是不會寫程式怎麼辦?那就學吧!同時,為了實踐這樣的