中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

新手福利:免費百頁機器學習入門書

2018-12-21    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

近日,Gartner 公司機器學習團隊負責人、人工智能博士 Andriy Burkov 開源了自己寫的機器學習入門書——《The Hundred-Page Machine Learning Book》。這本書短小精悍,只有一百頁左右,包含大量自 20 世紀 60 年代以來具有重要實用價值的機器學習材料。它既適用于初學者,也適用于有經(jīng)驗的從業(yè)者。

 

 

作者本著「先讀后買」的原則,允許讀者免費下載。

下載地址:http://themlbook.com/wiki/doku.php

本書是陸陸續(xù)續(xù)寫的,之前已經(jīng)公開一部分內(nèi)容,近日終于完成初稿。

初稿目錄

 

 

為讓讀者一睹為快,機器之心將從第八章中截取一部分內(nèi)容進行介紹。

新書試讀

第八章介紹了在某些情況下可能會用到的實踐技術。這些技術被應用在一些非常具體的環(huán)境中。在許多實際情況下,你很可能不需要使用這些技術,但有時它們非常實用。本章包含八個小節(jié),分別是:處理不平衡數(shù)據(jù)集、組合模型、訓練神經(jīng)網(wǎng)絡、高級正則化、處理多輸入問題、處理多輸出問題、遷移學習及算法效率。以下是其中兩個小節(jié):

組合模型

集成算法,如隨機森林,通常會組合具有相同性質(zhì)的模型。它們通過組合數(shù)百個較弱的模型來提高性能。在實踐中,有時我們可以通過組合利用不同學習算法得出的較強模型來獲得額外的性能提升。在這種情況下,我們通常只需要兩三個模型。

有三種典型的模型組合方式:

取平均
多數(shù)投票
堆棧

取平均適用于回歸以及那些返回分類分數(shù)的分類模型。你只需將所有模型應用到輸入 x,然后平均預測值,我們可以把這些模型稱為基礎模型。為了查看平均的模型效果是否比每個單獨的算法更好,你可以使用自己選擇的度量在驗證集上測試它。

多數(shù)投票適用于分類模型。你可以把所有基礎模型應用到輸入 x,然后返回所有預測值中占多數(shù)的類。如果出現(xiàn)平局,你要么隨機選擇一個類,或者返回一條錯誤信息(如果錯誤分類會導致成本巨大)。

堆棧包括構建元模型,該模型將基礎模型的輸出作為輸入。假如你想組合分類器 f_1 和分類器 f_2,且它們都預測同一組類別。為了給堆棧模型創(chuàng)建訓練樣本,你設置了。

 

如果有些基礎模型不僅返回了一個類,還返回了對每個類的分數(shù),你也可以把這些分數(shù)作為特征使用。

為了訓練堆棧模型,建議使用來自訓練集的樣本,并使用交叉驗證為堆棧模型調(diào)參。

顯而易見,你要確保堆棧模型在驗證集上的表現(xiàn)要比每個用來堆棧的基礎模型更好,否則就沒有必要這么做。

組合多個模型最終能夠帶來更好性能的原因是,多個無關聯(lián)的較強模型更有可能一致妥協(xié)正確的結果。這里的關鍵詞是「無關聯(lián)(uncorrelated)」。不同的較強模型最好是通過不同的特征或性質(zhì)不同的算法來獲得,如支持向量機和隨機森林。組合不同版本的決策樹學習算法或具有不同超參數(shù)的支持向量機可能不會帶來很大的性能提升。

算法效率

并非所有用于解決問題的算法都很實用。有些算法可能很快,有些卻很慢。有些問題可以用快速算法解決,但其他問題可能只能用較慢的算法解決。

算法分析是計算機科學的一個研究方向,著重測定、分析算法的復雜性。大 O 符號用于對算法進行分類,依據(jù)的是算法的運行時間及隨輸入大小增長產(chǎn)生的占用空間需求。

例如,假設我們要在大小為 N 的一組示例 S 中尋找兩個最遙遠的一維示例。我們可以用 Python 寫出如下所示的算法來解決這個問題:

 

 

在上述算法中,我們遍歷 S 中所有的值,在首次遍歷的每次迭代中,我們再次遍歷 S 中所有的值。因此,上述算法對數(shù)字進行了 N^2 次比較。如果我們把比較(一次)、abs(兩次)和賦值(兩次)運算所花費的時間作為單位時間,那么這個算法的時間復雜度(或者簡單地說,復雜度)至多是 5N^2。在最壞的情況下測定算法的復雜度時使用大 O 符號。對于上述算法,我們使用大 O 符號將算法的復雜度寫為 O(N^2)(忽略常數(shù),如上述例子中的 5)。

這一問題還可以用下面這個算法解決:

 

 

在上述算法中,我們只遍歷 S 中所有的值一次,因此算法復雜度為 O(N)。在這種情況下,我們認為后面這個算法比前面的快。

通常來講,如果一個算法復雜度的輸入大小可以用大 O 符號寫成多項式的形式,這個算法就被視為高效算法。因此 O(N) 和 O(N^2) 都是高效算法。然而,對于比較大的輸入,O(N^2) 算法可能也會很慢。在大數(shù)據(jù)領域,科學家經(jīng)常用到的是 O(logN) 算法。

從實用的角度來講,在實施你的算法時應該盡可能避免遍歷。你應該將運算用在矩陣和向量,而不是遍歷上。計算 wx 的算法如下:

 

 

使用合適的數(shù)據(jù)結構。如果一個集合中的元素順序并不重要,那么要用 set 而不是 list。當 S 被認定為 set 時,用于驗證 S 中的某個示例的運算是高效的,當 S 被認定為一個 list 時,該運算是低效的。

用來優(yōu)化 Python 代碼的另一個重要數(shù)據(jù)結構是 dict,也叫字典或哈希圖(hashmap)。它允許你用非?焖賹ふ益I值的方法定義一個鍵值對的集合。

除非你知道自己在做什么,否則請盡量使用主流庫來寫代碼?茖W Python 包(如 numpy、scipy 和 scikit-learn)是由考慮到效率的資深科學家、工程師創(chuàng)建的。這些包擁有很多用 C 語言實現(xiàn)以達到最大速度的方法。

如果你需要迭代大量元素,可以使用創(chuàng)建函數(shù)的生成器,該函數(shù)一次返回一個而不是所有元素。

使用 Python 中的 cProfile 包來找出代碼中的不足。

最后,當從算法的角度無法再改進代碼時,你還可以通過以下方式進一步提高代碼的運行速度:

用 multiprocessing 包并行運行計算
用 PyPy、Numba 或類似工具將 Python 代碼編譯成快速、優(yōu)化的機器代碼。

標簽: 大數(shù)據(jù) 代碼 網(wǎng)絡

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:為什么說 Pravega 是流處理統(tǒng)一批處理的最后一塊拼圖?

下一篇:大數(shù)據(jù)應用發(fā)展史:從搜索引擎到人工智能