Showing posts with label 大數據. Show all posts
Showing posts with label 大數據. Show all posts

Tuesday, July 4, 2023

新手如何自學python

        最近看到個關於新手如何學習python的討論串。順便分享一下我自己學習python的經驗,希望能幫新同學少走彎路少採坑。

        因為我不是Computer Science背景的,也不是上課程有系統學python,加上我學習python的時候年紀已經很大了,完全是一套野蠻生長的學習套路,我沒怎麼看書,幸運的是身旁的同事都是python高手,或是其他相關團隊例如DBA/Hadoop/BI/modeling/app開發/docker,靠著不要臉的方式問這些小朋友,然後網上找解答(這個下期介紹)。因此一些同學會遇到的問題,我應該都遇過。目前我工作上每天都需要用到python。另外在一些課程平台上也有開課。因為這些課程一般同學應該都無法買,所以也沒啥打廣告的嫌疑。


Friday, April 16, 2021

關於大數據(1):容量

         今天來談談大資料。大數據這名稱有點魔幻,到底多大的資料才算是大資料?資料有多大跟我有什麼關係?今天要介紹的,是從一個學生的角度,來思考大資料要如何入門。


         網路上可以找到一些關於大資料的定義,這裡結錄一段基本概念:

「大數據(big data)」這一名詞是2008年由Infineta Systems公司的Haseeb Budhani提出。麥肯錫公司2011年對大數據有如下定義:大數據是其體量超出了傳統資料庫軟體工具的採集、存儲、管理和分析能力的數據。

大數據有5V特性,分別是Volume、Velocity、Variety、Value、Veracity。

容量(Volume):大數據量大,不僅量大而且增長速度快;

變化性(Velocity):數據流動性大,變化迅速;

種類(Variety):數據類型的多樣性;

價值(Value):價值是決定大數據應用的根本屬性,沒有價值就沒有大數據;

真實性(Veracity):要求數據準確,準確的數據才能反映真實的資訊。」


大數據有多大?這麼大!!

         由於篇幅比較大,今天先介紹關於資料容量的部分。也是我個人覺得重要性排名比較後的一部分。往下介紹之前,要說明的是大數據的出現,並不會影響這名詞出現前的分析方法或工具。現今大數據最大的跳戰,在於從不同的異種數據之間(例如圖像+語音+GPS+app操作習慣),挖掘出數據價值。

         先岔開一個話題。就我個人認知而言,大數據表現出來的是有價值的重點資訊,跟資料量多寡沒有直接關係。舉例來說:利用全國人口資料,能算出全國男女比例、年齡分佈等人口統計,這是大資料沒錯。

        而一家服裝公司累積了幾十年的客戶身材資料,能夠快速設計出各種服裝,這些累積的身材資料可能只有幾十個mb,一個小小的筆電用excel也能產出極高的商業價值。我個人認為這也是的大資料。

        除非是討論技術問題,就資料價值來說,將焦點放在資料量的“大小”,其實沒太大的實質意義。因此接下來的說明,都是站在你該“學習”什麼大數據技術的角度來了解什麼是大數據。

 

  • 容量(Volume):

        我們從最終數據使用者的角度出發,從一般人都孰悉的Excel開始,一步一步往數據源走,了解什麼是大數據。        

        容量是第一個遇到的問題。但在說明容量之前,還要叉出去一個話題。你有沒有過這樣的經驗,一個幾十萬筆的excel(csv)你用excel開不了,但在同一台電腦上裝上MySQL或是python這些工具,都能秒開這些資料。關鍵問題是excel不是為了這樣數量的資料設計的,但資料庫的應用程式就是專門為了這些資料量設計的,而這一塊是數據工具方面。

        容量的問題另一個核心問題是資料庫的設計。舉個簡單的例子,如果你的資料量每天都在增加,你可以設計成每天、每月存成一個檔案。資料查詢太慢,你可以改變將一些欄位的定義。例如在Excel中,你要查詢文字是很慢的,但查詢數字是很快的。如果在你的資料中,有些數字類型的欄位元例如收入、生日、股價的資料,就要改成數字格式。以上這些領域是數據結構的領域。

        接下來一個情境是,你需要讀入多個資料來源。例如你需要讀入財務部關於成本的數據,你需要業務部的銷售數據、你需要開發部提供的客戶在官網web、app上的行為數據、你還需要接入一些外部公司的資料例如客戶透過fb粉絲群的反應。這時候你需要中台部門幫你整合並管理這些資料介面,你只面對數據中台,不需要自己都去接這些數據源,也不用去管理不同團隊間的權限和數據庫驅動。這是中台部門的領域。

        這些不同的數據沒法直接提煉出你要的決策數據,你可以想像,面對這麼多數源(sheet),你要在excel中做出個樞紐分析表前,得先將這些資料來源根據一些規則合併成一張sheet,而這就是商業智慧(BI)部門在做的事。這些同事依據你給的規則,幫你做出自動產出、即時更新的分析層資料集市(Data Mart)以及分析圖表(大部分情況是他們提供分析工具讓你自己做報表)。

        再往上走,接下來資料量更大了,例如電信公司會存用戶上網時,是哪個基地台、用了多少用量。這時候涉及同一份庫表存在不同的物理硬碟或是伺服器上,你如果依照某些檔案存在某個物理磁片上的單機經驗,你的磁片很快就會爆而且磁碟空間的使用很沒效率。這領域是分散式存儲和分散式運算。

        再往上還有呢。現在業界面臨的一個問題是資料孤島的問題。你家客戶的數據跟我家客戶的數據是不相通的。在面對一些問題的時候往往需要相互合作。例如某個信用卡詐欺集團同時申請了多家銀行的信用卡,如何跨銀行間合作找出這些詐欺集團的行為特徵?如何偵測同一個pos機或是商家在短期間內出現多家銀行信用卡的刷卡消費?銀行間如何在保密和合作間找到解決方案?就算有加密你的客戶資料會不會被合作夥伴用一些驗算法找出你的客群畫像?目前這一塊領域還在發展中,有興趣的可以找一下聯邦學習(Federated Learning)?


Sunday, April 11, 2021

對於新手入手Python的一些建議

        最近這幾年python彷彿成了一門顯學。數據分析也pyhon,AI也python,大數據也python,爬蟲也python。彷彿python無所不能一樣。

        對於一些專業論壇來說,很多高手其實從大學或是高中就開始學程式語言,一些專業背景的例如Computer Science或是資訊管理科系,或甚至理工科系的畢業生,大多有些基礎或是已經投入在某些專業領域。因此對於沒程式基礎的小白來說,往往是一開始就讓人放棄的,讓小白想放棄的原因包括:

  • 沒全觀視角
  • 人工智慧、大數據、機器學習被濫用
  • debug
        以上說的這些問題,每個都可能讓新同學放棄學習python。因此建議在學習python之前。先仔細思考一下你學習python的目的,以及你在學習中會遇到的困難,還有你能取得到的資源。再決定你的學習路徑(包括一開始就放棄或選擇其他程式語言)。

Monday, June 24, 2019

關於隱私權

                 在2002年上映,由Tom Cruise主演關鍵報告(Minority Report) 是一部探討隱私權的電影。故事背景設定在2054年一個全面被監控,毫無隱私權、犯罪能被預知、罪犯能被事先逮捕的科幻世界,電影裡面對於隱私權的探討。
                關鍵報告讓我印象最深的並不是主角在逃亡時處處的科技監控 :進入服裝店時雲端數據庫立刻幫你挑選適合服裝與尺寸、城市各角落的監視器。而是對於你未來行為的預測,它監控的,是你的自由意志、你的未來行為。


                雖然在法律與哲學領域有很多關於隱私權的討論與案例,但這些專業人士的討論對於一般人而言是簡直是外星人的對話。隱私權對一般人是個很抽象的概念,陸續發生的隱私權洩漏事件也沒有一個完整的討論架構與比較,當討論某個單一隱私權相關案例時,每個都很重要每種情況都要防範,但如果我們整體討論並考量科技技術時,哪些情況對隱私權的侵犯更嚴重哪些情況相當輕微, 或許會有不同的角度與思維。
                在往下談論隱私權之前,先表明一下本篇的談論目的是在現有的科技環境之下,不同情況下的社會安全、生活便利與隱私權該如何均衡:這包括了路口的監視器、出入境時的指紋採集、留在網路時代的足跡、悠遊卡/一卡通、信用卡,甚至銀行存款
        一般看到對於隱私權的討論,著重在於探討那條線在哪,但是不同隱私權的侵害嚴重度與目前的科技發展卻很少討論。法律是法律、科技是科技,法律與科技似乎是兩個不相交的領域。特別是越來越常聽到所謂的IBM之後:人工智慧(AI)、大數據(Big Data)、機器學習(Machine Learning),數位科技的發展與隱私權的界線應該如何劃定?
           就法律上的定義來說嚴格定義,隱私權是任何一項你不想讓別人知道紀錄,包括電話號碼與通話紀錄、位置、銀行存款、醫療紀錄、上網紀錄等等都該保密,但這種加法的涵蓋方式並無法應付科技的發展。而在數據科學家的眼中,不同的數據類型,數據含金量、可串接性、涵蓋率、清洗方法等等方面,都有相當大的差異。有些數據可以直接挖掘出有價值的訊息,能直接進行商業、政治目的的應用,但有些你認為很重要的數據就算外流也無法應用。一般民眾對於隱私權的認知與應用上的價值顯然有著差異。
         或許你會認為任何一項關於隱私權的數據都不該外洩,但在實務上很多你認為的隱私數據事實上是不具探索價值,或者需要大量的加工。這裡並非是要否認數據的外洩或不當使用對於隱私權侵害,而是要瞭解哪些才是隱私權保護的核心工作在哪,以及如何在隱私權保護與科技帶來的便利中取得均衡,也才不會發生侵害隱私權最淺的科技時處處反抗,但卻深度擁抱侵害隱私權最嚴重的科技的奇特現象。

隱私權的層次
         我個人把隱私權分成三個層次:第一層是外顯層,第二層是隱藏層,第三層是意志層,這三個隱私權層次是以一個陌生人或是機構的角度來分析,如果以不同的角度來分析會有不同的分層方式,例如以朋友的角度來分析,婚姻、家庭、工作是已知道的,但你幾點幾分在哪就是隱藏層了。
  1. 外顯層:可以觀察到的個人行為:包括外表、今天穿著打扮。另外還有一個半外顯層:需要經過查詢詢問才能獲知的資訊,包括婚姻狀態、家庭狀態、工作、位置
  2. 隱藏層:通話記錄、上網記錄、金融交易記錄、財產、醫療記錄、消費及交友圈
  3. 意志層:包括你的政治立場、興趣、未來的旅遊計畫等。意志層與隱藏層最大的差別在意志層主要決定未來的行為,而隱藏層是已經發生的行為或屬性數據
                 在一些科幻電影中,常常會有讀取對方意志的情節。而在現實生活中,科技技術可以藉由你綜合你地各項資訊來進行判讀,來監控你意志層、影響你未來的意志與決策。例如你的交友群、行事曆、通話記錄、對話內容、發表的言論等等,監控意志層的挑戰在於跨數據來源的整合以及清理,這部分是數據科學家每天的主要工作,有機會會再做個簡單的介紹。
              透過機器學習的預測,這些跨平台的數據能夠構件出預測你行為的模型,例如你喜歡吃的料理、你最近是不是想去旅遊等等、需要哪些理財或借貸產品,蒐集到的資料類別越多,對你行為的預測也就越精準。一個大家比較孰悉的例子是所謂的三寶,當你用性別與年齡兩個維度的去預測,準確度會比用一個維度還準確。


  • 技術發展與限制
         第一個核心點是技術上的限制。目前常聽到的技術名詞人工智慧(AI)、大數據(Big Data)、機器學習(Machine Learning)。這些很炫但一般人其實很陌生的名詞是很容易被誤解的,很容易片段的印象被拼湊在一起而讓你有科技萬能的錯誤印象。以大家比較關心的監視器為例,快速通關的人臉識別+路上到處都有的監視器+關於大陸公安局在路上識別的報導=路上的監視器能識別每個路人。這樣的想像在技術上是可能的,但在實務上有不少的挑戰。讓我們先看看這次中美貿易大戰中,被美國點名的海康衛視的公安監控平台架構。

     監視器是否能人臉識別,並非只有監視器一項設備而已。要達到這樣大面積的人臉識別有許多條件,首先是要有一個覆蓋率完整的人臉識別數據庫,中國有這樣的社會背景與數據建設條件,但在中國以外的其他地區與國家要達成這樣高完成度的人臉識別數據庫都有不同的困難。起次是要有一個集中的運算平台,能夠滿足各個端點監視器的運算需求,每個平台單獨運作不僅浪費資源,也降低人臉辨識的成功率。
                比較常被忽略的因素是是適用場景。一個城市裡的監視器是十萬、百萬等級的數量,監視器的類型與數量以及影像質量的增長,遠超過核心系統的擴建速度且無法滿足所有監視器的辨識需求,因此連線監視器的設置需要搭配場景,例如車站、重要路口等行人流量大的地點。至於社區裡的監視器只是留存目的,以複寫的方式循環紀錄,等需要查詢時才從存檔裡面調出錄影並以人眼方式檢視。另外還有測速器、路況監視器也是類視的使用狀況。
                因此,政府如果真要使用路口的監視器進行人臉識別,是可以從預算、系統供應商、硬體設備、對接的人臉別數據庫、監視器等級及架設地點看監控的目的及範圍。而非架上監視器就能進行大規模的人臉識別。
 


  • 技術上的限制
              在以上這樣隱私權分類下,更要關心的是不同類別的隱私權要如何保護,這結合了對隱私權的分類、數位科技的發展程度、實際開發的限制等等。
              首先一個原則是數據彙整上的限制:單一數據源的洩漏對隱私權造成的傷害並沒有想像的大。當然,這樣的評論是得加上類別的嚴重度,例如醫院洩漏你的醫療紀錄會比電信公司洩漏你的通話記錄嚴重。路上的監視器對隱私權的損害並不大,但如果監視器加上人臉識別數據庫進行即時識別,對隱私權的侵害是指數方式的增長,因此防治的重點應該是避免路上這些監視器與其他人臉識別技術或數據庫的連接,或是監控政府對於生物特徵的蒐集行為,而不是這些監視器有多少。
                 數據挖掘(Data Mining)是從數據中探勘出有用資料的一門計算機科學,在大數據時代來臨之前,數據是有針對性的,例如你填寫的貸款申請資料。但在大數據時代來臨之後,數據來自不同的數據源而且沒有針對性,例如你在google上搜尋了一個關鍵字之後, google演算法根據你的歷史行為推薦不同的廣告。大數據時代下的數據探勘最大的差異之一,是數據裡的含金量大幅降低。以前或許1G的原始數據就能產出一個預測力不錯的模型,現在可能1T才勉強能夠產出預測力還行的模型,這還不包括語音、照片、影片這些含金量更低的多媒體數據。語音、照片、影片這些多媒體數據如果不能即時串接到ID數據庫(人臉識別數據庫、音頻識別數據庫)轉換成具有意義的數據(例如身份證字號A122xxxxxxxx在2017年2月2日上午11點15分39秒敦化南忠孝東路路口闖紅燈),這些大數據就是個佔量驚人的垃圾數據了,或許你會擔心數年之後政府蒐集到了你的生物特徵後,再去回掃這些積累的數據。關於這點回想一下你會整理硬碟裡幾年前的照片和影片嗎?商業上的數據回掃更加困難,光歷史數據分別存在哪個硬碟裡都得找半天了,實務上是很難大規模的回掃歷史數據。
  在大數據的環境下,數據越來越多元,對數據科學家來說產生了一個新問題:數據孤島。也就是多樣性的數據並無法相互鏈結。這呈現在幾個方面:法令遵循的要求、數據缺失率的加乘、各種數據的鍵值(Key)不一、各數據源的格式不統一、各數據源無法對接。除了法令遵循的要求之外,數據缺失率是最大問題,假設有辦法蒐集到中華電信的通話紀錄(市佔率35%),出入境管理局辦理快速通關留存臉部識別及指紋的人數約60萬人(約成年人口6%),兩種數據一匹配只剩下2%,這樣的數據覆蓋率在實務上是不具使用價值的。



   數據孤島對於數據科學家的惡夢,但對於隱私權的保護來說卻是福音。在檢視各種有隱私權隱憂數據蒐集方式時,我們不妨將現數據上的對接限制納入考慮。數據只要被隔離,就能有限度的控制對隱私權的侵害。
               目前國內並沒有一個完整的人臉數據庫,人臉辨識實際上對隱私權的侵犯相對而言是比較輕微的,對人臉辨識的恐懼主要是來自於心理上,這並不是說就個人而言,路上的監視器並不會有隱私權方面的隱憂。而是從政府的角度來說,路上的監視器連結上人臉識別數據庫的成本和效益並不值得投入,而是應該將預算投入到效益明顯的場景上如機場的快速通關或是上下班的打卡。


  • 你所忽視的
                 在真實世界中,對隱私權侵犯較深的反倒是很多人都知道但都忽視的社群軟體例如google+、臉書。臉書有你的性別、年齡、婚姻狀態、電話、照片、打卡地點、興趣、朋友圈、通話、甚至評論的主題與內容。就數據的蒐集和分析來說,這是最完善的數據市集,不須打通各種不同的數據庫、沒有無止盡的數據清洗、長達數年的高頻率歷史使用數據,對數據探勘的數據科學家來說,臉書根本就是個數據金山,加上臉書的營業模式是透過利用隱私權精準發布廣告,臉書關於侵犯隱私權的新聞也層出不窮。



               從上述數據分析的實際挑戰來說,我們可以將隱私權分成深度、廣度、嚴重度三個維度來分析。路上的監視器分布雖廣,但能挖掘出的信息有限。金融信息可以挖掘出較多的隱私信息,但各個金融機構都有嚴密的資安系統,無法擴大觸及面。雖然我使用的是Android,但從業經驗讓我不得不佩服ios系統對於數據保密的嚴謹。Google產品眾多能蒐集到的數據廣泛,也曾發生侵犯隱私權的案例,但基本上在企業文化與商業性質的主導下,對於隱私權的侵害程度還不算嚴重。相對而言,facebook有動機有技術有數據,才是你我最該小心的社交工具。


         回歸到一開始的主題,面對I、B、M時代的來臨,在不同層次的侵犯隱私權形式中,我們更該關心關於意志層的隱私權侵犯:你是怎樣的一個人、你對某些主題的意見、你對某些行為的反應等。應該思考的是如何防止 你的動態被蒐集、你的思想被預測的、你的行為被操控。這並不代表在一些社交工具上要限制你的言論,而是要慎選你發表意見的平台,儘量選擇留存數據少、社交關聯度低的平台或工具。套句最近最流行的一句話:不要讓你的感性壓過理性。


註:
使用"數據"一詞而非"資料",主要是"資料"一詞包含了數位化的資料、紙本、ppt等。與兩岸使用習慣無關。