1. 程式人生 > >演算法篇:SGD+logistic+Adaboost構建快速迭代增強式LR模型

演算法篇:SGD+logistic+Adaboost構建快速迭代增強式LR模型

寫在最前:
- 之前在新浪開個部落格寫東西,總有些不方便,後來看了CSDN,內建Markdown,寫起來突感一見如故,十分感動。
- 工作中由於經常需要做一些視覺化和演算法類的研究,所以開個CSDN總結和記錄一下。

下面主要講的是近幾個月來的一些研究成果,通過構建增強式的快速迭代logistics判別分類器,就是通過組合隨機梯度(SGD),提升演算法(adaboost),logistics模型。
具體地:通過利用SGD估計每個logistics弱分類器引數,同時基於每個弱分類器,通過adaboost更新樣本的權重以及計算每個分類器權重,最後組合多個弱分類器,構成一個強分類輸出判別。

理論概述

1. 隨機梯度演算法概述

  梯度演算法在機器學習常被用於引數的迭代估計,當維度與樣本數大幅上升時,其表現出的估計效能與速度也十分可觀。
假設如下方程hθ(x)

hθ(x)=θ0+θ1x1+θ2x2+
  其中θi(0inn) 為變數 xi對應引數,為簡化上述式子,通過將x0=1 加入 hθ(x),可以得到:
hθ(x)=i=onθixi=θTX(1)
  其中θTX 為係數和變數對應向量表示式。
  再定義如下損失函式J(θ)
  J(θ)=12j=1m(hθ(x(j))y(j))2(2)
  其中hθ(
x(j))
為對應第j個樣本x(j) 代入hθ(x) 得到的結果,m為樣本個數,需要注意的是,梯度演算法一般用於有監督或半監督式機器學習,而常量y(j) 的存在是為了訓練樣本得到更加準確的θ 引數。另外,係數0.5是為了求導方便而乘上的,對結果並無影響。
  據此,為最小化上述J(θ) 損失函式,我們通過θ自適迭代,達到一個理想的估計值,使得:
  J(θ)ϵ
  其中ϵ 為誤差率,為方便理解,我們從Batch gradient descent(批梯度下降說起),有如下式子:
  θi=θiαθiJ(θ)(3)
  其中 α 為梯度步長,也稱為學習因子,其大小決定了梯度下降的速度,越大的步長則學習速度也越快,但同時振盪往返也會加劇,有時反而使得速度變慢,同時若梯度步長太小,也會使得速度變慢,而容易陷入區域性極小。
  結合(2)式和(3)式,假設只有一個樣本,則可以得到:
  θ
i
=θiαθiJ(θ)=θiαθiJ(12(hθ(x)y)2)=θiα(212(hθ(x)y)θi(hθ(x)y))=θiα(hθ(x)y)xi

  其中i表示樣本維度i,當樣本數為m時,則:
θi=θiαθi=θiα

相關推薦

演算法SGD+logistic+Adaboost構建快速增強LR模型

寫在最前: - 之前在新浪開個部落格寫東西,總有些不方便,後來看了CSDN,內建Markdown,寫起來突感一見如故,十分感動。 - 工作中由於經常需要做一些視覺化和演算法類的研究,所以開個CSDN總結和記錄一下。 下面主要講的是

演算法計算字串中子串的出現次數(java)

演算法篇:計算字串中子串的出現次數(java) 方法一:使用String類的substring(indexStart,indexEnd)方法 首先解釋一下substring(indexStart,indexEnd)方法: str.substring(indexStart,inde

演算法3最常用的排序——快速排序

、        到此第一輪“探測”真正結束。此時以基準數6為分界點,6左邊的數都小於等於6,6右邊的數都大於等於6。回顧一下剛才的過程,其實哨兵j的使命就是要找小於基準數的數,而哨兵i的使命就是要找大於基準數的數,直到i和j碰頭為止。        OK,解釋完畢。現在基準數6已經歸位,它正好處在序列的

機器學習演算法從為什麼梯度方向是函式變化率最快方向詳談梯度下降演算法

梯度下降法是機器學習中常用的引數優化演算法,使用起來也是十分方便!很多人都知道梯度方向便是函式值變化最快的方向,但是有認真的思考過梯度方向是什麼方向,梯度方向為什麼是函式值變化最快的方向這些問題嘛,本文便以解釋為什麼梯度方向是函式值變化最快方向為引子引出對梯度

機器學習演算法最大似然估計證明最小二乘法合理性

最小二乘法的核心思想是保證所有資料誤差的平方和最小,但我們是否認真思考過為什麼資料誤差平方和最小便會最優,本文便從最大似然估計演算法的角度來推導最小二乘法的思想合理性,下面我們先了解一下最大似然估計和最小二乘法,最後我們通過中心極限定理剋制的誤差ε服從正態分佈

演算法輸出集合的所有子集

題目描述:輸出含有n個元素集合的所有子集。例如,三個元素{a,b,c}的所有子集是:{},{a},{b},{c},{a,c},{ac},{b,c},{a,b,c}.輸入:abc輸出:cbabacaacb

演算法神奇的卡塔蘭數Catalan

這段時間複習資料結構,想起來這神奇的卡塔蘭數1.百科簡介卡塔蘭數的來歷:卡特蘭數又稱卡塔蘭數,是組合數學中一個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894

乾貨合集】專案管理、需求快速如何實現?17文章搞懂敏捷開發!

轉載:https://yq.aliyun.com/articles/591419?utm_content=m_49379為了讓大家get到研發效能有關的敏捷開發和架構的相關知識,現將雲棲社群2017年度與之相關的前沿技術理念及實踐技術成果資料整理出來,供大家學習。【敏捷開發】

阿里雲首次在ASPLOS'19釋出重磅論文揭祕幫助ECS快速的熱升級技術

第24屆ACM程式語言和作業系統(ASPLOS'19),於2019年4月13日至17日,在普羅維登斯召開,阿里雲高階技術專家鄭曉代

馬蜂窩推薦排序演算法模型是如何實現快速

(馬蜂窩技術原創文章,微信ID:mfwtech)   Part.1馬蜂窩推薦系統架構 馬蜂窩推薦系統主要由召回(Match)、排序(Rank)、重排序(Rerank)幾個部分組成,整體架構圖如下: 在召回階段,系統會從海量的內容庫篩選出符合使用者偏好的候選集(百級、千級);排序階段在此基礎上,基

python3深刻理解__iter__和__next__ 器的原理(用自定義器方法進行講解)

1.iter 的用法 咱都知道, list ,tuple,dict 都是可迭代物件,如果想讓他們轉化成迭代器. 我們可以這麼做,呼叫 inter()方法,它會返回一個迭代器. 例如: from collections import Iterable,Iterator a=[1,

快速開發使用方法總結

  為什麼我在這裡主要討論迭代式軟體開發?本文在此拋開千篇一律的理論,擬就根據多年的實踐,總結出一套比較務實、可操作性強的方法,以期望在有限的資源下確保軟體質量得到較大保證。一家之見,紕漏之處還請大家多多指正。 迭代式軟體開發模式簡要流程如下:     &nbs

Python基礎學習四for迴圈,函式,

12、for迴圈 """ for 變數 in 序列 執行的程式碼塊 """ list01 = ['joe', 'susan', 'jack' ,'Tom'] # 遍歷列表 for i in list01: print(i) pass空操作,無任何意義, pas

JAVA集合for迴圈、foreach、器效率比較

前言 寫程式碼的過程中,經常需要遍歷集合,選擇一個高效的遍歷方法非常重要,今天來看下for迴圈、foreach、迭代器效率比較,主要從ArrayList和LinkedList來分析。 直接上程式碼測試 ArrayList List<Integer>

敏捷開發的26條至理名言 快速開發使用方法總結

2、不要破壞構建:非常明顯,但必須被包含在任何軟體開發建議清單中。程式設計師在簽入之前採取所有合適的預防措施進行測試,則永遠不會破壞構建。如果構建被破壞,通常是因為有人偷懶了。 3、在用例需要之前,不要實現程式:當你實現一個特定的類,你應該在腦海中有一個特定的用例,同時應該只實現用例需要的方法。你可以考慮該類

敏捷開發-快速

今天跟大家分享的是“敏捷開發、快速迭代”。我們大都採用的是“瀑布開發模式”,有了問題,就得返工,雖然最終的產品會比較齊全完善,但是開發週期太長,開發人員會產生排斥,甚至厭惡的心理。經過YH系統的開發,也且生體會到了這一弊端。 有問題就要去解決它!於是我想到了“

“全棧2019”Java第九十三章內部類應用場景(器設計模式)

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第九十三章:內部類應用場景(迭代器設計模式) 下一章 “全棧2019”Java第九十四章:區

C++11(及現代C++風格)和快速開發

過去的一年我在微軟亞洲研究院做輸入法,我們的產品叫“英庫拼音輸入法” (下載Beta版),如果你用過“英庫詞典”(現已更名為必應詞典),應該知道“英庫”這個名字(實際上我們的核心開發團隊也有很大一部分來源於英庫團隊的老成員)。整個專案是微軟亞洲研究院的自然語言處理組、網際網

產品快速需要注意點

    產品的快速迭代,先確實階段性時間,再考慮功能點。    在做產品時,要考慮下一個產品版本的時間什麼時候出,然後列出所有的需求的功能點,對所有需求做一個優先順序排序,確認在當前時間下面,能完成哪些需求。有點不緊急的需求可以放到下一個版本中。    生活不易,請微笑對待你

產品快速時用Git做分支管理的詳細步驟

轉載 簡書:https://www.jianshu.com/p/d917139304eb一、前言本文用例項來講解Git的分支管理在產品快速迭代開發過程中解決實際問題的詳細方案,面向的是對Git有一定了解的朋友(多圖預警)。二、背景最近接手了一個程式碼質量慘不忍睹的專案,立即著