想讓機器學習與商業結合,最重要的是什麼?

2020-12-17 讀芯術

全文共6008字,預計學習時長12分鐘

圖片來源:IBM

純學術性地建立機器學習模型與為企業提供端對端的數據科學解決方案(如生產製造、金融服務、零售、娛樂、醫療保健)之間存在著巨大差異。

在機器學習方面,企業最常面臨的問題是什麼呢?除了培養機器學習模型,我們還能做什麼?如何準備數據?如何擴大數據集?為什麼特徵工程如此關鍵?如何將模型運用到生產實踐,成為完全可行的系統呢中?如果能從開源軟體中獲取所有的數據科學工具,數據科學平臺還有存在的意義嗎?

本文將回答以上部分問題,並揭示目前機器學習遇到的挑戰和困難,進一步通過具體行業案例提出最佳解決方案。

機器學習不僅僅是培養模型

不少數據科學家對機器學習還存在普遍誤解。

「假設你拿到一組有某種特徵的數據集,並需要推測其中某個變量,你會怎麼做?」

很多數據科學家都會做如下回答:

「我會把數據集拆分成培養/測試兩部分,運行LogisticRegression, Random Forest, SVM, Deep Learning, XGBoost程序……然後計算精確度、查全率、F1分數……最終挑選出最佳模型。」

但是,還有些問題被忽略了:

「這個過程中你有看過數據本身嗎?要是你遺漏了一些數值怎麼辦?如果你拿到錯誤的數值或是不良數據呢?你怎麼設置分類變量?你是怎麼做特徵工程的?」

本文中將介紹成功創建端對端機器學習系統的七個必要步驟,包括數據收集、數據監管、數據探查、特徵抽取、模型培養、估值和部署。

給我數據!

作為數據科學家,主要資源很明顯是數據。但有時數據採集本身也有困難。一個數據科學團隊可能會花費幾周甚至幾個月的時間來獲取合適的數據集。其中的困難包括:

獲取途徑:大部門企業數據都很敏感,尤其是政府、醫療保健和金融領域的相關數據。要共享數據集,籤署保密協議是常規流程。

數據分散:數據在組織內不同部門間散布是很常見的。要拿到整體數據,需要各部門的同意。

專業指導:能獲取數據往往還不夠。由於獲取的數據太多,需要一位領域專家指導團隊從龐大的資料庫中挑選出合適的數據集。有時專家的缺席也會成為項目瓶頸,因為核心企業運營已使他們應接不暇。

隱私:模糊處理和匿名操作已經成為兩項獨立的研究領域,在處理敏感數據時這二者尤為重要。

標記:通常了解實際情況或標記會很有幫助,因為這讓團隊能夠應用很多可監控的學習算法。然而,有時標記數據成本高昂,或由於法律限制團隊無法得到標記。在這些情況下,可以應用數據聚類等不可監控的方案。

數據生成器:如無法獲得數據或標記,可以去模擬它們。了解數據結構的相關信息會對使用數據生成器很有幫助,除此以外,還可以了解數值變數的可能性分布和名義變量的類別分布。如果數據結構比較散亂,可藉助湯不熱(Tumblr)平臺,其上有許多標記圖像。此外,推特(Twitter)可提供大量自由文本,卡歌網(Kaggle)則擁有特定領域和行業相關的數據集和解決方案。

大數據並不大

近十年,大數據供應商賣力宣傳,強調對大數據規模和功能的需求,掀起了一股大數據熱潮。也因此,「大數據並不大」這一觀點引發了更大的爭議。然而,我們需要明確區分原始數據(包括對所有對當前問題無幫助的數據)和特徵集(機器學習算法的輸入矩陣)。將原始數據處理成特徵集的過程稱為數據處理,包含以下步驟:

1. 丟棄無效/不完整/髒數據。根據我們的經驗,此類數據可佔所有數據的一半。

2. 聚合一個或多個數據集,包括數據連接和組類聚合等操作。

3. 特徵選取/抽除。比如,除去唯一性標識等可能無關的特徵,並應用其它降維技術,如主成分分析。

4. 使用稀疏數據表示法或功能散列法,以減少存在許多零值數據集的內存佔用。

完成數據準備後,不難發現最終的特徵集——即機器學習模型的輸入內容——比初始的小很多;另一種常見情況是R或scikit-learn等內存框架足以培養模型。若特徵集規模仍十分龐大,可以使用ApacheSpark等大數據工具,儘管其算法選擇有限。

髒數據!

髒數據很常見

人們當然希望能學習一些尚不了解的東西,但這一點非常重要:髒數據很常見。在企業合作中,很多客戶經常自豪於他們的數據湖泊建設,比如數據湖泊有多壯觀、他們可從中得出多少洞見等。因此,作為數據科學家,以下就是我們腦海中的景象:

但是,當客戶拿出實際數據時,情況更像是這樣:

在這種情況下,Apache Spark等大規模框架就顯得尤為重要,因為所有的數據監管轉化過程都需要在全部原始數據上完成。以下是幾個典型的監管案例:

異常檢測:負數年齡、浮點郵編和零值信用評分等都是無效數據,不修正這些數值會在培養模型時產生深刻的偏見。

缺失/錯誤數值填充:顯然,處理錯誤/缺失數值最常用的方法就是丟棄它們。另一個選擇是填充。比如,用相應特徵的平均數、中位數或眾數來代替缺失/錯誤數值。還有一種方法是插值,如建構模型來預測缺失數值的情況下的特徵。另外,填充中也可以運用領域知識。比方說處理病人數據時,有一項特徵是推斷病人是否患有癌症。如果缺失此類信息,可以參考其問診數據,以確定此病人是否曾看過腫瘤科醫生。

虛擬編碼和功能散列:這兩種方法能很有效地把類別數據轉換成數值,尤其在基於係數的算法中。比方說,有一項特徵是州名,顯示美國的各州名稱(如FL,CA,AZ)。將FL編碼為1,CA編碼為2,AZ編碼為3,會顯示出秩序感和重量級。這意味著AZ會比FL面積更大,而CA的面積是FL的兩倍大。一位獨熱編碼——也稱虛擬編碼——提供的解決方案是將類別欄映射到多個雙欄中,其中一欄為類別數值。

歸一化:若存在不同等級的特徵,係數相關的算法就會產生偏見。比方說,特徵年齡在[0,100]範圍內用年表示,然而工資在[0,100,000]範圍內用美元表示。優化算法可能僅僅因為工資的絕對數量級更大而更側重工資。因此,更推薦常態化算法以及其他常用方法,如Z值推測、標準化(如果數據正常)及min-max特徵歸一化。

分箱:將實值欄映射到不同類別極為有效,如將一個回歸問題轉化為分類問題。比方說,你想推測航班進港延誤的分鐘數。一個選擇是推測該航班是否會提前、準時抵達或延誤,並確定各類別的數值範圍。

特徵工程無處不在

總而言之,特徵就是機器學習算法需要學習的特點。正如人們設想的那樣,幹擾或無關數據會影響模型的質量,因此掌握好的特徵就十分關鍵。以下是幾個特徵工程中可使用的策略:

確定預測內容。每一個實例代表什麼?顧客?交易?病人?還是票據?確保特徵集的每一行都對應一個實例。

避免唯一性標識。它們不僅在大多數情況下不起作用,還有可能導致嚴重的過度擬合,尤其是在使用XGBoost等算法時。

運用領域知識來導出幫助衡量成功/失敗的新特徵。通過去醫院的次數可以推斷醫患風險;上月跨國交易的總量可推斷詐騙的可能性;申請貸款數額與年收入的比例可推斷信用風險。

運用自然語言處理技術從散亂自由文本中導出特徵。比如LDA,TF-IDF,word2vec和doc2vec。

若存在大量特徵,可使用降維方法,如主成分分析和t-分布領域嵌入算法。

異常檢測無處不在

圖片來源:feature. fm.

如果要在企業機器學習的應用案例中挑選出最常見的一個,那就是異常檢測。無論是否研究詐騙偵查、生產測試、客戶流失、醫患風險、客戶失信抑或是系統崩潰預測,面臨的問題總是:我們能否大海撈針?這就引出了另一個與非平衡數據集有關的話題。

以下是幾個用於異常檢測的常見算法:

1. 自動編碼器

2. 一類分類算法,如單類支持向量機。

3. 信賴區間

4. 聚類

5. 運用過採樣和欠採樣法分類

6. 非平衡數據很常見

非平衡數據

比方說,你有一組數據集,標記有信用卡交易信息。交易中的0.1%為不實信息,而其餘99.9%均為正常交易。如果要創建一個從無虛假交易的模型,會發生什麼呢?這個模型在99.9%的情況下都會給出正確答案,所以其精確度為99.9%。這個常見的精確度謬誤可以通過考慮不同的度量標準來避免,如精準度、查全率。這些通過真陽性(TP,true positives)、真陰性(TN,true negatives)、假陽性(FP,false positives)、假陰性(FN,false negatives)等術語來表示:

真陽性 = 全部實例正確推斷為正

真陰性 = 全部實例正確推斷為負

假陽性 = 全部實例錯誤推斷為正

假陰性 = 全部實例錯誤推斷為負

在一個異常檢測的典型案例中,我們試圖將假陰性最小化——比如,忽略一筆虛假交易,忽略一塊有問題晶片,或將一個病人視為健康的——同時不會導致大量假陽性實例。

精準度 = 真陽性/(真陽性+假陽性)

查全率 = 真陽性/(真陽性+假陰性)

要注意精準度不利於假陽性,而查全率不利於假陰性。一個從不推測出虛假信息的模型查全率為零,而精準度則未知。相反,一個總是推測出虛假信息的模型則有著100%的查全率和極低的精準度——這是由於大量假陽性實例的存在。

非常不推薦在異常檢測中使用受試者工作特徵曲線(FPR)。因為假陽性率——FPR的基礎——很大程度上是基於數據集中的陰性實例數量(如假陽性+真陰性),使得在假陽性實例數量龐大的情況下FPR仍然很小。

受試者工作特徵曲線 = 假陽性/(假陽性+真陰性)

相反,錯誤發現率(FDR)有助於更好理解假陽性實例對於異常檢測模型的影響:

錯誤發現率 = 1 – 精準度 = 假陽性/(真陽性+假陽性)

別預測了,直接解釋原因!

一些項目並不旨在創建一個實時預測模型,而是解釋假設或分析哪些因素可以解釋特定行為,因為大多數機器學習算法是基於相關性,而不是因果性。以下是一些例子:

· 什麼因素導致一位病人患病風險增加?

· 哪些藥品對血檢結果影響最大?

· 哪些保險規劃參數值可使利益最大化?

· 失信客戶有什麼特點?

· 流失客戶的簡況是什麼?

處理此類問題的一個可行辦法是計算特徵重要度,從Random Forests, Decision Trees和XGBoot等算法中可以得到此數據。另外,LIME或SHAP等算法則有助於解釋模型和預測,即使其源於神經網絡或其它「黑盒」模型。

調整超參數

機器學習算法有參數和超參數兩類參數。其不同之處在於:前者直接由算法進行估測——如,回歸的係數或神經網絡的權值——而後者則並非如此,須由用戶手動設置——如,某片森林的樹木總數,神經網絡的正則化方法,或支持向量機的內核功能。

為機器學習模型設置正確的超參數值十分重要。舉例而言,一個支持向量機的線性內核不能對無法線性分離的數據進行分類。再比如,如果最大深度和分裂數量設置得過高,一個樹型分類器可能出現過度擬合的情況;而最大特徵數量設置過低,其可能無法充分擬合。

為超參數找到最優數值是一個極為複雜的優化問題。以下是幾點建議:

1. 了解超參數的優先項。一片森林中,最相關的參數可能是樹木的數量和最大深度。然而,對於深度學習而言,優先項可能是學習率和層次數量。

2. 運用搜索技巧:gridsearch和random search。後者優先。

3. 運用交叉驗證:設置一個單獨測試組,將其餘數據分為k層並將其迭代k次,每一層都進行驗證(如,調整超參數),其餘的進行學習培養。最終,對全部層級進行平均質量度量標準的計算。

深度學習:萬金油?

過去幾年,深度學習一直是學術研究和行業發展的聚焦點。TensorFlow, Keras和Caffe等框架使複雜的神經網絡通過高層級的應用程式接口(API)得以快速運用。應用程式不計其數,包括計算機視覺,聊天機器人,無人駕駛汽車,機器翻譯,甚至遊戲——同時打敗了全世界最頂級的圍棋手和西洋棋計算機玩家!

深度學習最主要的前提之一是數據增加後持續學習的能力,而這在大數據時代尤為有效(見下圖)。這種持續學習的能力與近來硬體方面的發展(如圖形處理器)互相結合,使大型深度學習工作的執行成為可能。而從前,由於資源限制,這是明令禁止的。

圖片來源:machinelearningmastery.com

那麼,這是否意味著深度學習是處理所有機器學習問題的萬金油呢?並不是。原因如下:

簡潔性

神經網絡模型的結果十分依賴其結構以及超參數。大多數情況下,要正確調整模型,你需要有網絡建構方面專業知識。另外,在此方面試錯的步驟也非常重要。

可解釋性

如上文提到,相當一部分實際案例不僅需要做出預測,還需要解釋預測背後的原因:為什麼貸款申請被拒絕?為什麼保險政策價格提高?儘管基於樹型結構和基於係數的算法可以解釋,神經網絡卻不行。

質量

從經驗來看,對於大多數結構化的數據集,神經網絡模型的質量並不一定比RandomForests和XGBoot的模型質量更好。當涉及散亂數據(如圖像、文本、音頻)時,深度學習的優勢更為突出。底線是:不要用獵槍去打蒼蠅。RandomForests和XGBoot等機器學習算法已經足以處理大多數結構化的可監測的問題,而這些算法也更容易調整、運用和解釋。深度學習在散亂數據問題和強化學習方面的作用不言而喻。

別洩露數據

處理一個預測航班到達時間延誤的項目時,如果使用數據集裡所有可用的特徵時,模型的精確度可以達到99%。不過,希望你會意識到,你可能用啟程延誤時間來推測進港延誤時間。這是數據洩露的典型案例。如果我們使用了任何預測時不可用或未知的特徵,就會造成數據洩露。大家要當心!

圖片來源:the Kini group.

開源軟體裡能找到一切資源,平臺還有什麼用處?

構建機器學習模型從未像今天這樣簡單。幾行R語言或Python語言代碼足以建構一個模型,在網上甚至還能找到大量培養複雜神經網絡的資源和課程。如今,Apache Spark十分有助於數據準備,它甚至能對大型數據集進行歸一處理。另外,docker和plumber等工具通過超文本傳輸協議(HTTP)簡化了機器學習模型的部署。似乎完全依靠開源平臺資源,就能構建一個端到端的機器學習系統。

就概念驗證而言,可能的確是這樣。一個大學生完全可以依靠開放原始碼完成畢業論文。但於企業而言,事情就沒有這麼簡單了。

畢竟開源軟體也存在不少缺陷。以下是幾項企業選擇大數據科學平臺的原因:

a. 開放資源整合:幾分鐘內就能開啟運行,支持多種環境,版本更新信息透明。

b. 團隊協作:易於共享數據集、數據連結、代碼、模型、環境和部署。

c. 管理和安全:不僅能管理數據,還可以對所有分析資產進行管理。

d. 模型管理、部署和再陪養

e. 模型偏見:檢測並修正有性別或年齡偏見的模型。

f. 輔助的數據管理:通過視覺工具來解決數據科學中最困難的問題。

g. 圖形處理器:對深度學習框架進行快速部署和配置,以促成其最優表現,如TensorFlow。

h. 無代碼建模:專為不會編碼但想建構視覺模型的統計學家、項目專家以及管理人員設計。

留言 點讚 關注

我們一起分享AI學習與發展的乾貨

歡迎關注全平臺AI垂類自媒體 「讀芯術」

相關焦點

  • 什麼是機器學習?為什麼它如此重要?
    迭代在機器學習中是非常重要的,由於它的存在,模型在遇到新的數據時,就可以獨立地適應數據。它們可以從先前產生的可靠計算,重複的決定和結果中進行學習。機器學習並不是一個全新的學科-而是獲得新動力的學科。由於新型計算技術的產生,如今的機器學習與以往大不相同。儘管很多機器學習算法已經存在了很長時間,但自動將複雜的數學計算應用到大數據的能力(一個又一個,越來越快)是最新的進展。
  • 什麼是機器學習?看完就明白了
    機器學習分類我們了解了機器學習的概念,通過建立模型進行自我學習,那麼學習方法有哪些呢?除此之外,無監督學習也適用於降維,無監督學習比監督學習好處是數據不需要人工打標記,數據獲取成本低。(3)半監督學習半監督學習是監督學習和無監督學習相互結合的一種學習方法,通過半監督學習的方法可以實現分類、回歸、聚類的結合使用。
  • 機器學習應用的未來是什麼?微型化
    這對機器學習意味著什麼? 如果你接受上面的所有觀點,那麼很明顯,有一個巨大的尚未開發的市場等待著用正確的技術來開啟。這就是機器學習,尤其是深度學習所填補的空白。 深度學習在已有的微控制器上是計算密集且可用的 在深度學習實現方面,它們幾乎都是受計算限制的。這一點很重要,因為我所研究的其他問題幾乎都是受到訪問大量內存的速度限制。
  • 盤點52個全球人工智慧和機器學習重要會議
    不管你是想時刻緊跟潮流,還是僅僅希望稍微了解一下人工智慧,全世界每時每刻總有一個大會在等著你(比如後天即將開幕的 NIPS 2017)。本文將向你簡要介紹 50 餘場著名全球人工智慧大會。Notes:本文盤點未收錄 CVPR、ACL、ICLR 和 EMNLP 等計算機視覺\自然語言處理細分領域的重要大會。1.
  • 雲上機器學習的「引力」
    人工智慧商業化進程逐步加快,以機器學習為代表的技術快速向各行各業滲透,而雲上的機器學習服務正成為推動人工智慧商業化落地的重要動力之一。在2020年的亞馬遜re:Invent在線峰會上,AWS全球機器學習副總裁Swami Sivasubramanian全面展示了AWS關於機器學習的願景。
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    機器之心整理參與:機器之心編輯部機器學習日益廣為人知,越來越多的計算機科學家和工程師投身其中。不幸的是,理論、算法、應用、論文、書籍、視頻等信息如此之多,很容易讓初學者迷失其中,不清楚如何才能提升技能。本文作者依據自身經驗給出了一套快速上手的可行方法及學習資源的分類匯總,機器之心在其基礎上做了增益,希望對讀者有所幫助。
  • 用Python 做機器學習不得不收藏的重要庫
    Shubhi Asthana 翻譯 | 就2 校對 | 就2 整理 | 菠蘿妹 原文連結: https://medium.freecodecamp.org/essential-libraries-for-machine-learning-in-python-82a9ada57aeb 用 Python 做機器學習不得不收藏的重要庫
  • 人工智慧之機器學習ML 學習筆記乾貨
    我們經常看到這幾個熱詞: 人工智慧( ArtificialIntelligence )、機器學習( MachineLearning )和深度學習 (DeepLearning) ,但是它們之間究竟有什麼 區別和聯繫呢?
  • 微信的機器學習與人工智慧應用實踐
    談起人工智慧,大家首先想到的是圖像識別、語音識別、機器翻譯、機器人這些技術,然而人工智慧所涉及的應用場景和商業價值卻遠不止此。在日常的經營和管理中,任何一個企業都會維護客戶關係,都有銷售數據需要分析,都會在生產,銷售和運營的各個環節中面對不同的決策問題,新一代的商業智能技術就是利用現在飛速發展的機器學習和數據分析技術對企業商業化過程中面臨的各種問題給出自動化的智能解決方案,從而驅動業務快速增長。
  • 大學生能力提升:什麼是機器學習?
    機器學習是研究怎樣使用計算機模擬或實現人類學習活動的科學,是人工智慧中最具智能特徵,最前沿的研究領域之一。自 20世紀80年代以來,機器學習作為實現人工智慧的途徑,在人工智慧界引起了廣泛的興趣,特別是近十幾年來,機器學習領域的研究工作發展很快,它已成為人工智慧的重要課題之一。機器學習不僅在基於知識的系統中得到應用,而且在自然語言理解、非單調推理、機器視覺、模式識別等許多領域也得到了廣泛應用。
  • 如何自學機器學習?
    https://www.bilibili.com/video/av10590361https://www.bilibili.com/video/av9770302如果想進一步了解機器學習的最新進展,可以看https://www.bilibili.com/video/av46971639我真得真得非常喜歡他講的課,同時我認為你看完這些課之後會對機器學習(主要是深度學習部分,對,他幾乎不怎麼講統計學習
  • 商業嗅覺、商業悟性、商業感,Business sense到底是什麼?
    也許你都沒明白為什麼會失敗,對於面試官口中的business sense也是似懂非懂...如果你告訴我,我的英文表達不好,我可以提升英語水平;如果你告訴我,我的技術基本功不紮實,我可以回去加以訓練...可是,business sense看不見、摸不著,面試官究竟想說什麼?而我又應該如何提升呢?
  • 深度學習應用於機器翻譯的魔力
    在嘗試了所有可能的句子之後,我們將選擇具有最可能的塊翻譯的句子,同時也是與真實英語句子最相似的句子。我們的最終翻譯將是「我想去最漂亮的海灘。」不錯!他們的深度學習模型採用並行語料庫,並使用它來學習如何在這兩種語言之間進行翻譯而無需任何人為幹預。兩個重要的想法使這成為可能- 反覆出現的神經網絡和編碼。通過巧妙地結合這兩個想法,我們可以建立一個自學翻譯系統。遞歸神經網絡快速回顧一下。
  • Quora 在 2017 年是如何運用機器學習的
    早在 2015 年,我們的工程副總 Xavier Amatriain 就在 Quora 上寫過一個關於我們如何使用機器學習的最佳回答:《2015 年 Quora 是如何使用機器學習的?》此後,機器學習在 Quora 上的使用大量增多。我們不僅對現有的機器學習應用,在更大更好的模型上研究得更深遠,而且也擴大了我們使用機器學習的領域集合。
  • 統計學家範劍青:機器是怎麼學習金融的?
    在範劍青看來,人工智慧是機器學習的平方,讓機器自動學習機器算法、是機器學習的理想境界。而大數據賦能AI,從大數據相關的科學挑戰衍生的新興科學即為數據科學,他認為數據科學以應用為背景,其目的是想把大數據解決成智慧數據。 他指出,大數據=系統+分析+應用,機器學習=統計+優化+實現環境。
  • 對於孩子們的學習來說,最重要的是什麼?
    對於孩子們學習來說,第一是興趣,第二是興趣,第三還是興趣。 當孩子們興味盎然地投入到學習中去時,學習就變成了一種精神需要。但轉念一想,不對,忍不住繼續問道: &34; &34; 父親的話從此深印在小鈴木的腦海裡,他按照父親的教導,在功課上花的時間並不多。學習成績中等。而讀過的課外書是全班同學的十幾倍,從中體驗到學習的愉悅。
  • 「網際網路+機器翻譯」時代,繼續學習英語的目的是什麼?
    「網際網路+機器翻譯」時代,我們繼續學習英語的目的是什麼?我們從小學「學」英語的第一天開始,就在「使用」中文學英語,或者說,「學」英語無非就是為了「懂得」英語「中文什麼意思」。換句話說,沒有中文,我們就根本「不懂」那句英語「什麼意思」。可是,我們別忘了,現在是「網際網路+」時代,「網際網路+」時代,有著強大的英譯漢翻譯機器,如「百度翻譯」,如果你僅僅是「想知道」那句英語的「中文是什麼?」,你根本不需要「懂」英語,直接複製粘貼,一切「不懂」的英語通通搞掂。因此,我們還需要用中文學英語嗎?
  • 機器學習提升嵌入式視覺應用
    在目前的嵌入式視覺領域中,最熱門的話題之一就是機器學習(machine learning)。
  • 機器喵大作戰 | 解剖人工智慧、機器學習和深度學習
    人工智慧的概念,起源於1950年代,包含多個分支,比如專家系統、進化計算、模糊邏輯、推薦系統,也包括最重要的分支:機器學習。說白了,機器學習是實現人工智慧的方法之一。通過獎懲來進行強化,這就是「強化學習」。▌深度學習接下來,輪到了機器學習領域最重要的方法:深度學習。
  • 機器翻譯、詞典與英語學習
    2) 機器翻譯也許會替代一部分人工翻譯,但不能因為機器翻譯的發展而停止語言學習,因為機器翻譯尚不能嵌入在我們的大腦中,我們必須要通過長時間刻苦學習才能掌握一門語言。3) 機器翻譯能夠幫助我們更好得學習語言,但也可能會影響我們的語言學習質量。4) 要想真正掌握一門語言,必須要查詞典,了解文字背後更為豐富的知識內涵。