機器學習13大規模數據集

大型數據集的學習(Learning With Large Datasets)

如果我們有一個低方差的模型, 增加數據集的規模可以幫助你獲得更好的結果。?

我們應該怎樣應對一個有 100 萬條記錄的訓練集??

以線性回歸模型為例,每一次梯度下降迭代,我們都需要計算訓練集的誤差的平方和,如果我們的學習算法需要有 20 次迭代,這便已經是非常大的計算代價。?

首先應該做的事是去檢查一個這么大規模的訓練集是否真的必要,也許我們只用 1000?個訓練集也能獲得較好的效果,我們可以繪制學習曲線來幫助判斷。



—————————————————————————————————————————————————————————


隨機梯度下降法(Stochastic Gradient Descent)

如果我們一定需要一個大規模的訓練集, 我們可以嘗試使用隨機梯度下降法來代替批量梯度下降法。

在隨機梯度下降法中,我們定義代價函數為一個單一訓練實例的代價:


隨機梯度下降算法為:

首先:對訓練集隨機“洗牌”;

然后:


隨機梯度下降算法在每一次計算之后便更新參數 θ, 而不需要首先將所有的訓練集求和。

在梯度下降算法還沒有完成一次迭代時, 隨機梯度下降算法便已經走出了很遠。?

但是這樣的算法存在的問題是,不是每一步都是朝著”正確”的方向邁出的。

因此算法雖然會逐漸走向全局最小值的位置,但是可能無法站到那個最小值的那一點,而是在最小值點附近徘徊。


—————————————————————————————————————————————————————————


小批量梯度下降(Mini-Batch Gradient Descent)

小批量梯度下降算法是介于批量梯度下降算法和隨機梯度下降算法之間的算法, 每計算常數 b 次訓練實例,便更新一次參數 θ。


通常我們會令 b 在 2-100 之間。這樣做的好處在于,我們可以用向量化的方式來循環?b 個訓練實例,如果我們用的線性代數函數庫比較好,能夠支持平行處理,那么算法的總體表現將不受影響(與隨機梯度下降相同)。


—————————————————————————————————————————————————————————


在線學習(Online Learning)

一種新的大規模的機器學習機制,叫做在線學習機制。

今天,許多大型網站使用不同版本的在線學習機制算法,從大批的涌入又離開網站的用戶身上進行學習。

特別要提及的是, 如果你有一個由連續的用戶流引發的連續的數據流,進入你的網站,你能做的是使用一個在線學習機制,從數據流中學習用戶的偏好,然后使用這些信息來優化一些關于網站的決策。


在線學習算法指的是對數據流而非離線的靜態數據集的學習。

許多在線網站都有持續不斷的用戶流,對于每一個用戶,網站希望能在不將數據存儲到數據庫中便順利地進行算法學習。?

在線學習的算法與隨機梯度下降算法有些類似, 我們對單一的實例進行學習, 而非對一個提前定義的訓練集進行循環。


一旦對一個數據的學習完成了,我們便可以丟棄該數據,不需要再存儲它了。

這種方式的好處在于,我們的算法可以很好的適應用戶的傾向性,算法可以針對用戶的當前行為不斷地更新模型以適應該用戶。


這些問題中的任何一個都可以被歸類到標準的,擁有一個固定的樣本集的機器學習問題中。

或許,你可以運行一個你自己的網站,嘗試運行幾天,然后保存一個數據集,一個固定的數據集,然后對其運行一個學習算法。

但是這些是實際的問題,即大公司會獲取如此多的數據,真的沒有必要來保存一個固定的數據集, 取而代之的是你可以使用一個在線學習算法來連續的學習,從這些用戶不斷產生的數據中來學習。 這就是在線學習機制。

然后就像我們所看到的,我們所使用的這個算法與隨機梯度下降算法非常類似,唯一的區別的是,我們不會使用一個固定的數據集,我們會做的是獲取一個用戶樣本,從那個樣本中學習, 然后丟棄那個樣本并繼續下去, 而且如果你對某一種應用有一個連續的數據流,這樣的算法可能會非常值得考慮。

當然,在線學習的一個優點就是,如果你有一個變化的用戶群,又或者你在嘗試預測的事情,在緩慢變化,就像你的用戶的品味在緩慢變化,這個在線學習算法,可以慢慢地調試你所學習到的假設,將其調節更新到最新的用戶行為。


————————————————————————————————————————————————————————



Map Reduce and Data Parallelism


Map Reduce and Data Parallelism對于大規模機器學習問題而言是非常重要的概念。

之前提到, 如果我們用批量梯度下降算法來求解大規模數據集的最優解,我們需要對整個訓練集進行循環,計算偏導數和代價,再求和,計算代價非常大。如果我們能夠將我們的數據集分配給不多臺計算機,讓每一臺計算機處理數據集的一個子集,然后我們將計所的結果匯總在求和。這樣的方法叫做MapReduce。


具體而言,如果任何學習算法能夠表達為,對訓練集的函數的求和,那么便能將這個任務分配給多臺計算機(或者同一臺計算機的不同 CPU 核心),以達到加速處理的目的。

?
例如, 我們有 400 個訓練實例, 我們可以將批量梯度下降的求和任務分配給 4 臺計算機進行處理:



很多高級的線性代數函數庫已經能夠利用多核 CPU 的多個核心來并行地處理矩陣運算,這也是算法的向量化實現如此重要的緣故(比調用循環快)。




Map Reduce and Data Parallelism
Map Reduce and Data Parallelism

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387240.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

svn認證失敗,解決方案

在svnserve.conf:文件中去掉authz-db authz前面的#號,會出現的認證失敗。 造成此原因的主要問題就是authz文件中權限沒有配置好。 例如: 創建prj1庫 svnadmin create prj1 修改配置文件 svnserve.conf: [general] anon-access read auth-access write…

Python機器學習庫sklearn的安裝

Python機器學習庫sklearn的安裝 scikit-learn是Python的一個開源機器學習模塊,它建立在NumPy,SciPy和matplotlib模塊之上能夠為用戶提供各種機器學習算法接口,可以讓用戶簡單、高效地進行數據挖掘和數據分析。 Ubuntu14.04系統上安裝 安裝num…

Java07多線程

14 多線程 操作系統的多任務(multitasking):在同一時刻運行多個程序的能力。 多線程在較低的層次上擴展了多任務的概念:一個程序同時執行多個任務。 通常,每一個任務稱為一個線程(tread)&…

MySQL字段拼接Concat

有時候,從數據庫中拿出的數據并不是我們想要的格式,比如,有以下的vendors表 如果,想以 name (location)的格式展現出來,那么就要用到MySQL的Concat了。 Concat()拼接串,即把多個串連接起來形成一個較長的串…

使用pycharm調用模塊后字體變灰 是什么原因呢?

使用pycharm調用模塊后字體變灰 是什么原因呢?點擊小燈泡提示出現以下內容:This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-l…

操作系統01概述

第一章 概論 《Operating System Internals and Design Principles》 《Applied Operating System Concepts》 操作系統——裸機上的第一層軟件,它是對硬件系統功能的首次擴充,填補人與機器之間的鴻溝。 1.1 操作系統與計算機同在 1.2 對操作系統的…

CNN訓練模型 花卉

一、CNN訓練模型 模型尺寸分析:卷積層全都采用了補0,所以經過卷積層長和寬不變,只有深度加深。池化層全都沒有補0,所以經過池化層長和寬均減小,深度不變。http://download.tensorflow.org/example_images/flower_photo…

Linux re

正則表達式并不是一個工具程序,而是一個字符串處理的標準依據,如果想要以正則表達式的方式處理字符串,就得使用支持正則表達式的工具,例如grep、vi、sed、asw等。 注意:ls不支持正則表達式。 grep 正則表達式: 注意gr…

操作系統02進程管理Process_Description_and_Control

作業的基本概念:用戶再一次計算過程中或一次事務處理過程中,要求計算機系統所做的工作的集合。 包含多個程序、多個數據、作業控制說明書 系統調用時操作系統提供給編程人員的唯一接口。 1、文件操作類; 2、進程控制類; 3、資…

藍橋杯 方格填數(全排列+圖形補齊)

方格填數 如下的10個格子 填入0~9的數字,同一數字不能重復填。要求:連續的兩個數字不能相鄰。(左右、上下、對角都算相鄰) 一共有多少種可能的填數方案? 請填寫表示方案數目的整數。注意:你提交的應該是一個…

操作系統03進程管理Process_Scheduling

2 Process Scheduling >Type of scheduling >Scheduling Criteria (準則) >Scheduling Algorithm >Real-Time Scheduling (嵌入式系統) 2.1 Learning Objectives By the end of this lecture you should be able to Explain what is Response Time 響應時間-…

花卉分類CNN

tensorflow升級到1.0之后,增加了一些高級模塊: 如tf.layers, tf.metrics, 和tf.losses,使得代碼稍微有些簡化。 任務:花卉分類 版本:tensorflow 1.3 數據:http://download.tensorflow.org/example_images/f…

【模板】可持久化線段樹

可持久化線段樹/主席樹: 顧名思義,該數據結構是可以訪問歷史版本的線段樹。用于解決需要查詢歷史信息的區間問題。 在功能與時間復雜度上與開n棵線段樹無異,然而空間復雜度從$O(n\times nlogn)$降到了$O(nlogn)$。 實現方法: 每次…

skimage庫需要依賴 numpy+mkl 和scipy

skimage庫需要依賴 numpymkl 和scipy1、打開運行,輸入cmd回車,輸入python回車,查看python版本2、在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 中,根據自己python版本下載需要的包 (因為我的是python 2.7.13 …

操作系統04進程同步與通信

4.1 進程間的相互作用 4.1.1 進程間的聯系資源共享關系相互合作關系臨界資源應互斥訪問。臨界區:不論是硬件臨界資源,還是軟件臨界資源,多個進程必須互斥地對它們進行訪問。把在每個進程中訪問臨界資源的那段代碼稱為臨界資源區。顯然&#x…

oracle遷移到greenplum的方案

oracle數據庫是一種關系型數據庫管理系統,在數據庫領域一直處于領先的地位,適合于大型項目的開發;銀行、電信、電商、金融等各領域都大量使用Oracle數據庫。 greenplum是一款開源的分布式數據庫存儲解決方案,主要關注數據倉庫和BI…

CNN框架的搭建及各個參數的調節

本文代碼下載地址:我的github本文主要講解將CNN應用于人臉識別的流程,程序基于PythonnumpytheanoPIL開發,采用類似LeNet5的CNN模型,應用于olivettifaces人臉數據庫,實現人臉識別的功能,模型的誤差降到了5%以…

操作系統05死鎖

進程管理4--Deadlock and Starvation Concurrency: Deadlock and Starvation 內容提要 >產生死鎖與饑餓的原因 >解決死鎖的方法 >死鎖/同步的經典問題:哲學家進餐問題 Deadlock 系統的一種隨機性錯誤 Permanent blocking of a set of processes that eith…

CNN tensorflow 人臉識別

數據材料這是一個小型的人臉數據庫,一共有40個人,每個人有10張照片作為樣本數據。這些圖片都是黑白照片,意味著這些圖片都只有灰度0-255,沒有rgb三通道。于是我們需要對這張大圖片切分成一個個的小臉。整張圖片大小是1190 942&am…

數據結構01緒論

第一章緒論 1.1 什么是數據結構 數據結構是一門研究非數值計算的程序設計問題中,計算機的操作對象以及他們之間的關系和操作的學科。 面向過程程序數據結構算法 數據結構是介于數學、計算機硬件、計算機軟件三者之間的一門核心課程。 數據結構是程序設計、編譯…