机器学习实践应用
內(nèi)容簡介
機器學(xué)習(xí)是一門多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計學(xué)、逼近論、凸分析、算法復(fù)雜度等多門學(xué)科,專門研究計算機怎樣模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為。機器學(xué)習(xí)是人工智能的核心,是使計算機具有 智能的根本途徑。
本書通過對機器學(xué)習(xí)的背景知識、算法流程、相關(guān)工具、實踐案例以及知識圖譜等內(nèi)容的講解,全面介紹了機器學(xué)習(xí)的理論基礎(chǔ)和實踐應(yīng)用。書中涉及機器學(xué)習(xí)領(lǐng)域的多個典型算法,并詳細給出了機器學(xué)習(xí)的算法流程。
本書適合任何有一定數(shù)據(jù)功底和編程基礎(chǔ)的讀者閱讀。通過閱讀本書,讀者不僅可以了解機器學(xué)習(xí)的理論基礎(chǔ),也可以參照一些典型的應(yīng)用案例拓展自己的專業(yè)技能。同時,本書也適合計算機相關(guān)專業(yè)的學(xué)生以及對人工智能和機器學(xué)習(xí)感興趣的讀者閱讀。
通過閱讀本書,你將了解到:
- 機器學(xué)習(xí)全流程的串聯(lián)方式,包括數(shù)據(jù)預(yù)處理、特征工程、算法、模型評估等;
- 最常用的機器學(xué)習(xí)算法,包括邏輯回歸、隨機森林、支持向量機、KMEANS、DBSCAN、K 近鄰、馬爾科夫決策、LDA、標簽傳播等;
- 機器學(xué)習(xí)算法在實際業(yè)務(wù)中的應(yīng)用,涉及金融、醫(yī)療、新聞、電商等諸多領(lǐng)域;
- 機器學(xué)習(xí)的常用工具:R、Spark-MLib、TensorFlow、PAI 等;
- 時下最熱門的技術(shù)領(lǐng)域:深度學(xué)習(xí)、知識圖譜等。
作者簡介
李博,花名“傲海”。目前任阿里云數(shù)據(jù)產(chǎn)品經(jīng)理,主要負責(zé)機器學(xué)習(xí)平臺的產(chǎn)品化建設(shè)以及對外業(yè)務(wù)應(yīng)用。本科、碩士畢業(yè)于北京郵電大學(xué),曾就職于索尼和華為(實習(xí)),從事數(shù)據(jù)相關(guān)產(chǎn)品的開發(fā)。作為 CSDN 博客專家、云棲社區(qū)博客專家,長期分享 IT 技術(shù)相關(guān)文章,內(nèi)容涉及機器學(xué)習(xí)算法、Android 應(yīng)用及源碼開發(fā)等領(lǐng)域。一直活躍于開發(fā)者社區(qū),主導(dǎo)開發(fā)了多個 GitHub 百星開源項目,還開發(fā)并上線了多款手機 App。
本書內(nèi)容
推薦序
近年來,在 IT 圈大家談?wù)撟疃嗟木褪侨斯ぶ悄?。AlphaGo 與圍棋選手的人機大戰(zhàn)更是讓我們領(lǐng)略到人工智能技術(shù)巨大潛力的同時,又將人工智能推向了一個新的制高點。
人工智能的發(fā)展得益于云計算和大數(shù)據(jù)技術(shù)的成熟與普及。和人工智能相關(guān)的還有兩個核心詞匯——機器學(xué)習(xí)和深度學(xué)習(xí)。這三者有著什么樣的關(guān)系?所謂人工智能,通俗地講是指由人工制造出來的系統(tǒng)所表現(xiàn)出來的智能。人工智能研究的核心問題包括推理、知識、交流、感知、移動和操作物體的能力。而機器學(xué)習(xí)是人工智能的一個分支,很多時候機器學(xué)習(xí)幾乎成為人工智能的代名詞。機器學(xué)習(xí)簡單來講就是通過算法,使機器能從大量歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,從而對新的樣本做出智能識別或?qū)ξ磥碜鲱A(yù)測。深度學(xué)習(xí)是機器學(xué)習(xí)的一個新領(lǐng)域。之所以稱為“深度”,是因為前面說的機器學(xué)習(xí)是淺層的學(xué)習(xí),主要基于概率統(tǒng)計、矩陣或圖模型而得出的分析結(jié)論。深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,它基于神經(jīng)網(wǎng)絡(luò)框架,通過模擬人腦學(xué)習(xí)的方式來處理數(shù)據(jù)。在人工智能實踐中,數(shù)據(jù)是載體和基礎(chǔ),智能是追求的目標,而機器學(xué)習(xí)則是從數(shù)據(jù)通往智能的技術(shù)橋梁。因此,在人工智能領(lǐng)域,機器學(xué)習(xí)才是核心,是現(xiàn)代人工智能的本質(zhì)。
人工智能的火熱使市場上對機器學(xué)習(xí)人才的需求不斷提高,很多從事軟件開發(fā)的程序員紛紛轉(zhuǎn)行投向機器學(xué)習(xí)領(lǐng)域。但機器學(xué)習(xí)對人才的技術(shù)和理論水平要求都非常高,除了要掌握統(tǒng)計學(xué)中各種復(fù)雜的機器學(xué)習(xí)算法的理論推導(dǎo)外,還要懂計算機算法的實現(xiàn)邏輯以及分布式、并行化等架構(gòu)理論。
本書是以應(yīng)用場景為導(dǎo)向,以代碼實現(xiàn)為樣例貫穿始終,并融入了通俗易懂的理論知識。對于機器學(xué)習(xí)愛好者和想進入相關(guān)領(lǐng)域的從業(yè)者來說,是一本值得推薦的好書。
從2015年開始,我有幸與作者在同一個團隊工作,一起設(shè)計并研發(fā)阿里云的機器學(xué)習(xí)平臺——PAI。作者對機器學(xué)習(xí)的理解以及產(chǎn)品上的設(shè)計思想都在本書中完美地呈現(xiàn),值得準備進入機器學(xué)習(xí)領(lǐng)域的愛好者和從業(yè)者好好品讀。
感謝作者讓我在新書出版之前先睹為快。
——劉吉哲
 阿里云高級專家
致謝
感謝我的父母這些年對我的鼓勵,感謝我的女朋友,家人的支持永遠是我的源動力,讓你們生活得幸福是我奮斗的目標。感謝我的大學(xué)同學(xué),特別是本科宿舍的室友,你們是我心中的一股清流。最后我要特別感謝我的同事,感謝楚巍、不老、吉哲、云郎、賈總、品道等人以及 UED 小團隊,感謝你們對我工作上的支持和幫助。在阿里云大家庭中,我工作得很快樂,個人成長也非常迅速。同時,我也非常感謝出版社的編輯胡俊英在本書寫作期間為我提供建議和幫助。
最后對自己這段時間的寫作過程做一個總結(jié),最大的感觸是,在這樣快速緊張的生活和工作節(jié)奏下,連續(xù)8個月堅持做一件事情是非常需要毅力的。每天下班之后堅持學(xué)習(xí)和寫作2小時,常常熬到凌晨才關(guān)燈睡覺,但是這份堅持換來了將近500小時的時間用來“充電”。在這段時間中,寫作已經(jīng)成為我的一種生活方式,在飛機上、在高鐵上、在出租車上、在廁所中……很多地方都留下了思考和回憶。無論最終能做到什么程度,都希望自己可以繼續(xù)把這樣的激情保持下去。最后感謝所有在工作和學(xué)習(xí)中給過我?guī)椭娜?#xff0c;也感謝所有拒絕我、批評過我的人,因為有你們才有了這本書。
前言
人工智能是近年來非?;鸬脑掝},人們似乎看到了在某些領(lǐng)域內(nèi)機器智能取代人力的可能性。之所以人們可以得到這樣的判斷,主要是基于以下幾方面原因:隨著互聯(lián)網(wǎng)的發(fā)展,人類社會積累了大量的數(shù)據(jù)可供分析;機器學(xué)習(xí)的算法不斷迭代,特別是近年來隨著深度學(xué)習(xí)的發(fā)展,人們從理論層面取得了實質(zhì)性突破;隨著分布式計算的成熟,云計算讓計算資源不再成為瓶頸。我們可以把人工智能看作一個數(shù)據(jù)挖掘體系,在這個體系當中,機器學(xué)習(xí)的作用主要是學(xué)習(xí)歷史數(shù)據(jù)中的經(jīng)驗,把這些經(jīng)驗構(gòu)建成數(shù)學(xué)模型。人類利用機器學(xué)習(xí)算法生成的模型,就可以解決日常的一些問題,如商品推薦和對股票漲跌的預(yù)測等。
以上談到了機器學(xué)習(xí)的主要作用,我們再來了解機器學(xué)習(xí)在業(yè)務(wù)中的應(yīng)用,其實機器學(xué)習(xí)算法正在逐步向“平民化”演變。早些時候,只有一些規(guī)模比較大的公司會投入資源在智能算法的研究上,因為這些算法需要大量的數(shù)據(jù)積累以及計算資源,而且整個業(yè)務(wù)框架跟算法的結(jié)合也需要耗費很大人力,所以只有少數(shù)數(shù)據(jù)業(yè)務(wù)量達到一定規(guī)模的公司會在這方面投入。但是隨著各種開源算法框架的發(fā)展以及計算資源的價格走低,機器學(xué)習(xí)不再是“奢侈品”,很多規(guī)模不大的公司也開始嘗試用機器學(xué)習(xí)算法生成的模型來指導(dǎo)自身業(yè)務(wù),用數(shù)據(jù)來解決業(yè)務(wù)問題是代價最小的方式,而且效果會隨著數(shù)據(jù)量的積累變得越來越明顯。機器學(xué)習(xí)算法正在幫助越來越多的企業(yè)實現(xiàn)轉(zhuǎn)型,從傳統(tǒng)的商業(yè)智能(Business Intelligence,BI)驅(qū)動到人工智能(Artificial Intelligence,AI)驅(qū)動。通過平日里與客戶打交道,我們可以了解到,現(xiàn)在不只是互聯(lián)網(wǎng)公司,更多傳統(tǒng)行業(yè),如教育、地產(chǎn)和醫(yī)療等,也在嘗試把自己的業(yè)務(wù)數(shù)據(jù)上傳到云,通過機器學(xué)習(xí)算法來提升自己的業(yè)務(wù)競爭力。
綜上所述,業(yè)務(wù)與機器學(xué)習(xí)算法的結(jié)合很有可能是下一階段行業(yè)變革的驅(qū)動力,如果固守原來的傳統(tǒng)技術(shù),不嘗試提升業(yè)務(wù)的數(shù)據(jù)驅(qū)動力,企業(yè)很有可能在這一波新的浪潮中被淘汰。本書嘗試將算法與實際的業(yè)務(wù)實戰(zhàn)相結(jié)合,將對機器學(xué)習(xí)的全鏈路逐一進行介紹。在描述算法理論的時候,本書盡可能用更直白易懂的語句和圖示來替代公式。另外,為了幫助讀者更有成效地理解機器學(xué)習(xí)算法的使用邏輯,書中不單介紹了算法,還對整個數(shù)據(jù)挖掘的全流程,包括數(shù)據(jù)預(yù)處理、特征工程、訓(xùn)練以及預(yù)測、評估進行了介紹。而且本書還通過真實案例的數(shù)據(jù),在各種不同業(yè)務(wù)場景下對整個數(shù)據(jù)挖掘流程進行了詳細介紹。此外,書中還簡單地介紹了深度學(xué)習(xí)和知識圖譜這兩個未來可能被更多關(guān)注的領(lǐng)域??傊?#xff0c;本書不是一本理論教程,而是一本推動算法與業(yè)務(wù)實踐相結(jié)合的指南。
寫作本書的目的
我從研究生階段開始接觸機器學(xué)習(xí)算法,在碩士研究生期間主要從事算法的理論研究和代碼實現(xiàn),當時參與了一些開源算法庫的開發(fā)和算法大賽,那時對機器學(xué)習(xí)的理解更多的是停留在數(shù)學(xué)公式推導(dǎo)層面。那時候理解的機器學(xué)習(xí)就是一門統(tǒng)計科學(xué),需要把公式研究透徹。直到入職阿里云,從事了機器學(xué)習(xí)平臺相關(guān)的工作,我對機器學(xué)習(xí)的看法發(fā)生了很大改變。根據(jù)平日里與客戶的溝通,我認識到,對絕大部分中小企業(yè)用戶而言,機器學(xué)習(xí)算法只是幫助大家提升業(yè)務(wù)成效的工具,很多用戶對機器學(xué)習(xí)的理解還處于比較初級的階段,與這種現(xiàn)狀相矛盾的是目前市面上部分機器學(xué)習(xí)相關(guān)的圖書都更偏向于理論研究,而比較缺乏實際應(yīng)用的場景。
寫這本書的目的就是希望可以提供這樣一本素材,能夠讓渴望了解機器學(xué)習(xí)的人快速了解整個數(shù)據(jù)挖掘體系的輪廓,可以用最小的成本幫助用戶把算法遷移到機器學(xué)習(xí)云服務(wù)上去。至于算法的精密度和深度的探索,那是數(shù)學(xué)家需要考慮的事情,對絕大部分的機器學(xué)習(xí)算法用戶而言,這樣一本能幫助大家快速理解算法并能夠?qū)⑵湓跇I(yè)務(wù)上實踐的教程可能會更加有效。
對我而言,本書也是我對自己學(xué)習(xí)成果的總結(jié)。從 2013年起,我陸陸續(xù)續(xù)在 CSDN、GitHub 和云棲社區(qū)上分享過一些自己在 IT 領(lǐng)域的學(xué)習(xí)筆記和代碼,收到了很多朋友的反饋,也有一些出版社的朋友找到我希望可以把這些內(nèi)容整理成書,但是一直沒有特別篤定的想法——什么樣的書是有價值的。通過近一年來的機器學(xué)習(xí)平臺產(chǎn)品建設(shè)以及與客戶的不斷接觸,我心中的想法逐漸清晰,很多機器學(xué)習(xí)愛好者最關(guān)心的是如何使用算法而不是這些算法背后的推理,于是本書就應(yīng)運而生了。雖然我才疏學(xué)淺,書中內(nèi)容未免有描述不足之處,但是我真心希望這本書可以在讀者探索機器學(xué)習(xí)的道路上為其提供助力。
讀者對象
本書的讀者對象如下:
- 有一定數(shù)學(xué)基礎(chǔ),希望了解機器學(xué)習(xí)算法的人;
- 有編程基礎(chǔ),希望自己搭建機器學(xué)習(xí)服務(wù)解決業(yè)務(wù)場景的工程師;
- 數(shù)據(jù)倉庫工程師;
- 與數(shù)據(jù)挖掘相關(guān)的高校學(xué)生;
- 尋求數(shù)據(jù)驅(qū)動業(yè)務(wù)的企業(yè)決策者。
如何閱讀本書
本書的結(jié)構(gòu)是按照讀者對機器學(xué)習(xí)的認知過程和數(shù)據(jù)挖掘的算法流程來組織的,一共分為5個部分,共9章內(nèi)容。
第1部分是機器學(xué)習(xí)的背景知識介紹,包括第1章。這一部分主要介紹機器學(xué)習(xí)的發(fā)展歷史以及現(xiàn)狀,另外,也介紹了機器學(xué)習(xí)的一些基本概念,為接下來的內(nèi)容做準備。
第2部分介紹機器學(xué)習(xí)的算法流程,包括第2~6章,分別介紹了場景解析、數(shù)據(jù)預(yù)處理、特征工程、機器學(xué)習(xí)常規(guī)算法和深度學(xué)習(xí)算法。在第5章的算法部分,對常見的分類算法、聚類算法、回歸算法、文本分析算法、推薦算法和關(guān)系圖算法都進行了介紹,從這一章可以了解到不同業(yè)務(wù)場景下不同算法的區(qū)別和用法。第6章對深度學(xué)習(xí)相關(guān)內(nèi)容進行了講解,包括常用的3種模型 DNN、CNN 和 RNN 的介紹。
第3部分介紹機器學(xué)習(xí)的相關(guān)工具,包括第7章的內(nèi)容。這里的工具是一個廣泛的概念,包括了 SPSS 和 R 語言這樣的單機統(tǒng)計分析環(huán)境,也包括了分布式的算法框架Spark MLib和TensorFlow,還有企業(yè)級的云算法服務(wù) AWS ML 和阿里云 PAI。通過閱讀這一章,讀者可以根據(jù)自身的業(yè)務(wù)特點,選擇適合自己的算法工具。
第4部分介紹機器學(xué)習(xí)算法的實踐案例,包括第8章,幫助讀者理解整個數(shù)據(jù)挖掘流程。這一章針對不同行業(yè)和不同場景搭建了實驗,分別介紹了如何通過機器學(xué)習(xí)算法應(yīng)對心臟病預(yù)測、商品推薦、金融風(fēng)控、新聞分類、貸款預(yù)測、霧霾天氣預(yù)報和圖片識別等業(yè)務(wù)場景,因此也是本書的核心章節(jié)。
第5部分主要針對知識圖譜這個熱點話題進行介紹,包括第9章,知識圖譜的介紹主要是從圖譜的概念以及實現(xiàn)的角度來說明。
盡管讀者可以根據(jù)自己的側(cè)重點來選擇閱讀順序,但我強烈建議讀者按照順序來閱讀,這樣對理解書中的概念并能夠循序漸進地掌握相關(guān)知識更有幫助。
勘誤和服務(wù)
雖然花了很多時間去反復(fù)檢查和核實書中的文字、圖片和代碼,但是因為認知能力有限,書中難免會有一些紕漏,如果大家發(fā)現(xiàn)書中的不足之處,懇請反饋給我,我一定會努力修正問題,我的個人郵箱是 garvin.libo@gmail.com。如果大家在閱讀本書的時候遇到什么問題,也歡迎通過各種方式與我取得聯(lián)系。
個人網(wǎng)站
博客地址
讀者也可以到異步社區(qū)的頁面內(nèi)提交勘誤。因為工作繁忙,可能來不及一一回復(fù),但是我會盡力與讀者保持溝通,謝謝大家的支持。
第01章:機器學(xué)習(xí)概述(上)
- 1.1 背景
- 1.2 發(fā)展現(xiàn)狀- 1.2.1 數(shù)據(jù)現(xiàn)狀
- 1.2.2 機器學(xué)習(xí)算法現(xiàn)狀
 
 
 
1.1 背景
正如愛因斯坦所說:“從希臘哲學(xué)到現(xiàn)代物理學(xué)的整個科學(xué)史中,不斷有人試圖把表面上極為復(fù)雜的自然現(xiàn)象歸結(jié)為幾個簡單的基本概念和關(guān)系,這就是整個自然哲學(xué)的基本原理。”人類進化的發(fā)展史,從某種意義上來講就是不斷歸納經(jīng)驗進而演繹的過程。從刀耕火種的新石器時代到近代的工業(yè)革命以及現(xiàn)代科技的發(fā)展,人類已經(jīng)積累了大量的經(jīng)驗。這些經(jīng)驗既是“種瓜得瓜,種豆得豆”這樣的常識,也是例如相對論這樣的定理公式。人類文明正沿著時間這條坐標軸不斷前進,如何利用過往的經(jīng)驗來推動人類社會的再一次飛躍,人工智能或許是我們需要的答案。
人工智能的起源應(yīng)該可以追溯到17世紀甚至更早,當時人們對于人工智能的定義是基于推理的。人們暢想著如果兩個哲學(xué)家或者歷史學(xué)家的觀點出現(xiàn)矛盾,兩個人不必再進行無休止的爭吵,世界上的所有理論會抽象成類似于數(shù)學(xué)符號的語言,人們只需要拿出筆來計算就可以解決矛盾。這種抽象邏輯給了后人引導(dǎo),如今,機器學(xué)習(xí)在行業(yè)上的應(yīng)用也是將業(yè)務(wù)邏輯抽象成數(shù)字來進行計算,從而解決業(yè)務(wù)問題。但是在遠古時代,這些邏輯還只是科學(xué)家腦中的想法。實際上,直到有機器的出現(xiàn),人工智能才真正作為一門學(xué)科而受到廣泛關(guān)注。
談到近代人工智能的起源就不得不提到一個名字——圖靈(見圖1-1)。
圖1-1 阿蘭 · 圖靈
隨著第二次世界大戰(zhàn)的爆發(fā),越來越多的機械開始替代手工,人們開始幻想什么時候機器能代替人類來進行思考。在20世紀40年代,關(guān)于人工智能的討論開始興起。但是,機器做到什么程度才算人工智能,這需要一個標準來判定。圖靈用了最直白的話語描述了人工智能,這就是圖靈測試(見圖1-2)。
圖1-2 圖靈測試
1950年,計算機科學(xué)和密碼學(xué)的先驅(qū)阿蘭 · 麥席森 · 圖靈發(fā)表了一篇名為《計算機器與智能》的論文,文中定義了人工智能測試的方法,讓被測試人和一個聲稱自己有人類智力的機器在一起做一個實驗。測試時,測試人與被測試人是分開的,測試人只有通過一些裝置(如鍵盤)向被測試人問一些問題,隨便是什么問題都可以。問過一些問題后,如果測試人能夠正確地分出誰是人、誰是機器,那機器就沒有通過圖靈測試,如果測試人沒有分出誰是機器、誰是人,那這個機器就是有人類智能的。
人工智能的另一個重要標志是人工智能這一學(xué)科的誕生,故事發(fā)生在1956年達特茅斯會議。會議上提出了這樣的理論:“學(xué)習(xí)或者智能的任何其他特性都能被精確地描述,使得機器可以對其進行模擬?!边@個論調(diào)很像機器學(xué)習(xí)算法在今日的應(yīng)用,我們需要提取可以表示業(yè)務(wù)的特征,然后通過算法來訓(xùn)練模型,用這些模型對于未知結(jié)果的預(yù)測集進行預(yù)測。這次會議對于人工智能在更廣闊的領(lǐng)域發(fā)展起到了推動作用。在之后的20年里,人類在人工智能,特別是相關(guān)的一些統(tǒng)計學(xué)算法的研究上取得了突破進展,比較有代表性的如神經(jīng)網(wǎng)絡(luò)算法,就是在這個時期誕生的。有了這些智能算法作支撐,更多的真實場景才可以在數(shù)學(xué)層面進行模擬,人類慢慢學(xué)會通過數(shù)據(jù)和算法的結(jié)合來進行預(yù)測,從而實現(xiàn)某種程度上的智能化應(yīng)用。
人工智能在發(fā)展過程中也遇到過非常多的挑戰(zhàn)。20世紀70年代,隨著理論算法的逐步成熟,人工智能的發(fā)展遇到了計算資源上的瓶頸。隨著計算復(fù)雜度的指數(shù)性增長,20世紀70年代的大型機器無法負擔這一切。同時,當時的互聯(lián)網(wǎng)還處于發(fā)展初期,在數(shù)據(jù)積累方面也才剛剛起步??茖W(xué)家往往沒有足夠的數(shù)據(jù)去訓(xùn)練模型,以圖像印刷文字識別(Optical Character Recognition,OCR)為例。如果想針對某一場景訓(xùn)練一套精度較高的 OCR 模型,需要千萬級的數(shù)據(jù)樣本,這樣的數(shù)據(jù)無論從數(shù)據(jù)獲取、存儲和計算成本來看,在當時都是不可能實現(xiàn)的。所以人工智能在之后很長的一段時間內(nèi)都受限于計算能力以及數(shù)據(jù)量的不足。
雖然經(jīng)歷了近20年的消沉?xí)r期,但是數(shù)據(jù)科學(xué)家對于人工智能的探索從未停止過。在 21 世紀,隨著互聯(lián)網(wǎng)的井噴式發(fā)展,越來越多的圖像和文本數(shù)據(jù)被分享到網(wǎng)頁上,停留在互聯(lián)網(wǎng)巨頭的服務(wù)器中,隨之而來的是用戶在網(wǎng)上的瀏覽記錄和購物記錄的收集?;ヂ?lián)網(wǎng)已經(jīng)變成了一個大數(shù)據(jù)倉庫,許多網(wǎng)絡(luò)大咖們紛紛將注意力投向數(shù)據(jù)挖掘領(lǐng)域,數(shù)據(jù)庫成為了一座座金礦,數(shù)據(jù)科學(xué)家們開始用一行行公式和代碼挖掘數(shù)據(jù)背后的價值,越來越多的公司做起了數(shù)據(jù)買賣。這些代碼和公式就是本書的主角——機器學(xué)習(xí)算法。馬云先生在很多年前的公開演講上就已經(jīng)明確表示過“阿里巴巴是一家數(shù)據(jù)公司”。數(shù)據(jù)的積累就像是一塊塊肥沃的土地,需要機器學(xué)習(xí)算法來在上面耕種,云計算就是揮舞在土地上的“鋤頭”。PB 級數(shù)據(jù)的積累使得人們不得不將單機計算遷移到多機,并行計算理論開始得到了廣泛的應(yīng)用,這就催生了云計算的概念。云計算,就是分布式計算,簡單來講就是將一個很復(fù)雜的任務(wù)進行拆解,由成百上千的機器各自執(zhí)行任務(wù)的一個小模塊,然后將結(jié)果匯總。
以 Hadoop 為代表的開源分布式計算架構(gòu)為更多的企業(yè)提供了分布式計算的技術(shù)支持。隨著 Caffe 和 Tensorflow 等高效率的深度學(xué)習(xí)架構(gòu)被開源,許多小型企業(yè)也具備了自主研發(fā)改進算法模型的能力。人工智能的應(yīng)用開始普及,并且逐漸融入我們的生活當中。人們開始習(xí)慣了在 Google 上輸入一個詞條馬上就能返回上千萬條信息,通過刷臉或者指紋識別來進行支付,在淘寶購物時獲得智能商品推薦。圖像識別、文本識別和語音識別的發(fā)展給我們的生活帶來了顛覆式的影響。2016年,Google關(guān)于人工智能的一場秀將人工智能產(chǎn)業(yè)帶到了一個新高度。機器智能戰(zhàn)勝人類圍棋選手一直以來被認為是不可能實現(xiàn)的任務(wù),但是 AlphaGo 成功地實現(xiàn)了這一點。AlphaGo 的成功不僅僅驗證了深度學(xué)習(xí)和蒙特卡洛搜索算法的實踐性,更加再一次印證了這樣的事實,即人類不再是產(chǎn)生智能的唯一載體。任何機器,只要能夠進行信息的接收、存儲和分析,都是可以產(chǎn)生智能的。而這里面的關(guān)鍵因素是信息的量級以及算法的深度。
人工智能的發(fā)展史,就是對于過往經(jīng)驗的收集和分析方法不斷演繹的歷史。在機器出現(xiàn)之前,人類只能通過別人的分享和自己的實踐在很小的信息量級上來對事物進行判斷,這種對于外界事物的認知受限于人的腦力和知識量。不同于人類的腦力,抽象意義上的機器可以被當成一個信息黑洞,吸收所有的信息,而且可以不分晝夜地對這些數(shù)據(jù)進行大維度的分析、歸納以及演繹,如果人類將這些機器學(xué)習(xí)后得到的認知進行分享,就形成了人工智能。于是,隨著人類社會的發(fā)展,數(shù)據(jù)的積累以及算法的迭代將進一步推動整個人工智能的發(fā)展。
正如前面所提到的,人工智能的發(fā)展體現(xiàn)在機器帶動人類進行經(jīng)驗歸納以及思考,那么人工智能背后的引擎就是本書要介紹的重點——機器學(xué)習(xí)算法。機器學(xué)習(xí)是一種多學(xué)科交織的研究型學(xué)科,涉及生物學(xué)、統(tǒng)計和計算機等多個學(xué)科。機器學(xué)習(xí)算法發(fā)展到目前階段,做的事情主要是將生活中的場景抽象成為數(shù)學(xué)公式,并且依靠機器的超強計算能力,通過迭代和演繹生成模型,對于新的社會問題進行預(yù)測或者分類操作。人工智能的發(fā)展史其實伴隨著機器學(xué)習(xí)算法的進化史,正是隨著機器學(xué)習(xí)算法的不斷發(fā)展以及計算能力的提升,人工智能產(chǎn)業(yè)才得到了發(fā)展,進而達到了目前這種火熱的局面。下面將對于機器學(xué)習(xí)算法在目前階段所取得的一些成就進行一個介紹,方便大家了解機器學(xué)習(xí)算法的用途。
1.2 發(fā)展現(xiàn)狀
上一節(jié)中回顧了人工智能的發(fā)展歷程,不考慮計算能力等硬件條件的限制,當今世界的人工智能可以總結(jié)為數(shù)據(jù)和智能算法的結(jié)合。通過對過往經(jīng)驗的分析得到實驗?zāi)P?#xff0c;并且利用這種模型指導(dǎo)實際的業(yè)務(wù)。把人工智能看作一個人類大腦的話,里面的血液就是數(shù)據(jù),而大腦里面的血管承載著數(shù)據(jù)的流轉(zhuǎn),可以看作是相關(guān)的機器學(xué)習(xí)算法。所以在介紹機器學(xué)習(xí)算法之前,大家不得不先了解一下大數(shù)據(jù)時代的特性,然后再針對當前數(shù)據(jù)爆炸的這種情況介紹機器學(xué)習(xí)算法的一些用途。
1.2.1 數(shù)據(jù)現(xiàn)狀
21世紀注定是屬于互聯(lián)網(wǎng)的,在這個數(shù)字時代產(chǎn)生了很多新名詞,這里邊有云計算、電子商務(wù)和有共享經(jīng)濟。大數(shù)據(jù)也是互聯(lián)網(wǎng)時代的產(chǎn)物,出現(xiàn)在報紙中、電視上、網(wǎng)頁里。“大數(shù)據(jù)”已經(jīng)成為信息時代的代名詞,乃至于好多人還來不及認識它,就已經(jīng)開始被它支配。什么是數(shù)據(jù)?客觀世界存在的那一刻開始,數(shù)據(jù)就已經(jīng)出現(xiàn)了,從宇宙中天體運動的速度、角度及天體的質(zhì)量,到人類文明的產(chǎn)生、更迭和演進。數(shù)據(jù)無處不在,但是數(shù)據(jù)的價值在于如何采集和利用。
正是受到互聯(lián)網(wǎng)的驅(qū)動,人類開始采集和利用數(shù)據(jù)。對于大數(shù)據(jù)時代,我最深切的感觸是大數(shù)據(jù)未來的版圖清晰又模糊。清晰的是人們已經(jīng)開始意識到數(shù)據(jù)是有價值的,并且已經(jīng)開始采集數(shù)據(jù),看看人們都做了什么?根據(jù)存儲市場調(diào)研的最新報告,目前世界全年的數(shù)據(jù)保存量約合 50EB,這些數(shù)據(jù)來源于互聯(lián)網(wǎng)、醫(yī)療健康、通信、公共安全以及軍工等行業(yè)。接下來,我們來看看這些數(shù)據(jù)是如何產(chǎn)生的。
以全球最大的 SNS 服務(wù)商 Facebook 為例。Facebook 現(xiàn)在的用戶數(shù)達到9.5億,這些用戶的每一個行為,包括每一次通知、頁面訪問、查看朋友的頁面,都會被Facebook 的服務(wù)器追蹤,并且產(chǎn)生歷史行為數(shù)據(jù)。而全世界9.5億用戶平均每個月在 Facebook 上花費的時間超過6.5個小時,產(chǎn)生的數(shù)據(jù)量大小超出人們的想象。Facebook 上每天可以產(chǎn)生 500TB 左右的數(shù)據(jù)量,我們來看看這些數(shù)據(jù)具體包括什么。人們每天分享 25 億個內(nèi)容條目,包括狀態(tài)更新、墻上的帖子、圖片、視頻和評論,每天有 27 億個“ like”操作,人們每天上傳 3 億張圖片。
雖然諸如 Facebook、Google 和 Alibaba 這樣的國際互聯(lián)網(wǎng)巨頭已經(jīng)開始積累數(shù)據(jù),并且將數(shù)據(jù)進行分析來反哺業(yè)務(wù)。但是截止到今天,全世界每年保存下來的數(shù)據(jù)只占到數(shù)據(jù)產(chǎn)生總量的百分之一不到,其中可以被標記并且分析的數(shù)據(jù)更是連百分之十都不到。這種現(xiàn)狀造成了兩方面的瓶頸,一方面是數(shù)據(jù)產(chǎn)生和數(shù)據(jù)收集的瓶頸,另一方面是采集到的數(shù)據(jù)和能被分析的數(shù)據(jù)之間的瓶頸。
針對數(shù)據(jù)產(chǎn)生和數(shù)據(jù)采集的瓶頸,其原因一方面是硬件存儲成本的限制,但是隨著硬盤技術(shù)的發(fā)展和產(chǎn)能的提升,這方面的缺陷正逐漸弱化。筆者認為,造成目前數(shù)據(jù)采集與數(shù)據(jù)生成失衡的主要原因是數(shù)據(jù)的采集缺乏標準。雖然,互聯(lián)網(wǎng)公司對數(shù)據(jù)采集和標準制定方面已經(jīng)形成了一套成熟的體系,如網(wǎng)站的點擊行為、日志的收集等。但是對于更多行業(yè),特別是傳統(tǒng)行業(yè)來說,數(shù)據(jù)的采集方式還處于摸索當中,而且從目前來看,這樣的摸索還將持續(xù)相當長的時間。盡管現(xiàn)在提倡互聯(lián)網(wǎng)思維以及世界萬物聯(lián)網(wǎng)的思想,但是互聯(lián)網(wǎng)對于采集數(shù)據(jù)的經(jīng)驗恐怕很難復(fù)制到傳統(tǒng)行業(yè)。因為互聯(lián)網(wǎng)行業(yè)對于數(shù)據(jù)采集存在天然的優(yōu)勢,互聯(lián)網(wǎng)的數(shù)據(jù)都是托管在數(shù)據(jù)庫里,以二進制的方式記錄在硬盤中,只要稍作處理就可以形成一份質(zhì)量較高的結(jié)構(gòu)化數(shù)據(jù)。但是在傳統(tǒng)行業(yè),以建筑行業(yè)為例,數(shù)據(jù)產(chǎn)生于工地上一磚一瓦的堆砌,產(chǎn)生于工地的施工建設(shè),這樣的數(shù)據(jù)如何轉(zhuǎn)成二進制來存儲需要由新的標準來指定,而這種標準更多地受限于技術(shù)手段。如果我們的圖像識別做得足夠智能,拍一張照片就可以將工地的數(shù)據(jù)量化,這樣可能就可以解決這種問題。對于傳統(tǒng)行業(yè)的數(shù)據(jù)智能化進程可能還需要耐心的等待。
數(shù)據(jù)采集方面還需要制定更多的標準以及技術(shù)的支持,但是數(shù)據(jù)的應(yīng)用方面也存在不小的缺陷。如果目前世界上采集到的數(shù)據(jù)能被充分利用是足夠顛覆生活的,可惜的是目前可以供分析的數(shù)據(jù)還只占很小的比例。造成這樣的困境主要有兩方面因素,一個是目前比較主流的機器學(xué)習(xí)算法都是監(jiān)督學(xué)習(xí)算法,監(jiān)督學(xué)習(xí)需要的數(shù)據(jù)源是打標過的數(shù)據(jù),打標數(shù)據(jù)很多時候是依賴于人工標記。比如我們需要一份數(shù)據(jù)來訓(xùn)練模型進行電影推薦,除了已知的電影的特征數(shù)據(jù)以外,還需要一份打標的數(shù)據(jù)來表示電影的好看程度,有點像豆瓣的電影分數(shù),這種數(shù)據(jù)很難通過計算機的計算直接生成,需要依賴于人工打標。人工打標的影響就是,一方面很難生成大量的標本(上千萬樣本的數(shù)據(jù)),設(shè)想一下1000萬人坐到一個地方一起看一部電影再進行評分是多么浩大的一項工程。另一方面,人工打標的成本太高,目前有很多負責(zé)打標的第三方公司,打標服務(wù)往往在市場上可以賣到很高的價格。
另一個導(dǎo)致可分析數(shù)據(jù)比例較低的因素是對于非結(jié)構(gòu)化的數(shù)據(jù)處理能力較低。非結(jié)構(gòu)化數(shù)據(jù)指的是文本或者圖片、語音、視頻這樣的數(shù)據(jù)。這部分數(shù)據(jù)來自于用戶在貼吧的評論、社交軟件上的頭像、直播平臺上的視頻展現(xiàn)等。雖然目前的科技水平已經(jīng)具備了文本和圖像方面的分析能力,但是在大批量處理和特征提取方面依然處于相對基礎(chǔ)的階段。以圖像識別為例,目前比較成熟的包括人臉識別和指紋識別等,圖像識別的特點是每種事物的識別需要訓(xùn)練相對應(yīng)的模型,而這種模型需要大量的訓(xùn)練樣本來提高精確率,一個成熟的模型通常需要千萬級別的訓(xùn)練樣例。人臉的數(shù)據(jù)是比較容易獲取的,所以相應(yīng)的模型比較容易訓(xùn)練,但是假如我們需要訓(xùn)練一個模型來識別某一款杯子,針對這一款杯子的訓(xùn)練數(shù)據(jù)是很難達到理想量級的,這也提高了特定場景下圖像識別的門檻。
互聯(lián)網(wǎng)在不斷發(fā)展,數(shù)據(jù)的生成也不會停下腳步。目前被廣泛引用的互聯(lián)網(wǎng)數(shù)據(jù)中心(International Data Corporation,IDC)和 EMC 聯(lián)合發(fā)布的“2020年的數(shù)字宇宙”報告顯示,到2020年全球數(shù)字宇宙將會膨脹到40000EB,均攤每個人身上是5200GB以上,這個數(shù)據(jù)量的數(shù)據(jù)將會如何被有效存儲和應(yīng)用,目前我們還不敢想象。不過可以肯定的是,數(shù)據(jù)會成為重要的資源,就像是水電煤一樣,在大數(shù)據(jù)時代,特別是未來的數(shù)據(jù)爆發(fā)時代,數(shù)據(jù)一定會展現(xiàn)出更大的潛能,人類社會也會進入數(shù)據(jù)處理技術(shù)(Data Technology,DT)時代。
1.2.2 機器學(xué)習(xí)算法現(xiàn)狀
之前講了大數(shù)據(jù),這里再講機器學(xué)習(xí)就變得容易理解了。傳統(tǒng)的機器工作模式是程序員向機器輸入一連串的指令,可以理解為是代碼,然后機器按照這些指令一步一步執(zhí)行下去,結(jié)果通常是我們可以事先預(yù)料的。這種邏輯在機器學(xué)習(xí)里是走不通的,機器學(xué)習(xí)是指我們向機器(更準確地說是機器學(xué)習(xí)算法)中輸入數(shù)據(jù),然后機器會根據(jù)數(shù)據(jù)返回結(jié)果,這些結(jié)果是通過數(shù)據(jù)自我學(xué)習(xí)得到的,學(xué)習(xí)的過程通過算法來完成。我們可以這樣來定義,機器學(xué)習(xí)方法是計算機利用已有的數(shù)據(jù)(經(jīng)驗)得出了某種模型,并利用這些模型預(yù)測未來的一種方法。這個過程其實與人的學(xué)習(xí)過程極為相似,只不過機器是一個可以進行大維度數(shù)據(jù)分析而且可以不知疲倦地學(xué)習(xí)的“怪獸”而已(見圖1-3)。
圖1-3 機器學(xué)習(xí)與人的不同
機器學(xué)習(xí)跟模式識別、統(tǒng)計學(xué)習(xí)、數(shù)據(jù)挖掘、計算機視覺、語音識別和自然語言處理等領(lǐng)域都有著很深的聯(lián)系。如今生活在這樣的 DT 時代,隨時隨地都是機器學(xué)習(xí)的影子,通過機器對大數(shù)據(jù)進行分析而帶來的人工智能應(yīng)用,正在一點一點地改變?nèi)藗兊纳罘绞胶退季S方式??吹竭@里很多人都會發(fā)問:機器學(xué)習(xí)究竟能做什么?其實機器學(xué)習(xí)已經(jīng)服務(wù)了我們生活的各個方面,下面以一個簡單的購物場景來介紹機器學(xué)習(xí)是如何應(yīng)用在我們的日常生活中的。
現(xiàn)在是 2016 年,如果你還沒有嘗試過網(wǎng)上購物,那真的是落伍了。網(wǎng)上購物目前已經(jīng)成了人們的生活方式。下面就簡單地聊聊機器學(xué)習(xí)算法在購物行為中的應(yīng)用。假設(shè)我們在餐廳吃飯,看到一個人的短袖體恤很漂亮,我們想買同款,但是又不好意思開口去問。那么我們可以先偷拍一張這個人的T恤的照片,然后拍立淘(見圖1-4)就會顯示出這件衣服的同款。
圖1-4 拍立淘
這里就用到了機器學(xué)習(xí)中的圖像識別技術(shù)。但是往往與這件衣服相近的款式又非常的多,因此我們需要把這些款式按照一定的規(guī)則進行排序,這就涉及了機器學(xué)習(xí)算法模型的訓(xùn)練,通過這個模型,我們把所有的類似款式進行一個排名,最后就得出了最終的展示順序。
當然,更多的時候我們是通過鍵盤的輸入來搜索商品的,但是如果犯懶,還可以選擇通過語音的方式輸入內(nèi)容,這就是語音轉(zhuǎn)文本的運用。在我們搜索一款產(chǎn)品之后,網(wǎng)頁的邊欄上會出現(xiàn)一些推薦列表,而且每個用戶的推薦列表都是不同的,這就是所謂的千人千面。這個場景的實現(xiàn)依賴的是推薦系統(tǒng)后臺的用戶畫像,而用戶畫像就是大數(shù)據(jù)和機器學(xué)習(xí)算法的典型應(yīng)用,通過挖掘用戶的特征,如性別、年齡、收入情況和愛好等特征,推薦用戶可能購買的商品,做到個性化推薦。
到了這一步,我們終于把商品放到了購物車里,開始下單。下單之前我們發(fā)現(xiàn)網(wǎng)銀賬戶中的錢不夠用了,想申請一些貸款。這個時候,我們發(fā)現(xiàn)有一個貸款額度,這個額度是如何計算的呢?這里面涉及金融風(fēng)控的問題,而金融風(fēng)控也是根據(jù)機器學(xué)習(xí)的算法來訓(xùn)練模型并且計算出來的。
下單之后我們的商品就被安排配送了,目前除了少數(shù)邊遠地區(qū),基本上5天之內(nèi)就可以收到商品。這段時間包含了商品的包裝、從庫存發(fā)貨到中轉(zhuǎn)庫存、從低級倉庫到高級倉庫配送、向下分發(fā)。這么多工序之所以能夠在短時間內(nèi)完成,是因為倉儲在庫存方面已經(jīng)提前做了需求量預(yù)測,提前在可能的需求地附近備貨,這套預(yù)測算法也是建立在機器學(xué)習(xí)算法基礎(chǔ)之上的。
我們的快遞員拿到貨物,打開地圖導(dǎo)航,系統(tǒng)已經(jīng)為他設(shè)計了配送的路徑,這個路徑避免了擁堵而且盡量把路線設(shè)計到最短距離,這也是通過機器學(xué)習(xí)算法來計算的??爝f員走進門,我們拿到貨物后,發(fā)現(xiàn)衣服的尺碼不合適怎么辦?打開客服,輸入問題,然后我們發(fā)現(xiàn)可以瞬間得到回復(fù),因為這名客服人員可能并不是真的“客服人員”,只是一個客服機器人而已。智能客服系統(tǒng)利用文本的語意分析算法,可以精準地確定用戶的問題,并且給予相應(yīng)問題的解答。同時,智能客服還可以對用戶問題的語境進行分析,如果問題很嚴重需要賠償,如:“你的產(chǎn)品害我壞肚子了”這樣的問題會由客服機器人通過情感分析挑出來,交給專人處理。
如上所述,筆者簡單列舉了機器學(xué)習(xí)在網(wǎng)上購物中的幾大應(yīng)用,這里面涉及了很多智能算法,包括模型的訓(xùn)練和預(yù)測、語義分析、文本情感分析、圖像識別技術(shù)以及語音識別技術(shù)。我們可以看到,在網(wǎng)購這種最常見的場景下,機器學(xué)習(xí)算法幾乎貫穿了全部流程。
當然,我們還可以列舉出非常多諸如上述例子,因為場景實在太多了,沒有辦法全部窮舉出來,這里通過場景來切分把機器學(xué)習(xí)的一些高頻場景列舉如下。
- 聚類場景:人群劃分和產(chǎn)品種類劃分等。
- 分類場景:廣告投放預(yù)測和網(wǎng)站用戶點擊預(yù)測等。
- 回歸場景:降雨量預(yù)測、商品購買量預(yù)測和股票成交額預(yù)測等。
- 文本分析場景:新聞的標簽提取、文本自動分類和文本關(guān)鍵信息抽取等。
- 關(guān)系圖算法:社交網(wǎng)絡(luò)關(guān)系(Social Network Site,SNS)網(wǎng)絡(luò)關(guān)系挖掘和金融風(fēng)險控制等。
- 模式識別:語音識別、圖像識別和手寫字識別等。
上面列舉的應(yīng)用只是機器學(xué)習(xí)算法應(yīng)用場景中的一小部分,其實隨著數(shù)據(jù)的積累,機器學(xué)習(xí)算法是可以滲透到各行各業(yè)當中,并且在行業(yè)中發(fā)生巨大的作用。隨著數(shù)據(jù)智能、數(shù)據(jù)驅(qū)動等思想的傳播,機器學(xué)習(xí)算法正在成為一種普世的基礎(chǔ)能力向外輸出。我們可以預(yù)見未來隨著算法和計算能力的發(fā)展,機器學(xué)習(xí)應(yīng)該會在金融、醫(yī)療、教育、安全等各個領(lǐng)域有更深層次的應(yīng)用。筆者特別期待機器學(xué)習(xí)算法在破解基因密碼以及癌癥攻破方面可以取得突破,同時無人車、增強現(xiàn)實(Augmented Reality,AR)等新概念、新技術(shù)的發(fā)展也需要依賴于機器學(xué)習(xí)算法的發(fā)展。相信未來,機器學(xué)習(xí)算法會真正做到顛覆生活改變?nèi)祟惷\。
第01章:機器學(xué)習(xí)概述(下)
- 1.3 機器學(xué)習(xí)基本概念- 1.3.1 機器學(xué)習(xí)流程
- 1.3.2 數(shù)據(jù)源結(jié)構(gòu)
- 1.3.3 算法分類
- 1.3.4 過擬合問題
- 1.3.5 結(jié)果評估
 
- 1.4 本章小結(jié)
 
- 1.3 機器學(xué)習(xí)基本概念
 
1.3 機器學(xué)習(xí)基本概念
在開始機器學(xué)習(xí)的算法流程介紹之前,因為機器學(xué)習(xí)是一個多學(xué)科交叉的學(xué)科,有很多類似于統(tǒng)計學(xué)的概念,但是在叫法上與傳統(tǒng)的統(tǒng)計學(xué)又有一定的區(qū)別,我們需要了解一些機器學(xué)習(xí)相關(guān)的基本概念,因為如果不明確這些概念的話,對于一些文獻的閱讀和理解會構(gòu)成障礙。下面通過這一節(jié)的介紹幫助大家對于基礎(chǔ)的機器學(xué)習(xí)名詞和概念進行了解,首先介紹一下機器學(xué)習(xí)的基本流程,然后針對機器學(xué)習(xí)涉及的數(shù)據(jù)、算法和評估這3個方面用到的基礎(chǔ)概念進行介紹。
1.3.1 機器學(xué)習(xí)流程
機器學(xué)習(xí)的過程就是一個數(shù)據(jù)流轉(zhuǎn)、分析以及得到結(jié)果的過程,在使用的過程中很多人花了很多時間在算法的選擇或者調(diào)優(yōu)上,但其實機器學(xué)習(xí)的每一個步驟都是至關(guān)重要的,介紹算法的具體實現(xiàn)的資料已經(jīng)比較豐富了,筆者希望花更多的篇幅來介紹數(shù)據(jù)的處理和整個機器學(xué)習(xí)流程的串聯(lián)。
機器學(xué)習(xí)的整個流程大致可以分為6個步驟,整個流程按照數(shù)據(jù)流自上而下的順序排列,分別是場景解析、數(shù)據(jù)預(yù)處理、特征工程、模型訓(xùn)練、模型評估、離線/在線服務(wù)(見圖1-5),下面來逐一介紹下這些步驟的基本功能。
圖1-5 數(shù)據(jù)挖掘流程
(1)場景解析。場景解析就是先把整個業(yè)務(wù)邏輯想清楚,把自己的業(yè)務(wù)場景進行一個抽象,例如我們做一個廣告點擊預(yù)測,其實是判斷一個用戶看到廣告是點擊還是不點擊,這就可以抽象成二分類問題。然后我們根據(jù)是不是監(jiān)督學(xué)習(xí)以及二分類場景,就可以進行算法的選擇??偟膩碚f,場景抽象就是把業(yè)務(wù)邏輯和算法進行匹配。
(2)數(shù)據(jù)預(yù)處理。數(shù)據(jù)預(yù)處理主要進行數(shù)據(jù)的清洗工作,針對數(shù)據(jù)矩陣中的空值和亂碼進行處理,同時也可以對整體數(shù)據(jù)進行拆分和采樣等操作,也可以對單字段或者多字段進行歸一化或者標準化的處理。數(shù)據(jù)預(yù)處理階段的主要目標就是減少量綱和噪音數(shù)據(jù)對于訓(xùn)練數(shù)據(jù)集的影響。
(3)特征工程。特征工程是機器學(xué)習(xí)中最重要的一個步驟,這句話一點都沒有錯。特別是目前隨著開源算法庫的普及以及算法的不斷成熟,算法質(zhì)量并不一定是決定結(jié)果的最關(guān)鍵因素,特征工程的效果從某種意義上決定了最終模型的優(yōu)劣。通過一個例子說明一下特征工程的作用,2014 年某互聯(lián)網(wǎng)巨頭舉辦了一場大數(shù)據(jù)競賽,參賽隊伍在 1000 個以上,到最后,這里面幾乎所有的參賽隊伍都用了相同的一套算法,因為算法的優(yōu)劣是比較容易評判的,不同算法的特性是不一樣的,而且可供選擇的算法種類是有限的。但是特征的選取和衍生卻有極大的不定性,100 個人眼中可能有 100 種不同的特征,所以這種大賽到了后期,往往大家比拼的就是特征選取的好壞。在算法相對固定的情況下,可以說好特征決定了好結(jié)果。
(4)模型訓(xùn)練。如圖1-6所示的“邏輯回歸二分類”組件表示的是算法訓(xùn)練過程,訓(xùn)練數(shù)據(jù)經(jīng)過了數(shù)據(jù)預(yù)處理和特征工程之后進入算法訓(xùn)練模塊,并且生成模型。在“預(yù)測”組件中,讀取模型和預(yù)測集數(shù)據(jù)進行計算,生成預(yù)測結(jié)果。
圖1-6 模型訓(xùn)練
(5)模型評估。機器學(xué)習(xí)算法的計算結(jié)果一般是一個模型,模型的質(zhì)量直接影響接下來的數(shù)據(jù)業(yè)務(wù)。對于模型的成熟度的評估,其實就是對于整套機器學(xué)習(xí)流程的評估。
(6)離線/在線服務(wù)。在實際的業(yè)務(wù)運用過程中,機器學(xué)習(xí)通常需要配合調(diào)度系統(tǒng)來使用。具體的案例場景如下:每天用戶將當日的增量數(shù)據(jù)流入數(shù)據(jù)庫表里,通過調(diào)度系統(tǒng)啟動機器學(xué)習(xí)的離線訓(xùn)練服務(wù),生成最新的離線模型,然后通過在線預(yù)測服務(wù)(通常通過 Restful API,發(fā)送數(shù)據(jù)到服務(wù)器的算法模型進行計算,然后返回結(jié)果)進行實時的預(yù)測。具體架構(gòu)如圖1-7所示。
圖1-7 機器學(xué)習(xí)服務(wù)架構(gòu)
利用這種架構(gòu)就實現(xiàn)了離線訓(xùn)練和在線預(yù)測的結(jié)合,串聯(lián)了從離線到在線的整個業(yè)務(wù)邏輯。
1.3.2 數(shù)據(jù)源結(jié)構(gòu)
前面已經(jīng)介紹了機器學(xué)習(xí)的基本流程,下面將針對機器學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)進行介紹。如果把機器學(xué)習(xí)算法比作一個數(shù)據(jù)加工場,那么進入工廠的數(shù)據(jù)就是被算法用來加工的原材料,機器學(xué)習(xí)算法需要的數(shù)據(jù)是什么樣結(jié)構(gòu)的呢?如果經(jīng)常關(guān)注大數(shù)據(jù)相關(guān)的文章,基本會聽說過“結(jié)構(gòu)化數(shù)據(jù)”和“非結(jié)構(gòu)化數(shù)據(jù)”這兩個詞,當然這里面還能衍生出“半結(jié)構(gòu)化數(shù)據(jù)”,下面分別介紹一下這幾種數(shù)據(jù)的結(jié)構(gòu)。
(1)結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)是指我們在日常數(shù)據(jù)庫處理中經(jīng)??吹降娜罩绢悢?shù)據(jù)結(jié)構(gòu),是以矩陣結(jié)構(gòu)存儲在數(shù)據(jù)庫中的數(shù)據(jù),可以通過二維表結(jié)構(gòu)來顯示,如圖1-8所示。
圖1-8 結(jié)構(gòu)化數(shù)據(jù)示例
結(jié)構(gòu)化數(shù)據(jù)主要由兩個部分組成,一個部分是每個字段的含義,也就是圖1-8中的 age、sex、cp 等字段頭,另一個部分是每個字段的具體數(shù)值。通常來講,機器學(xué)習(xí)算法處理的數(shù)據(jù)都是結(jié)構(gòu)化的數(shù)據(jù),因為機器學(xué)習(xí)需要把數(shù)據(jù)帶入矩陣去做一些數(shù)學(xué)運算,結(jié)構(gòu)化數(shù)據(jù)原生是以矩陣形態(tài)存儲的,所以機器學(xué)習(xí)算法通常是只支持結(jié)構(gòu)化數(shù)據(jù)的。
結(jié)構(gòu)化數(shù)據(jù)中還有兩個非常重要的概念需要介紹一下,即特征(Feature)和目標列(Label)。這是機器學(xué)習(xí)算法中最常出現(xiàn)的兩個名詞,其中特征表示的是數(shù)據(jù)所描述對象的屬性,如用一組數(shù)據(jù)來形容人,那么這個人的身高、體重、性別和年齡都是特征。在結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)集中,每一列數(shù)據(jù)通常就對應(yīng)一個特征。
目標列表示的是每一份數(shù)據(jù)的打標結(jié)果,因為前面也介紹過,機器學(xué)習(xí)的原理其實是從歷史數(shù)據(jù)中來學(xué)習(xí)經(jīng)驗,目標列表示的是這一組數(shù)據(jù)的結(jié)果。例如,我們想通過一份體檢數(shù)據(jù)來預(yù)測對象是否有心臟病,需要先通過成千上萬份的訓(xùn)練數(shù)據(jù)來生成模型,這成千上萬份的訓(xùn)練數(shù)據(jù)需要打標,也就是說機器要事先知道什么樣體檢指標的人患病了,什么樣的人沒有患病,這樣才能學(xué)習(xí)出預(yù)測模型。通過一個例子來說明,如圖1-9所示為一份心臟病預(yù)測需要的數(shù)據(jù)結(jié)果,其中框起來的字段表示的是對象是否患病,這一列是目標列。其他3個字段 age、sex 和 cp 描述的是對象的特征,是特征列。
(2)半結(jié)構(gòu)化數(shù)據(jù)。半結(jié)構(gòu)化數(shù)據(jù)是指按照一定的結(jié)構(gòu)存儲,但不是二維的數(shù)據(jù)庫行存儲形態(tài)的數(shù)據(jù)。比較典型的半結(jié)構(gòu)化數(shù)據(jù)就是 XML 擴展名的存儲數(shù)據(jù),如圖1-10所示。
圖1-9 目標列說明
圖1-10 半結(jié)構(gòu)化數(shù)據(jù)
另一種半結(jié)構(gòu)化數(shù)據(jù)就是在數(shù)據(jù)表中,某些字段是文本型的,某些字段是數(shù)值型的。見表1-1。
表1-1 半結(jié)構(gòu)化數(shù)據(jù)
| 小李 | 老師 | 241 | 
| 小王 | 廚師 | 521 | 
| 小劉 | 司機 | 421 | 
| 小方 | 運動員 | 23636 | 
半結(jié)構(gòu)化數(shù)據(jù)常用于一些數(shù)據(jù)的傳遞,但是在機器學(xué)習(xí)算法相關(guān)的應(yīng)用方面還有一定距離,需要做數(shù)據(jù)轉(zhuǎn)換把半結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)為結(jié)構(gòu)化數(shù)據(jù)來進行操作。
(3)非結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)挖掘一直以來是機器學(xué)習(xí)領(lǐng)域的熱點話題,特別是隨著深度學(xué)習(xí)的發(fā)展,目前對于非結(jié)構(gòu)化數(shù)據(jù)的處理似乎找到了方向。典型的非結(jié)構(gòu)化數(shù)據(jù)就是圖像、文本或者是語音文件。這些數(shù)據(jù)不能以矩陣的結(jié)構(gòu)存儲,目前的做法也是通過把非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)為二進制存儲格式,然后通過算法來挖掘其中的信息。第6章和第7章將詳細介紹如何使用深度學(xué)習(xí)算法實現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)的處理。
以上就是對于真實業(yè)務(wù)場景下需要處理的3類數(shù)據(jù)結(jié)構(gòu)的介紹。機器學(xué)習(xí)算法對于結(jié)構(gòu)化數(shù)據(jù)的支持是比較好的,對于半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),在真實的業(yè)務(wù)場景下,通常是先把這兩類數(shù)據(jù)做轉(zhuǎn)化,然后才通過算法來進行數(shù)據(jù)挖掘。關(guān)于非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)為結(jié)構(gòu)化數(shù)據(jù)的方法在第4章也有相關(guān)介紹。
1.3.3 算法分類
上面對于機器學(xué)習(xí)的流程和數(shù)據(jù)源結(jié)構(gòu)都進行了介紹,下面對于算法的分類進行一個簡單的說明。機器學(xué)習(xí)算法包含了聚類、回歸、分類和文本分析等幾十種場景的算法,常用的算法種類為 30 種左右,而且還有很多的變形,我們將機器學(xué)習(xí)分為 4 種,分別是監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)和增強學(xué)習(xí)。
(1)監(jiān)督學(xué)習(xí)。監(jiān)督學(xué)習(xí)(Supervised Learning),是指每個進入算法的訓(xùn)練數(shù)據(jù)樣本都有對應(yīng)的期望值也就是目標值,進行機器學(xué)習(xí)的過程實際上就是特征值和目標隊列映射的過程。例如,我們已知一只股票的歷史走勢以及它的一些公司盈利、公司人數(shù)等信息,想要預(yù)測這只股票未來的走勢。那么在訓(xùn)練算法模型的過程中,就是希望通過計算得到一個公式,可以反映公司盈利、公司人數(shù)這些信息對于股票走勢的影響。通過過往的一些數(shù)據(jù)的特征以及最終結(jié)果來進行訓(xùn)練的方式就是監(jiān)督學(xué)習(xí)法。監(jiān)督學(xué)習(xí)算法的訓(xùn)練數(shù)據(jù)源需要由特征值以及目標隊列兩部分組成。
如圖1-11所示,ifhealth 是目標隊列,age、sex 和 cp 為特征隊列,這就是一個典型的監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)集。因為監(jiān)督學(xué)習(xí)依賴于每個樣本的打標,可以得到每個特征序列映射到的確切的目標值是什么,所以常用于回歸以及分類場景。常見的監(jiān)督學(xué)習(xí)算法見表1-2。
表1-2 監(jiān)督學(xué)習(xí)
| K 近鄰、樸素貝葉斯、決策樹、隨機森林、GBDT 和支持向量機等 | 
| 邏輯回歸、線性回歸等 | 
監(jiān)督學(xué)習(xí)的一個問題就是獲得目標值的成本比較高。例如,我們想預(yù)測一個電影的好壞,那么在生成訓(xùn)練集的時候要依賴于對大量電影的人工標注,這樣的人力代價使得監(jiān)督學(xué)習(xí)在一定程度上是一種成本比較高的學(xué)習(xí)方法。如何獲得大量的標記數(shù)據(jù)一直是監(jiān)督學(xué)習(xí)面臨的一道難題。
圖1-11 監(jiān)督學(xué)習(xí)
(2)無監(jiān)督學(xué)習(xí)。無監(jiān)督學(xué)習(xí)(Unsupervised Learning),學(xué)習(xí)上面講的監(jiān)督學(xué)習(xí)的概念之后,其實無監(jiān)督學(xué)習(xí)就比較好理解了。無監(jiān)督學(xué)習(xí)就是指訓(xùn)練樣本不依賴于打標數(shù)據(jù)的機器學(xué)習(xí)算法。既然是沒有目標隊列,也就缺少了特征環(huán)境下的最終結(jié)果,那么這樣的數(shù)據(jù)可能對一些回歸和分類的場景就不適合了。無監(jiān)督學(xué)習(xí)主要是用來解決一些聚類場景的問題,因為當我們的訓(xùn)練數(shù)據(jù)缺失了目標值之后,能做的事情就只剩下比對不同樣本間的距離關(guān)系。常見的無監(jiān)督學(xué)習(xí)算法見表1-3。
表1-3 半監(jiān)督學(xué)習(xí)
| K-Means、DBSCAN 等 | 
| 協(xié)同過濾等 | 
相較于監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí)的一大好處就是不依賴于打標數(shù)據(jù),在很多特定條件下,特別是打標數(shù)據(jù)需要依靠大量人工來獲得的情況下可以嘗試使用無監(jiān)督學(xué)習(xí)或者半監(jiān)督學(xué)習(xí)來解決問題。
(3)半監(jiān)督學(xué)習(xí)。半監(jiān)督學(xué)習(xí)(Semi-supervised Learning),是最近幾年逐漸開始流行的一種機器學(xué)習(xí)種類。上文中也提到,在一些場景下獲得打標數(shù)據(jù)是很耗費資源的,但是無監(jiān)督學(xué)習(xí)對于解決分類和回歸這樣場景的問題又有一些難度。所以人們開始嘗試通過對樣本的部分打標來進行機器學(xué)習(xí)算法的使用,這種部分打標樣本的訓(xùn)練數(shù)據(jù)的算法應(yīng)用,就是半監(jiān)督學(xué)習(xí)。目前很多半監(jiān)督學(xué)習(xí)算法都是監(jiān)督學(xué)習(xí)算法的變形,本書將介紹一種半監(jiān)督學(xué)習(xí)算法——標簽傳播算法。其實目前半監(jiān)督算法已經(jīng)有很多的應(yīng)用了,推薦大家去深入了解。
(4)強化學(xué)習(xí)。強化學(xué)習(xí)(Reinforcement Learning),是一種比較復(fù)雜的機器學(xué)習(xí)種類,強調(diào)的是系統(tǒng)與外界不斷地交互,獲得外界的反饋,然后決定自身的行為。強化學(xué)習(xí)目前是人工智能領(lǐng)域的一個熱點算法種類,典型的案例包括無人汽車駕駛和阿爾法狗下圍棋。本書介紹的分詞算法隱馬爾科夫就是一種強化學(xué)習(xí)的思想。
上面就是關(guān)于監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)和強化學(xué)習(xí)的一些介紹。監(jiān)督學(xué)習(xí)主要解決的是分類和回歸的場景,無監(jiān)督學(xué)習(xí)主要解決聚類場景,半監(jiān)督學(xué)習(xí)解決的是一些打標數(shù)據(jù)比較難獲得的分類場景,強化學(xué)習(xí)主要是針對流程中不斷需要推理的場景。本書對于這4類機器學(xué)習(xí)算法都有介紹,具體的分類見表1-4,方便大家有針對性的學(xué)習(xí)。
表1-4 算法分類
| 邏輯回歸、K 近鄰、樸素貝葉斯、隨機森立、支持向量機 | 
| K-means、DBSCAN、協(xié)同過濾、LDA | 
| 標簽傳播 | 
| 隱馬爾可夫 | 
1.3.4 過擬合問題
機器學(xué)習(xí)模型訓(xùn)練的過程中會遇到非常多的問題,如參數(shù)或者梯度的設(shè)置不合理、數(shù)據(jù)的清洗不夠徹底,但是如果問一個數(shù)據(jù)挖掘工程師什么問題是數(shù)據(jù)挖掘領(lǐng)域中最常見的問題,他的答案八成是“過擬合”,這也是為什么我們要單獨拿出一小節(jié)來講一下數(shù)據(jù)挖掘過程中的過擬合問題。
過擬合(Over-fitting),從字面的意義上理解的話就是過度擬合的意思,常發(fā)生在線性分類器或者線性模型的訓(xùn)練和預(yù)測當中。過擬合現(xiàn)象是在數(shù)據(jù)挖掘過程中經(jīng)常會遇到的問題,如通過訓(xùn)練集訓(xùn)練了一個模型,這個模型對于訓(xùn)練集的預(yù)測準確率很高,可以達到95%,但是我們換一份數(shù)據(jù)集進行預(yù)測,發(fā)現(xiàn)準確率只有30%,出現(xiàn)這種情況的原因很有可能是訓(xùn)練的過擬合現(xiàn)象。
過擬合的原理就是機器學(xué)習(xí)算法過度學(xué)習(xí)了訓(xùn)練集數(shù)據(jù),聽上去有點難以理解,下面通過一個例子進行解釋。假設(shè)我們有一組二維數(shù)據(jù)展示在坐標系當中,我們想對這個二維數(shù)據(jù)進行一個線性的回歸訓(xùn)練。如果擬合出的曲線是如圖 1-12 所示的虛線,其實是一種欠擬合(underfitting)的形式,曲線擬合的并不理想,因為并沒有通過回歸算法很好地擬合出一種符合數(shù)據(jù)分布的曲線。
圖1-12 線性擬合曲線一
我們再來看看圖1-13。
圖1-13 線性擬合曲線二
如果最終擬合出來的是如圖1-13所示情況,就是一種比較理想的狀況,我們看到最終的曲線走勢已經(jīng)幾乎刻畫了數(shù)據(jù)的分布,這種曲線是比較理想的。那么什么是過擬合呢?我們來看下圖1-14。
圖1-14 線性擬合曲線三
如圖1-14所示這種情況是典型的過擬合,圖中的曲線已經(jīng)跟數(shù)據(jù)分布完全一致。那么有的人可能會問,做線性回歸的目的不就是為了找到最符合數(shù)據(jù)走向的曲線么,為什么當我們拿到的結(jié)果跟數(shù)據(jù)走向完全匹配的時候反而不好呢?這是因為訓(xùn)練線性回歸曲線或者線性分類器的目的是要對于其他數(shù)據(jù)集進行分類或者預(yù)測。如果在針對訓(xùn)練集做曲線擬合的時候做得過于“完美”,那么當我們針對于其他預(yù)測集進行預(yù)測的時候,這套模型很有可能會失準,因為這套模型在訓(xùn)練的時候過度地接近于訓(xùn)練集的特征,缺乏魯棒性。所以在機器學(xué)習(xí)訓(xùn)練過程中,100%的擬合訓(xùn)練集數(shù)據(jù)并不一定是好的。
通過前面的介紹,我們已經(jīng)明白了過擬合發(fā)生的現(xiàn)象和原理,那么究竟是什么原因?qū)е铝诉^擬合問題的出現(xiàn)呢?原因可以總結(jié)為以下幾種。
- 訓(xùn)練數(shù)據(jù)集樣本單一,如訓(xùn)練樣本只有白色鴨子的數(shù)據(jù),我們拿生成的模型去預(yù)測黑鴨子肯定是不對的。所以在做訓(xùn)練的過程中,要求訓(xùn)練樣本要盡可能地全面,覆蓋所有的數(shù)據(jù)類型。
- 訓(xùn)練樣本噪音數(shù)據(jù)干擾過大,噪音數(shù)據(jù)是指數(shù)據(jù)集中的干擾數(shù)據(jù)。過多的噪音數(shù)據(jù)會導(dǎo)致模型記錄了很多噪音特征,忽略了輸入和輸出之間的關(guān)系。
- 模型過于復(fù)雜,模型參數(shù)太多往往也是造成過擬合現(xiàn)象的一個重要因素。所以一個成熟的模型不一定是非常復(fù)雜的,而是要求模型對于不同的數(shù)據(jù)集都有穩(wěn)定的輸出表現(xiàn)。
針對過擬合這樣的常見性問題,其實已經(jīng)有了很多預(yù)防和解決的辦法如下所示。
- 在訓(xùn)練和建立模型的時候,一定要從相對簡單的模型開始,不要一上來就把模型調(diào)得非常復(fù)雜、特征非常多,這樣很容易造成過擬合現(xiàn)象的發(fā)生。而且當模型過于復(fù)雜而造成過擬合現(xiàn)象發(fā)生之后,也比較難于排查具體的問題出在哪一部分特征。
- 數(shù)據(jù)的采樣,一定要盡可能地覆蓋全部數(shù)據(jù)種類。另外,數(shù)據(jù)需要經(jīng)過清洗后再進行算法訓(xùn)練,否則如果混入了大量噪聲數(shù)據(jù),會加大過擬合問題發(fā)生的概率。
- 在模型的訓(xùn)練過程中,我們也可以利用數(shù)學(xué)手段預(yù)防過擬合現(xiàn)象的發(fā)生,可以在算法中添加懲罰函數(shù)來預(yù)防過擬合,這里如果想詳細了解可以參考正則化 L1、L2 規(guī)范,本書就不對這部分內(nèi)容展開來講了。
以上對于過擬合問題進行了基本的描述,而且也介紹了問題發(fā)生的原因以及預(yù)防的方法。因為過擬合問題是在使用機器學(xué)習(xí)算法的過程中非常有可能碰到的問題,所以掌握這方面的知識以及應(yīng)對手段是非常重要的。希望通過本節(jié)的學(xué)習(xí),大家可以在模型訓(xùn)練當中有意識地避免過擬合問題的發(fā)生。
1.3.5 結(jié)果評估
前文介紹了一些機器學(xué)習(xí)算法在具體數(shù)據(jù)挖掘過程中可能會遇到的一些概念和名詞,我們知道機器學(xué)習(xí)算法的最終目的是生成模型,模型的好壞需要通過一些指標來評估,現(xiàn)在就來介紹一下在機器學(xué)習(xí)算法中可能用到的一些關(guān)于結(jié)果評估的概念。常用到的概念可能包括精確率、召回率、F1 值、ROC 和 AUC 幾種,看上去概念有點多,因為每個指標都是從不同維度來對結(jié)果進行評估,下面將分別介紹這幾個概念的含義。
(1)精確率、召回率、F1 值。因為精確率(Precision)、召回率(Recall)和 F1(F-Measure)值常被放在一起作比較,所以把相關(guān)的這3個指標放在一起介紹。計算這3個指標還需要先了解下 TP、TN、FP 和 FN 這4個指標的含義。
- TP(True Positive):本來是正樣本,被模型預(yù)測為正樣本。
- TN(True Negative):本來是負樣本,被模型預(yù)測為負樣本。
- FP(False Positive):本來是負樣本,被模型預(yù)測為正樣本。
- FN(False Negative):本來是正樣本,被模型預(yù)測為負樣本。
上面這4個概念讀上去有點難以理解,我們通過一個實際的案例講解一下。例如有一個預(yù)測集,里面有500個女生和100個男生,需要通過機器學(xué)習(xí)生成模型,盡可能地區(qū)分數(shù)據(jù)集中的女生,所以女生是正樣本,假如我們最終的預(yù)測結(jié)果是70個女生和20個男生。下面計算精確率、召回率以及 F1 值,首先要計算 TP、TN、FP 和 FN 這4個值。在這個案例里面,TP 為本來是女生又被預(yù)測為女生的人數(shù),所以 TP 的值為70;FP表示本來是男生被預(yù)測為女生的人數(shù),FP 的值為20;FN 表示本來是女生但被預(yù)測為男生的人數(shù),FN 的值為500?70=430。
最終精確率、召回率、F1 值的公式如下。
通過上面的公式可以看出,其實精確率的概念通俗來講就是模型在預(yù)測的時候正確的比例。召回率表示的是在預(yù)測到的正樣例占全部正樣例的比例。這可以看到精確率和召回率是對模型的兩個維度的評估,前者評估的是準確性,后者評估的是覆蓋率。當然在實際的模型評估中,我們希望精確率和召回率都盡可能高,但是實際上這兩個指標是相互矛盾的,為了更均衡的評估精確率和召回率,我們創(chuàng)建了 F1 值。F1 值表達的是精確率和召回率的綜合評估,現(xiàn)在很多的模型評估都是通過 F1 值來做,就是考慮到了 F1 值可以把這兩個指標結(jié)合在一起來評估。
(2)ROC 和 AUC。ROC(Receiver Operating Characteristic Curve)曲線是常用的二分類場景的模型評估算法曲線,ROC曲線的樣例如圖1-15所示。
圖1-15 ROC 曲線
圖1-15中的齒狀弧形曲線就是 ROC 曲線,這個曲線的橫軸為上面提到的 FP 值,TP 值是縱軸。如何來評估模型的好壞呢?通過 ROC 曲線可以清晰地展示出來,只要是模型曲線越接近于左上角就說明模型的效果越好。通過 AUC 值來表示 ROC 曲線與橫軸圍起來的面積(也就是圖1-15中有顏色覆蓋的部分),這個 AUC 值越大表示模型的效果越好。AUC 的取值是0到1,通常大于0.5,當 AUC 的取值達到0.9以上時,證明這個模型的效果是比較不錯的。
上面介紹了 ROC 和 AUC 兩個指標的概念,AUC 是通過 ROC 曲線計算出來的面積實現(xiàn)的。AUC 和 F1 值一樣,都是通過一個數(shù)值來對于最終的結(jié)果進行評估的。ROC 的作用更多是通過對于曲線的光滑程度以及曲線的斜率來獲取模型內(nèi)包含的信息。
1.4 本章小結(jié)
本章作為全書的開篇章節(jié),通過對于人工智能領(lǐng)域的發(fā)展歷史引出了本書的主角——機器學(xué)習(xí)算法,其實機器學(xué)習(xí)算法已經(jīng)貫穿了我們的日常生活,正是因為這些智能算法的普及,所以越來越多的人把目光瞄向了這一新生的技術(shù)。我們通過舉例介紹了機器學(xué)習(xí)算法的發(fā)展現(xiàn)狀,幫助讀者梳理了這一學(xué)科的應(yīng)用領(lǐng)域,另外通過對于一些基礎(chǔ)概念的介紹,幫助初學(xué)者對于機器學(xué)習(xí)入門。有了上述背景,下面就正式開始對整個機器學(xué)習(xí)全流程的介紹。
第02章:場景解析
第03章:數(shù)據(jù)預(yù)處理(上)
第03章:數(shù)據(jù)預(yù)處理(下)
第04章:特征工程(上)
第04章:特征工程(中)
第04章:特征工程(下)
第05章:機器學(xué)習(xí)算法——常規(guī)算法(上)
第05章:機器學(xué)習(xí)算法——常規(guī)算法(中)
第05章:機器學(xué)習(xí)算法——常規(guī)算法(下)
第06章:機器學(xué)習(xí)算法——深度學(xué)習(xí)(上)
第06章:機器學(xué)習(xí)算法——深度學(xué)習(xí)(下)
第07章:常見機器學(xué)習(xí)工具介紹(上)
第07章:常見機器學(xué)習(xí)工具介紹(中)
第07章:常見機器學(xué)習(xí)工具介紹(下)
第08章:業(yè)務(wù)解決方案(上)
第08章:業(yè)務(wù)解決方案(中)
第08章:業(yè)務(wù)解決方案(下)
第09章:知識圖譜(上)
第09章:知識圖譜(下)
閱讀全文: http://gitbook.cn/gitchat/geekbook/5a377733d7fd13649973b0dc
總結(jié)
 
                            
                        - 上一篇: 【floyd】【bitset】洛谷 P1
- 下一篇: 切片基础slice
