神经网络使用情景
神經(jīng)網(wǎng)絡(luò)使用情景
- 人臉/圖像識別
- 語音搜索
- 文本到語音(轉(zhuǎn)錄)
- 垃圾郵件篩選(異常情況探測)
- 欺詐探測
- 推薦系統(tǒng)(客戶關(guān)系管理、廣告技術(shù)、避免用戶流失)
- 回歸分析
為何選擇Deeplearning4j?
- 功能多樣的N維數(shù)組類,為Java和Scala設(shè)計
- 與GPU集合
- 可在Hadoop、Spark上實現(xiàn)擴(kuò)縮
- Canova:機(jī)器學(xué)習(xí)庫的通用向量化工具
- ND4J:線性代數(shù)庫,較Numpy快一倍
Deeplearning4j包括了分布式、多線程的深度學(xué)習(xí)框架,以及普通的單線程深度學(xué)習(xí)框架。定型過程以集群進(jìn)行,也就是說,Deeplearning4j可以快速處理大量數(shù)據(jù)。神經(jīng)網(wǎng)絡(luò)可通過[迭代化簡]平行定型,與Java、Scala和Clojure均兼容。Deeplearning4j在開放堆棧中作為模塊組件的功能,使之成為首個為微服務(wù)架構(gòu)打造的深度學(xué)習(xí)框架。
DL4J神經(jīng)網(wǎng)絡(luò)
- 受限玻爾茲曼機(jī)
- 卷積網(wǎng)絡(luò)?(圖像)
- 遞歸網(wǎng)絡(luò)/LSTMs(時間序列和傳感器數(shù)據(jù))
- 遞歸自動編碼器
- 深度置信網(wǎng)絡(luò)
- 深度自動編碼器(問-答/數(shù)據(jù)壓縮)
- 遞歸神經(jīng)傳感器網(wǎng)絡(luò)(場景、分析)
- 堆疊式降噪自動編碼器
- 更多用途請參見《如何選擇神經(jīng)網(wǎng)絡(luò)》
深度神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)前所未有的準(zhǔn)確度。對神經(jīng)網(wǎng)絡(luò)的簡介請參見概覽頁。簡而言之,Deeplearning4j能夠讓你從各類淺層網(wǎng)絡(luò)(其中每一層在英文中被稱為)出發(fā),設(shè)計深層神經(jīng)網(wǎng)絡(luò)。這一靈活性使用戶可以根據(jù)所需,在分布式、生產(chǎn)級、能夠在分布式CPU或GPU的基礎(chǔ)上與Spark和Hadoop協(xié)同工作的框架內(nèi),整合受限玻爾茲曼機(jī)、其他自動編碼器、卷積網(wǎng)絡(luò)或遞歸網(wǎng)絡(luò)。
此處為我們已經(jīng)建立的各個庫及其在系統(tǒng)整體中的所處位置:
在定型深度學(xué)習(xí)網(wǎng)絡(luò)的過程中,有許多可供調(diào)節(jié)的參數(shù)。我們已盡可能對這些參數(shù)進(jìn)行解釋,從而使Deeplearning4j能夠成為Java、Scala和Clojure編程人員的DIY工具。
如果您有任何問題,請在Gitter上加入我們;如果需要高級支持,則請與Skymind聯(lián)系。ND4J是基于Java的科學(xué)運算引擎,用來驅(qū)動矩陣操作。在大型矩陣上,我們的基準(zhǔn)顯示ND4J較Numpy運算速度快大約一倍。
Deeplearning4j教程
- 深度神經(jīng)網(wǎng)絡(luò)簡介
- 卷積網(wǎng)絡(luò)教程
- LSTM和遞歸網(wǎng)絡(luò)教程
- 通過DL4J使用遞歸網(wǎng)絡(luò)
- 深度置信網(wǎng)絡(luò)和MNIST
- 針對LFW人臉圖像數(shù)據(jù)集進(jìn)行人臉重構(gòu)
- 通過Canova庫自定義數(shù)據(jù)準(zhǔn)備工作
- 受限玻爾茲曼機(jī)
- 本征向量、主成分分析(PCA)和熵
- 深度學(xué)習(xí)詞匯表
用戶反饋
為Deeplearning4j做出貢獻(xiàn)
想要為Deeplearning4j作出貢獻(xiàn)的開發(fā)人員可先閱讀開發(fā)人員指南。
DL4J功能強(qiáng)大但非常復(fù)雜,如何能輕松駕馭?
世界領(lǐng)先的零代碼機(jī)器學(xué)習(xí)架構(gòu)RapidMiner,結(jié)合其 DL4J擴(kuò)展,可無需編程地運用 DL4J的力量和靈活性。RapidMiner DL4J 擴(kuò)展由RapidMiner China基于Skymind的深度學(xué)習(xí)庫即Deeplearning4j(DL4J)開發(fā),它開源且對所有RapidMiner社區(qū)開放。點擊查看詳情。
用Deeplearning4j進(jìn)行研究
- 斯坦福NLP:“大規(guī)模語言分類”
神經(jīng)網(wǎng)絡(luò)使用情景
- 人臉/圖像識別
- 語音搜索
- 文本到語音(轉(zhuǎn)錄)
- 垃圾郵件篩選(異常情況探測)
- 欺詐探測
- 推薦系統(tǒng)(客戶關(guān)系管理、廣告技術(shù)、避免用戶流失)
- 回歸分析
為何選擇Deeplearning4j?
- 功能多樣的N維數(shù)組類,為Java和Scala設(shè)計
- 與GPU集合
- 可在Hadoop、Spark上實現(xiàn)擴(kuò)縮
- Canova:機(jī)器學(xué)習(xí)庫的通用向量化工具
- ND4J:線性代數(shù)庫,較Numpy快一倍
Deeplearning4j包括了分布式、多線程的深度學(xué)習(xí)框架,以及普通的單線程深度學(xué)習(xí)框架。定型過程以集群進(jìn)行,也就是說,Deeplearning4j可以快速處理大量數(shù)據(jù)。神經(jīng)網(wǎng)絡(luò)可通過[迭代化簡]平行定型,與Java、Scala和Clojure均兼容。Deeplearning4j在開放堆棧中作為模塊組件的功能,使之成為首個為微服務(wù)架構(gòu)打造的深度學(xué)習(xí)框架。
DL4J神經(jīng)網(wǎng)絡(luò)
- 受限玻爾茲曼機(jī)
- 卷積網(wǎng)絡(luò)?(圖像)
- 遞歸網(wǎng)絡(luò)/LSTMs(時間序列和傳感器數(shù)據(jù))
- 遞歸自動編碼器
- 深度置信網(wǎng)絡(luò)
- 深度自動編碼器(問-答/數(shù)據(jù)壓縮)
- 遞歸神經(jīng)傳感器網(wǎng)絡(luò)(場景、分析)
- 堆疊式降噪自動編碼器
- 更多用途請參見《如何選擇神經(jīng)網(wǎng)絡(luò)》
深度神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)前所未有的準(zhǔn)確度。對神經(jīng)網(wǎng)絡(luò)的簡介請參見概覽頁。簡而言之,Deeplearning4j能夠讓你從各類淺層網(wǎng)絡(luò)(其中每一層在英文中被稱為)出發(fā),設(shè)計深層神經(jīng)網(wǎng)絡(luò)。這一靈活性使用戶可以根據(jù)所需,在分布式、生產(chǎn)級、能夠在分布式CPU或GPU的基礎(chǔ)上與Spark和Hadoop協(xié)同工作的框架內(nèi),整合受限玻爾茲曼機(jī)、其他自動編碼器、卷積網(wǎng)絡(luò)或遞歸網(wǎng)絡(luò)。
此處為我們已經(jīng)建立的各個庫及其在系統(tǒng)整體中的所處位置:
在定型深度學(xué)習(xí)網(wǎng)絡(luò)的過程中,有許多可供調(diào)節(jié)的參數(shù)。我們已盡可能對這些參數(shù)進(jìn)行解釋,從而使Deeplearning4j能夠成為Java、Scala和Clojure編程人員的DIY工具。
如果您有任何問題,請在Gitter上加入我們;如果需要高級支持,則請與Skymind聯(lián)系。ND4J是基于Java的科學(xué)運算引擎,用來驅(qū)動矩陣操作。在大型矩陣上,我們的基準(zhǔn)顯示ND4J較Numpy運算速度快大約一倍。
Deeplearning4j教程
- 深度神經(jīng)網(wǎng)絡(luò)簡介
- 卷積網(wǎng)絡(luò)教程
- LSTM和遞歸網(wǎng)絡(luò)教程
- 通過DL4J使用遞歸網(wǎng)絡(luò)
- 深度置信網(wǎng)絡(luò)和MNIST
- 針對LFW人臉圖像數(shù)據(jù)集進(jìn)行人臉重構(gòu)
- 通過Canova庫自定義數(shù)據(jù)準(zhǔn)備工作
- 受限玻爾茲曼機(jī)
- 本征向量、主成分分析(PCA)和熵
- 深度學(xué)習(xí)詞匯表
用戶反饋
為Deeplearning4j做出貢獻(xiàn)
想要為Deeplearning4j作出貢獻(xiàn)的開發(fā)人員可先閱讀開發(fā)人員指南。
DL4J功能強(qiáng)大但非常復(fù)雜,如何能輕松駕馭?
世界領(lǐng)先的零代碼機(jī)器學(xué)習(xí)架構(gòu)RapidMiner,結(jié)合其 DL4J擴(kuò)展,可無需編程地運用 DL4J的力量和靈活性。RapidMiner DL4J 擴(kuò)展由RapidMiner China基于Skymind的深度學(xué)習(xí)庫即Deeplearning4j(DL4J)開發(fā),它開源且對所有RapidMiner社區(qū)開放。點擊查看詳情。
用Deeplearning4j進(jìn)行研究
- 斯坦福NLP:“大規(guī)模語言分類”
學(xué)習(xí)方式
根據(jù)數(shù)據(jù)類型的不同,對一個問題的建模有不同的方式。在機(jī)器學(xué)習(xí)或者人工智能領(lǐng)域,人們首先會考慮算法的學(xué)習(xí)方式。在機(jī)器學(xué)習(xí)領(lǐng)域,有幾種主要 的學(xué)習(xí)方式。將算法按照學(xué)習(xí)方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據(jù)輸入數(shù)據(jù)來選擇最合適的算法來獲得最好的結(jié)果。
監(jiān)督式學(xué)習(xí):
在監(jiān)督式學(xué)習(xí)下,輸入數(shù)據(jù)被稱為“訓(xùn)練數(shù)據(jù)”,每組訓(xùn)練數(shù)據(jù)有一個明確的標(biāo)識或結(jié)果,如對防垃圾郵件系統(tǒng)中“垃圾郵件”“非垃圾郵件”,對手寫 數(shù)字識別中的“1“,”2“,”3“,”4“等。在建立預(yù)測模型的時候,監(jiān)督式學(xué)習(xí)建立一個學(xué)習(xí)過程,將預(yù)測結(jié)果與“訓(xùn)練數(shù)據(jù)”的實際結(jié)果進(jìn)行比較,不斷 的調(diào)整預(yù)測模型,直到模型的預(yù)測結(jié)果達(dá)到一個預(yù)期的準(zhǔn)確率。監(jiān)督式學(xué)習(xí)的常見應(yīng)用場景如分類問題和回歸問題。常見算法有邏輯回歸(Logistic Regression)和反向傳遞神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)
非監(jiān)督式學(xué)習(xí):
在非監(jiān)督式學(xué)習(xí)中,數(shù)據(jù)并不被特別標(biāo)識,學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)。常見的應(yīng)用場景包括關(guān)聯(lián)規(guī)則的學(xué)習(xí)以及聚類等。常見算法包括Apriori算法以及k-Means算法。
半監(jiān)督式學(xué)習(xí):
在此學(xué)習(xí)方式下,輸入數(shù)據(jù)部分被標(biāo)識,部分沒有被標(biāo)識,這種學(xué)習(xí)模型可以用來進(jìn)行預(yù)測,但是模型首先需要學(xué)習(xí)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)以便合理的組織數(shù)據(jù) 來進(jìn)行預(yù)測。應(yīng)用場景包括分類和回歸,算法包括一些對常用監(jiān)督式學(xué)習(xí)算法的延伸,這些算法首先試圖對未標(biāo)識數(shù)據(jù)進(jìn)行建模,在此基礎(chǔ)上再對標(biāo)識的數(shù)據(jù)進(jìn)行預(yù) 測。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(jī)(Laplacian SVM.)等。
強(qiáng)化學(xué)習(xí):
在這種學(xué)習(xí)模式下,輸入數(shù)據(jù)作為對模型的反饋,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個檢查模型對錯的方式,在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋 到模型,模型必須對此立刻作出調(diào)整。常見的應(yīng)用場景包括動態(tài)系統(tǒng)以及機(jī)器人控制等。常見算法包括Q-Learning以及時間差學(xué)習(xí)(Temporal difference learning)
在企業(yè)數(shù)據(jù)應(yīng)用的場景下, 人們最常用的可能就是監(jiān)督式學(xué)習(xí)和非監(jiān)督式學(xué)習(xí)的模型。 在圖像識別等領(lǐng)域,由于存在大量的非標(biāo)識的數(shù)據(jù)和少量的可標(biāo)識數(shù)據(jù), 目前半監(jiān)督式學(xué)習(xí)是一個很熱的話題。 而強(qiáng)化學(xué)習(xí)更多的應(yīng)用在機(jī)器人控制及其他需要進(jìn)行系統(tǒng)控制的領(lǐng)域。
算法類似性
根據(jù)算法的功能和形式的類似性,我們可以把算法分類,比如說基于樹的算法,基于神經(jīng)網(wǎng)絡(luò)的算法等等。當(dāng)然,機(jī)器學(xué)習(xí)的范圍非常龐大,有些算法很 難明確歸類到某一類。而對于有些分類來說,同一分類的算法可以針對不同類型的問題。這里,我們盡量把常用的算法按照最容易理解的方式進(jìn)行分類。
回歸算法
回歸算法是試圖采用對誤差的衡量來探索變量之間的關(guān)系的一類算法。回歸算法是統(tǒng)計機(jī)器學(xué)習(xí)的利器。在機(jī)器學(xué)習(xí)領(lǐng)域,人們說起回歸,有時候是指一 類問題,有時候是指一類算法,這一點常常會使初學(xué)者有所困惑。常見的回歸算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐步式回歸(Stepwise Regression),多元自適應(yīng)回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)
基于實例的算法
基于實例的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數(shù)據(jù),然后根據(jù)某些近似性把新數(shù)據(jù)與樣本數(shù)據(jù)進(jìn)行比較。通過這種方式 來尋找最佳的匹配。因此,基于實例的算法常常也被稱為“贏家通吃”學(xué)習(xí)或者“基于記憶的學(xué)習(xí)”。常見的算法包括 k-Nearest Neighbor(KNN), 學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map , SOM)
正則化方法
正則化方法是其他算法(通常是回歸算法)的延伸,根據(jù)算法的復(fù)雜度對算法進(jìn)行調(diào)整。正則化方法通常對簡單模型予以獎勵而對復(fù)雜算法予以懲罰。常 見的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網(wǎng)絡(luò)(Elastic Net)。
決策樹學(xué)習(xí)
決策樹算法根據(jù)數(shù)據(jù)的屬性采用樹狀結(jié)構(gòu)建立決策模型, 決策樹模型常常用來解決分類和回歸問題。常見的算法包括:分類及回歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機(jī)森林(Random Forest), 多元自適應(yīng)回歸樣條(MARS)以及梯度推進(jìn)機(jī)(Gradient Boosting Machine, GBM)
貝葉斯方法
貝葉斯方法算法是基于貝葉斯定理的一類算法,主要用來解決分類和回歸問題。常見算法包括:樸素貝葉斯算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
基于核的算法
基于核的算法中最著名的莫過于支持向量機(jī)(SVM)了。 基于核的算法把輸入數(shù)據(jù)映射到一個高階的向量空間, 在這些高階向量空間里, 有些分類或者回歸問題能夠更容易的解決。 常見的基于核的算法包括:支持向量機(jī)(Support Vector Machine, SVM), 徑向基函數(shù)(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等。
聚類算法
聚類,就像回歸一樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法通常按照中心點或者分層的方式對輸入數(shù)據(jù)進(jìn)行歸并。所以的 聚類算法都試圖找到數(shù)據(jù)的內(nèi)在結(jié)構(gòu),以便按照最大的共同點將數(shù)據(jù)進(jìn)行歸類。常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。
關(guān)聯(lián)規(guī)則學(xué)習(xí)
關(guān)聯(lián)規(guī)則學(xué)習(xí)通過尋找最能夠解釋數(shù)據(jù)變量之間關(guān)系的規(guī)則,來找出大量多元數(shù)據(jù)集中有用的關(guān)聯(lián)規(guī)則。常見算法包括 Apriori算法和Eclat算法等。
人工神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)算法模擬生物神經(jīng)網(wǎng)絡(luò),是一類模式匹配算法。通常用于解決分類和回歸問題。人工神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的一個龐大的分支,有幾百種不同 的算法。(其中深度學(xué)習(xí)就是其中的一類算法,我們會單獨討論),重要的人工神經(jīng)網(wǎng)絡(luò)算法包括:感知器神經(jīng)網(wǎng)絡(luò)(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網(wǎng)絡(luò),自組織映射(Self-Organizing Map, SOM)。學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ)
深度學(xué)習(xí)
深度學(xué)習(xí)算法是對人工神經(jīng)網(wǎng)絡(luò)的發(fā)展。 在近期贏得了很多關(guān)注, 特別是 百度也開始發(fā)力深度學(xué)習(xí)后, 更是在國內(nèi)引起了很多關(guān)注。 ?在計算能力變得日益廉價的今天,深度學(xué)習(xí)試圖建立大得多也復(fù)雜得多的神經(jīng)網(wǎng)絡(luò)。很多深度學(xué)習(xí)的算法是半監(jiān)督式學(xué)習(xí)算法,用來處理存在少量未標(biāo)識數(shù)據(jù)的大 數(shù)據(jù)集。常見的深度學(xué)習(xí)算法包括:受限波爾茲曼機(jī)(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網(wǎng)絡(luò)(Convolutional Network), 堆棧式自動編碼器(Stacked Auto-encoders)。
降低維度算法
像聚類算法一樣,降低維度算法試圖分析數(shù)據(jù)的內(nèi)在結(jié)構(gòu),不過降低維度算法是以非監(jiān)督學(xué)習(xí)的方式試圖利用較少的信息來歸納或者解釋數(shù)據(jù)。這類算法 可以用于高維數(shù)據(jù)的可視化或者用來簡化數(shù)據(jù)以便監(jiān)督式學(xué)習(xí)使用。常見的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回歸(Partial Least Square Regression,PLS), Sammon映射,多維尺度(Multi-Dimensional Scaling, MDS), ?投影追蹤(Projection Pursuit)等。
集成算法
集成算法用一些相對較弱的學(xué)習(xí)模型獨立地就同樣的樣本進(jìn)行訓(xùn)練,然后把結(jié)果整合起來進(jìn)行整體預(yù)測。集成算法的主要難點在于究竟集成哪些獨立的較 弱的學(xué)習(xí)模型以及如何把學(xué)習(xí)結(jié)果整合起來。這是一類非常強(qiáng)大的算法,同時也非常流行。常見的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進(jìn)機(jī)(Gradient Boosting Machine, GBM),隨機(jī)森林(Random Forest)。
詳細(xì)解釋
樸素貝葉斯
P(A∩B)=P(A)*P(B|A)=P(B)*P(A|B)
所以有:P(A|B)=P(B|A)*P(A)/P(B)
對于給出的待分類項,求解在此項出現(xiàn)的條件下各個目標(biāo)類別出現(xiàn)的概率,哪個最大,就認(rèn)為此待分類項屬于哪個類別
工作原理
p(ai|yi)表示該類別下該特征出現(xiàn)的概率
p(yi)表示全部類別中這個這個類別出現(xiàn)的概率
工作流程
確定特征屬性,并對每個特征屬性進(jìn)行適當(dāng)劃分,然后由人工對一部分待分類項進(jìn)行分類,形成訓(xùn)練樣本。
計算每個類別在訓(xùn)練樣本中的出現(xiàn)頻率及每個特征屬性劃分對每個類別的條件概率估計
使用分類器進(jìn)行分類,輸入是分類器和待分類樣本,輸出是樣本屬于的分類類別
屬性特征
那么p(ak|yi)=g(xk,ni,ui)
Laplace校準(zhǔn)(拉普拉斯校驗)
當(dāng)某個類別下某個特征劃分沒有出現(xiàn)時,會有P(a|y)=0,就是導(dǎo)致分類器質(zhì)量降低,所以此時引入Laplace校驗,就是對沒類別下所有劃分的計數(shù)加1。
遇到特征之間不獨立問題
參考改進(jìn)的貝葉斯網(wǎng)絡(luò),使用DAG來進(jìn)行概率圖的描述
優(yōu)缺點
樸素貝葉斯的優(yōu)點:
缺點:
http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
邏輯回歸和線性回歸
LR回歸是一個線性的二分類模型,主要是計算在某個樣本特征下事件發(fā)生的概率,比如根據(jù)用戶的瀏覽購買情況作為特征來計算它是否會購買這個商品,抑或是它是否會點擊這個商品。然后LR的最終值是根據(jù)一個線性和函數(shù)再通過一個sigmod函數(shù)來求得,這個線性和函數(shù)權(quán)重與特征值的累加以及加上偏置求出來的,所以在訓(xùn)練LR時也就是在訓(xùn)練線性和函數(shù)的各個權(quán)重值w。
關(guān)于這個權(quán)重值w一般使用最大似然法來估計,比如yi=1的概率是pi,則yi=0的概率是1-pi,那么觀測概率為p(yi)=pi^yi*(1-pi)^(1-yi)這個這個最大似然函數(shù)為(hw(xi)^yi*(1-hw(xi))^(1-yi))連乘,對這個似然函數(shù)取對數(shù)之后就會得到的表達(dá)式L(w)=sigma(yi*log(hw(xi))-(1-yi)log(1-hw(xi)))=sigma(yi*(w*xi)-log(1+exp(w*xi))),估計這個L(w)的極大值就可以得到w的估計值。
所以求解問題就變成了這個最大似然函數(shù)的最優(yōu)化問題,這里通常會采樣隨機(jī)梯度下降法和擬牛頓迭代法來進(jìn)行優(yōu)化
梯度下降法
如果hw(x)=1/(1-e^(-wx)),
則cost function=-1/m* sigma(yi*log(hw(xi)+(1-yi)*log(1-hw(xi)))=j(w)
這里就成了就min(j(w))
所以更新w的過程為
w:=w-lamea*j(w)’ (求導(dǎo))
w:=w-lamea* 1/m\*sigma[m](hw(xi)-yi)*xi)
直到j(luò)(w)不能再的時候停止
梯度下降法的最大問題就是會陷入局部最優(yōu),并且每次在對當(dāng)前樣本計算cost的時候都需要去遍歷全部樣本才能得到cost值,這樣計算速度就會慢很多(雖然在計算的時候可以轉(zhuǎn)為矩陣乘法去更新整個w值)
所以現(xiàn)在好多框架(mahout)中一般使用隨機(jī)梯度下降法,它在計算cost的時候只計算當(dāng)前的代價,最終cost是在全部樣本迭代一遍之求和得出,還有他在更新當(dāng)前的參數(shù)w的時候并不是依次遍歷樣本,而是從所有的樣本中隨機(jī)選擇一條進(jìn)行計算,它方法收斂速度快(一般是使用最大迭代次數(shù)),并且還可以避免局部最優(yōu),并且還很容易并行(使用參數(shù)服務(wù)器的方式進(jìn)行并行)
這里SGD可以改進(jìn)的地方就是使用動態(tài)的梯度值alpha=0.04*(1.0+n+i)+Rate
其他優(yōu)化方法
- 擬牛頓法(記得是需要使用Hessian矩陣和cholesky分解)
- BFGS
- L-BFGS
優(yōu)缺點:無需選擇學(xué)習(xí)率α,更快,但是更復(fù)雜
關(guān)于LR的過擬合問題:
如果我們有很多的特性,在訓(xùn)練集上擬合得很好,但是在預(yù)測集上卻達(dá)不到這種效果
- 1. 減少feature個數(shù)(人工定義留多少個feature、算法選取這些feature)
- 2. 正則化(留下所有的feature,但對于部分feature定義其parameter非常小),在cost上加 lamea(sigma(w^2)),同時w的更新變?yōu)閣:=w-rate* 1/m\*sigma[m](hw(xi)-yi)*xi+ (lamea/m)*w。注意:這里的w0不受正則化影響
關(guān)于LR的多分類:softmax
softmax:假設(shè)離散型隨機(jī)變量Y的取值集合是{1,2,..,k},則多分類的LR為
P(Y=a|x)=exp(wa*x)/(1-1到k求和(wk*x)) 1<a<k
這里會輸出當(dāng)前樣本下屬于哪一類的概率,并且滿足全部概率加起來=1
關(guān)于softmax和k個LR的選擇
如果類別之間是否互斥(比如音樂只能屬于古典音樂、鄉(xiāng)村音樂、搖滾月的一種)就用softmax
否則類別之前有聯(lián)系(比如一首歌曲可能有影視原聲,也可能包含人聲,或者是舞曲),這個時候使用k個LR更為合適
優(yōu)缺點:
Logistic回歸優(yōu)點:
缺點:
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/18/2595410.html
http://blog.csdn.net/abcjennifer/article/details/7716281
http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
KNN算法
給一個訓(xùn)練數(shù)據(jù)集和一個新的實例,在訓(xùn)練數(shù)據(jù)集中找出與這個新實例最近的k個訓(xùn)練實例,然后統(tǒng)計最近的k個訓(xùn)練實例中所屬類別計數(shù)最多的那個類,就是新實例的類
三要素:
k值的選擇
所以一般k會取一個較小的值,然后用過交叉驗證來確定
這里所謂的交叉驗證就是將樣本劃分一部分出來為預(yù)測樣本,比如95%訓(xùn)練,5%預(yù)測,然后k分別取1,2,3,4,5之類的,進(jìn)行預(yù)測,計算最后的分類誤差,選擇誤差最小的k
KNN的回歸
在找到最近的k個實例之后,可以計算這k個實例的平均值作為預(yù)測值。或者還可以給這k個實例添加一個權(quán)重再求平均值,這個權(quán)重與度量距離成反比(越近權(quán)重越大)。
優(yōu)缺點:
KNN算法的優(yōu)點:
缺點:
KD樹
KD樹是一個二叉樹,表示對K維空間的一個劃分,可以進(jìn)行快速檢索(那KNN計算的時候不需要對全樣本進(jìn)行距離的計算了)
構(gòu)造KD樹
在k維的空間上循環(huán)找子區(qū)域的中位數(shù)進(jìn)行劃分的過程。
假設(shè)現(xiàn)在有K維空間的數(shù)據(jù)集T={x1,x2,x3,…xn},xi={a1,a2,a3..ak}
KD樹的搜索
KD樹進(jìn)行KNN查找
通過KD樹的搜索找到與搜索目標(biāo)最近的點,這樣KNN的搜索就可以被限制在空間的局部區(qū)域上了,可以大大增加效率。
KD樹搜索的復(fù)雜度
當(dāng)實例隨機(jī)分布的時候,搜索的復(fù)雜度為log(N),N為實例的個數(shù),KD樹更加適用于實例數(shù)量遠(yuǎn)大于空間維度的KNN搜索,如果實例的空間維度與實例個數(shù)差不多時,它的效率基于等于線性掃描。
SVM、SMO
對于樣本點(xi,yi)以及svm的超平面:wix+b=0
- 函數(shù)間隔:yi(wxi+b)
- 幾何間隔:yi(wxi+b)/||w||,其中||w||為w的L2范數(shù),幾何間隔不會因為參數(shù)比例的改變而改變
svm的基本想法就是求解能正確劃分訓(xùn)練樣本并且其幾何間隔最大化的超平面。
線性SVM問題
yi(wxi+b)/||w||>=d (使用幾何間隔)
求max(d)
那么假設(shè)d’=d||w||
則將問題轉(zhuǎn)為:yi(wxi+b)>=1,max(d’/||w||)
由于d’的成比例增減不會影響實際間距,所以這里的取d’=1,又因為max(1/||w||)=min(1/2\||w||^2)
所以最終的問題就變?yōu)榱?br /> yi(wxi+b)>=1,min(1/2*||w||^2)
這樣就變成了一個凸的二次規(guī)劃化,可以將其轉(zhuǎn)換為拉格朗日函數(shù),然后使用對偶算法來求解
對偶求解
L(w,b,a)=1/2*||w||^2-sigma(ai*yi(wxi+b))+sigma(ai) 其中a={a1,a2..an}為拉格朗日向量
根據(jù)對偶性質(zhì) 原始問題就是求對偶問題的極大極小max[a]min[w,b]L(w,b,a)
先求L對w,b的極小,再求對a的極大
求min[w,b]L(w,b,a):
L’(w)=w-sigma(aiyixi)=0
L’(b)=sigma(aiyi)=0;
代入后可得min[w,b]L(w,b,a)=-1/2*sigma(sigma(aiajyiyj(xi·xj)))+sigma(ai)
求min[w,b]L(w,b,a)對a的極大
max[a] -1/2*sigma(sigma(aiajyiyj(xi·xj)))+sigma(ai)
sigma(aiyi)=0
轉(zhuǎn)成等價的對偶形式就是
min[a] 1/2*sigma(sigma(aiajyiyj(xi·xj)))-sigma(ai)
sigma(aiyi)=0
假如求解出來的a為a^=(a1,a2,…an)
則得到最優(yōu)的w,b分別為
w^=sigma(aiyixi)
b^=yj-sigma(aiyi(xi·xj))
所以,最終的決策分類面為
f=sign(sigma(aiyi(x·xi))+b^
也就是說,分類決策函數(shù)只依賴于輸入x與訓(xùn)練樣本的輸入的內(nèi)積
與分離超平面最近的樣本點稱為支持向量
損失函數(shù)
經(jīng)驗損失函數(shù):sigma(1-yi(wxi+b)) (注意,如果該值小于0時直接取0即可)
合頁損失函數(shù):sigma(1-yi(wi+b)) + leama||w||^2 后面的是L2正則項
為什么要引入對偶算法
核函數(shù)
將輸入特征x(線性不可分)映射到高維特征R空間,可以在R空間上讓SVM進(jìn)行線性可以變,這就是核函數(shù)的作用
- 多項式核函數(shù):K(x,z)=(x*z+1)^p
- 高斯核函數(shù):K(x,z)=exp(-(x-z)^2/a^2) a為均值
- 字符串核函數(shù):好像用于文本匹配、檢索之類的,不懂
SVM優(yōu)缺點
優(yōu)點:
缺點:
SMO
SMO是用于快速求解SVM的
它選擇凸二次規(guī)劃的兩個變量,其他的變量保持不變,然后根據(jù)這兩個變量構(gòu)建一個二次規(guī)劃問題,這個二次規(guī)劃關(guān)于這兩個變量解會更加的接近原始二次規(guī)劃的解,通過這樣的子問題劃分可以大大增加整個算法的計算速度,關(guān)于這兩個變量:
SVM多分類問題
直接在目標(biāo)函數(shù)上進(jìn)行修改,將多個分類面的參數(shù)求解合并到一個最優(yōu)化問題中,通過求解該優(yōu)化就可以實現(xiàn)多分類(計算復(fù)雜度很高,實現(xiàn)起來較為困難)
其中某個類為一類,其余n-1個類為另一個類,比如A,B,C,D四個類,第一次A為一個類,{B,C,D}為一個類訓(xùn)練一個分類器,第二次B為一個類,{A,C,D}為另一個類,按這方式共需要訓(xùn)練4個分類器,最后在測試的時候?qū)y試樣本經(jīng)過這4個分類器f1(x),f2(x),f3(x)和f4(x),取其最大值為分類器(這種方式由于是1對M分類,會存在偏置,很不實用)
任意兩個類都訓(xùn)練一個分類器,那么n個類就需要n*(n-1)/2個svm分類器。
還是以A,B,C,D為例,那么需要{A,B},{A,C},{A,D},{B,C},{B,D},{C,D}為目標(biāo)共6個分類器,然后在預(yù)測的將測試樣本通過這6個分類器之后進(jìn)行投票選擇最終結(jié)果。(這種方法雖好,但是需要n*(n-1)/2個分類器代價太大,不過有好像使用循環(huán)圖來進(jìn)行改進(jìn))
決策樹
決策樹是一顆依托決策而建立起來的樹。
ID3
S(C,ai)=-sigma(pilog(pi)) 一個屬性中某個類別的熵 pi=P(yi|ai) pi表示ai情況下發(fā)生yi的概率,也即是統(tǒng)計概率
S(C,A)=sigma(P(A=ai)\S(ai)) 整個屬性的熵,為各個類別的比例與各自熵的加權(quán)求和
Gain(C,A)=S(C)-S(C,A) 增益表示分類目標(biāo)的熵減去當(dāng)前屬性的熵,增益越大,分類能力越強(qiáng)
(這里前者叫做經(jīng)驗熵,表示數(shù)據(jù)集分類C的不確定性,后者就是經(jīng)驗條件熵,表示在給定A的條件下對數(shù)據(jù)集分類C的不確定性,兩者相減叫做互信息,決策樹的增益等價于互信息)
比如說當(dāng)前屬性是是否擁有房產(chǎn),分類是是否能償還債務(wù)
現(xiàn)在:
- 有用房產(chǎn)為7個,4個能償還債務(wù),3個無法償還債務(wù)
- 然后無房產(chǎn)為3個,其中1個能償還債務(wù),2個無法償還債務(wù)
然后S(有房產(chǎn))=-(4/7*log4/7+3/7*log3/7)
S(無房產(chǎn))=-(1/3*log1/3+2/3*log2/3)
其中S(分類)=-(5/10*log5/10+5/10*log5/10)
最終的增益=S(分類)-(7/10*S(有房產(chǎn))+3/10*S(無房產(chǎn))) 最大越好
關(guān)于損失函數(shù)
設(shè)樹的葉子節(jié)點個數(shù)為T,t為其中一個葉子節(jié)點,該葉子節(jié)點有Nt個樣本,其中k類的樣本有Ntk個,H(t)為葉子節(jié)點上的經(jīng)驗熵,則損失函數(shù)定義為
Ct(T)=sigma(Nt*H(t))+ lamdba |T|
其中H(t)=sigma(Ntk/Nt*log(Ntk/Nt))
代入可以得到Ct(T)=sigma(sigma(Ntk*log(Ntk/Nt)))+lamdba|T|
最終有Ct(T)=C(T)+ lamdba|T|
lamdba|T|為正則化項,leama是用于調(diào)節(jié)比率
決策樹的生成只考慮了信息增益
C4.5
它是ID3的一個改進(jìn)算法,使用信息增益率來進(jìn)行屬性的選擇
splitInformation(S,A)=-sigma(|Si|/|S|*log2(|Si|/|S|))
GainRatio(S,A)=Gain(S,A)/splitInformation(S,A)
優(yōu)缺點:
準(zhǔn)確率高,但是子構(gòu)造樹的過程中需要進(jìn)行多次的掃描和排序,所以它的運算效率較低
Cart
分類回歸樹(Classification And Regression Tree)是一個決策二叉樹,在通過遞歸的方式建立,每個節(jié)點在分裂的時候都是希望通過最好的方式將剩余的樣本劃分成兩類,這里的分類指標(biāo):
分類樹:
gini用來度量分布不均勻性(或者說不純),總體的類別越雜亂,GINI指數(shù)就越大(跟熵的概念很相似)
gini(ai)=1-sigma(pi^2) pi當(dāng)前數(shù)據(jù)集中第i類樣本的比例
gini越小,表示樣本分布越均勻(0的時候就表示只有一類了),越大越不均勻
基尼增益gini_gain=sigma(Ni/N*gini(ai)) 表示當(dāng)前屬性的一個混亂 Ni/N表示當(dāng)前類別占所有類別的概率
最終Cart選擇GiniGain最小的特征作為劃分特征
以ID3中的貸款的那棵樹為樣例:
gini(有房產(chǎn))=1-((3/7)^2+(4/7)^2) //基尼指數(shù)
gini(無房產(chǎn))=1-((1/3)^2+(2/3)^2)
gini_gain=7/10*gini(有房產(chǎn))+3/10*gini(無房產(chǎn)) //基尼增益
回歸樹:
回歸樹是以平方誤差最小化的準(zhǔn)則劃分為兩塊區(qū)域
使其最小化的平方誤差是:min{min(R1.sigma((yi-c1)^2))+min(R2.sigma((yi-c2)^2))}
計算根據(jù)s劃分到左側(cè)和右側(cè)子樹的目標(biāo)值與預(yù)測值之差的平方和最小,這里的預(yù)測值是兩個子樹上輸入xi樣本對應(yīng)yi的均值
R1(j)={x|x(j)<=s}、R2(j)={x|x(j)>s}
這里面的最小化我記得可以使用最小二乘法來求
關(guān)于剪枝:用獨立的驗證數(shù)據(jù)集對訓(xùn)練集生長的樹進(jìn)行剪枝(事后剪枝)。
停止條件
關(guān)于特征與目標(biāo)值
決策樹的分類與回歸
- 分類樹
輸出葉子節(jié)點中所屬類別最多的那一類 - 回歸樹
輸出葉子節(jié)點中各個樣本值的平均值
理想的決策樹
解決決策樹的過擬合
優(yōu)缺點
優(yōu)點:
缺點:
隨機(jī)森林RF
隨機(jī)森林是有很多隨機(jī)得決策樹構(gòu)成,它們之間沒有關(guān)聯(lián)。得到RF以后,在預(yù)測時分別對每一個決策樹進(jìn)行判斷,最后使用Bagging的思想進(jìn)行結(jié)果的輸出(也就是投票的思想)
學(xué)習(xí)過程
預(yù)測過程
參數(shù)問題
泛化誤差估計
使用oob(out-of-bag)進(jìn)行泛化誤差的估計,將各個樹的未采樣樣本作為預(yù)測樣本(大約有36.8%),使用已經(jīng)建立好的森林對各個預(yù)測樣本進(jìn)行預(yù)測,預(yù)測完之后最后統(tǒng)計誤分得個數(shù)占總預(yù)測樣本的比率作為RF的oob誤分率。
學(xué)習(xí)算法
關(guān)于CART
Cart可以通過特征的選擇迭代建立一顆分類樹,使得每次的分類平面能最好的將剩余數(shù)據(jù)分為兩類
gini=1-sigma(pi^2),表示每個類別出現(xiàn)的概率和與1的差值,
分類問題:argmax(Gini-GiniLeft-GiniRight)
回歸問題argmax(Var-VarLeft-VarRight)
查找最佳特征f已經(jīng)最佳屬性閾值th 小于th的在左邊,大于th的在右邊子樹
優(yōu)缺點
GBDT
GBDT的精髓在于訓(xùn)練的時候都是以上一顆樹的殘差為目標(biāo),這個殘差就是上一個樹的預(yù)測值與真實值的差值。
比如,當(dāng)前樣本年齡是18歲,那么第一顆會去按18歲來訓(xùn)練,但是訓(xùn)練完之后預(yù)測的年齡為12歲,差值為6,所以第二顆樹的會以6歲來進(jìn)行訓(xùn)練,假如訓(xùn)練完之后預(yù)測出來
Boosting的好處就是每一步的參加就是變相了增加了分錯instance的權(quán)重,而對已經(jīng)對的instance趨向于0,這樣后面的樹就可以更加關(guān)注錯分的instance的訓(xùn)練了
Shrinkage
Shrinkage認(rèn)為,每次走一小步逐步逼近的結(jié)果要比每次邁一大步逼近結(jié)果更加容易避免過擬合。
y(1 ~ i) = y(1 ~ i-1) + step * yi
就像我們做互聯(lián)網(wǎng),總是先解決60%用戶的需求湊合著,再解決35%用戶的需求,最后才關(guān)注那5%人的需求,這樣就能逐漸把產(chǎn)品做好.
調(diào)參
優(yōu)缺點:
優(yōu)點:
缺點:
BP
最小二乘法
最小二乘法是一種數(shù)學(xué)的優(yōu)化技術(shù),通過求最小化平方誤差來尋找最佳的函數(shù)匹配
假設(shè)現(xiàn)在有二維的觀測數(shù)據(jù)(x1,y1),(x2,y2)…(xn,yn),求y=a+bx的擬合。
現(xiàn)設(shè)yi=a+bxi+ki 如果有a,b能得到sigma(|ki|)最小,則該線比較理想
所以先變?yōu)榍髆in(sigma(ki)) ,這個與min(sigma(ki^2))等價
而ki=yi-(a+bxi)
那么現(xiàn)設(shè)f=sigma((yi-(a+bxi))^2)求其最小即可
上述就是最小二乘原則,估計a,b的方法稱為最小二乘法
先求f對a,b的偏導(dǎo):
f’(a)=-2*sigma(yi-(a+bxi))=0
f’(b)=-2*xi*sigma(yi-(a+bxi))=0
現(xiàn)設(shè):X=sigma(xi)/n Y=sigma(yi)/
則代入上述偏導(dǎo):
an+bnX=nY
anX+b*sigma(xi^2)=sigma(xi*yi)
求該行列式:
|n ,nX |
|nX,sigma(xi^2)|
=n*sigma((xi-X))!=0 所以有唯一解
最后記:
l(xx)=sigma((xi-X)^2)
l(yy)=sigma((yi-Y)^2)
l(xy)=sigma((xi-X)(yi-Y))
則b=l(xy)/l(xx) a=Y-bX
百度文庫-最小二乘法
EM
EM用于隱含變量的概率模型的極大似然估計,它一般分為兩步:第一步求期望(E),第二步求極大(M),
如果概率模型的變量都是觀測變量,那么給定數(shù)據(jù)之后就可以直接使用極大似然法或者貝葉斯估計模型參數(shù)。
但是當(dāng)模型含有隱含變量的時候就不能簡單的用這些方法來估計,EM就是一種含有隱含變量的概率模型參數(shù)的極大似然估計法。
應(yīng)用到的地方:混合高斯模型、混合樸素貝葉斯模型、因子分析模型
Bagging
Boosting
boosting在訓(xùn)練的時候會給樣本加一個權(quán)重,然后使loss function盡量去考慮那些分錯類的樣本(比如給分錯類的樣本的權(quán)重值加大)
凸優(yōu)化
在機(jī)器學(xué)習(xí)中往往是最終要求解某個函數(shù)的最優(yōu)值,但是一般情況下,任意一個函數(shù)的最優(yōu)值求解比較困難,但是對于凸函數(shù)來說就可以有效的求解出全局最優(yōu)值。
凸集
一個集合C是,當(dāng)前僅當(dāng)任意x,y屬于C且0<=theta<=1,都有theta*x+(1-theta)*y屬于C
用通俗的話來說C集合線段上的任意兩點也在C集合中
凸函數(shù)
一個函數(shù)f其定義域(D(f))是凸集,并且對任意x,y屬于D(f)和0<=theta<=1都有
f(theta*x+(1-theta)*y)<=theta*f(x)+(1-theta)*f(y) —這個貌似叫做jensen不等式
用通俗的話來說就是曲線上任意兩點的割線都在曲線的上方
常見的凸函數(shù)有:
- 指數(shù)函數(shù)f(x)=a^x a>1
- 負(fù)對數(shù)函數(shù)-logax a>1,x>0
- 開口向上的二次函數(shù)等
凸函數(shù)的判定:
凸優(yōu)化應(yīng)用舉例
- SVM:其中由max|w| 轉(zhuǎn)向min(1/2*|w|^2)
- 最小二乘法?
- LR的損失函數(shù)sigma(yi*log(hw(x))+(1-yi)*(log(1-hw(x))))
總結(jié)
- 上一篇: nginx 并发过十万
- 下一篇: deeplearning4j