信用評分與數據挖掘(一~七)

一、數據挖掘思惟導圖

思惟導圖爲:Dr. Saed Sayad總結的An Introduction to Data Mining
我的更喜歡的分類方式爲:
一、分類與預測
二、關聯
三、聚類
四、異常檢測
二、信用評分中的常見算法
信用評分中主要包括申請評分、行爲評分、催收評分卡、反欺詐

 

其中,申請評分和行爲評分比較成熟的是邏輯迴歸,其次層次聚類和判別分析、決策樹
申請和信用評分須要比較好的解釋性,也有的使用神經網絡作,只是個噱頭。
反欺詐中,不須要有好的解釋性,神經網絡在這方面這方面使用的比較多html

 

其實,當前在評分中,幾乎沒有單一的算法,都是綜合處理。即便是傳統的邏輯迴歸,針對變量的共線性分析也會採用不少方法,另外針對單一變量的分段也採用決策樹來進行最優劃分。
三、總結
實際上處理數據,主要包括:
一、針對數據進行數據的探索,各類統計指標,單個變量的狀況分析,針對單變量的數據預處理和規範化
二、針對數據中變量和變量之間的關係進行分析
三、基於變量和變量之間的分析或者變量的分析,作出結論
四、經過原始數據驗證模型和數據的吻合程度,經過新數據驗證模型的預測程度
數據處理工具選擇:
一、小數據量,spss比較簡單好用,你能夠不須要寫代碼,可是方法原理和結果仍是要搞懂
二、中等數據量:sas不錯,stat沒用過
三、大數據量:Spark或者Hadoop,spark上有一些算法實現,有些算法仍是要本身按照spark或者hadoop的變成模型來實現。從傳統的算法變爲能夠在spark和hadoop上能夠運行的算法也有不少工做量,須要既懂算法,又懂spark或者hadoop原理。
開發語言選擇:
一、工具類,spss和sas都有本身的語言,sas在數據處理上仍是很強大
二、開發類:若是隻是分析,R和Python都很流行,看我的喜愛;若是和程序的集成,相對來講Java更合適,雖然python集成也比較方便。
信用評分與數據挖掘http://blog.csdn.net/everlasting_188/article/details/52294973
爲「逾期」正名
所謂逾期,在金融領域是指借款人沒有按照約定或承諾的時間點履行還本付息義務所致使的債務延期現象,說白了,就是借了錢,沒有在說好的時間還,以前主要應用於銀行貸款和信用卡領域。
對銀行來講,逾期是指借款方在銀行規定的最後還款日或繳息日,未能及時足額還款或繳息的情形。一般出現這種狀況,銀行會將借款方暫時列爲催收對象,並於7日內打電話提醒,借款方若是在7日內補足,銀行通常不會收取滯納金,但若是超過7天仍未繳款,銀行就會將這筆貸款正式列爲「催收」並收取滯納金。
信用卡逾期不是指到了最後還款日不還,而是到了下個月帳單日不還纔算逾期,一旦持卡人逾期,銀行會從第二天起按天天萬分之五計息,逾期會計複利,所以逾期時間越長,每日利息就會越高。
在P2P行業,逾期率並無一個統一的計算標準,目前使用率比較高的標準出自中國小額信貸聯盟P2P行業委員會發布的《我的對我的(P2P)小額信貸信息諮詢服務機構行業自律公約》,計算公式是「逾期90天以上的未還剩餘資本金總額/可能產生90天+預期累計合同總額」,也就是說,當前已經產生90天以上的逾期,是分子,剩餘的有可能產生的90天以上的逾期,是分母,而那些不可能產生90天以上逾期的,則被剔除在分母以外(如那些到期日期至當前不足90天或當前還處於正常借款期內的借款)。
翻閱P2P平臺的季報、半年報、年報等信息,咱們會發現這類報告格式廣泛簡潔明瞭,多以可視化形式展示。其中,披露的內容主要集中於累計成交額、註冊用戶數、爲投資者賺取收益、平均年化收益等能夠給平臺增光添彩的部分,而對於逾期率、壞帳率、營業收入、淨利潤等指標多有意繞過。目前,會在報告中正規、真實披露相關內容的多爲在海外或新三板上市的平臺。
除了避而不談,還有一些平臺故意壓低逾期率等指標的比例,固然,這其中包括了合理壓低與惡意壓低兩種。合理壓低有如下幾種方法:一、由於平臺上線時間不少,全部借款都未到期,因此對外宣稱本身逾期率爲零;二、由第三方擔保的平臺,擔保公司代償的部分不計入逾期率;三、平臺抵押類項目,由於有足值抵押物,因此不計入逾期率;四、平臺用自有資金或風險撥備把逾期借款換上。惡意壓低主要指不合理的擴大逾期率的分母,手段包括:一、將歷史以來全部的成交額做爲分母;二、將全部待收做爲分母,這樣逾期率看起來都會很低。
今年3月,當時還未正式掛牌的中國互聯網金融協會曾出臺一份《互聯網金融信息披露規範(初稿)》,其中對P2P從業機構的應披露內容作了要求,其中就包括了累計違約率、平臺項目逾期率、近三月項目逾期率、借款逾期金額、代償金額、借貸逾期率、借貸壞帳率等運營信息。6月,上海互金行業協會發布P2P平臺信息披露工做指引,要求P2P會員單位按期披露主體、產品、業務、財務和其餘等五大類49項信息,其中也包括了交易逾期狀況、主要產品90天以上逾期金額和90天以上逾期率。
在此,但願監管層可以儘早對P2P平臺逾期率的計算方法和披露方式進行出統1、規範的要求和標準,這將對P2P行業的健康發展起到很大幫助。
壞帳與違約
很多分析P2P的文章中,每每將預期與壞帳不加分辨或直接等同,這是不對的,實際上二者是有區別的。逾期的意思,上文已經解釋,其重要的時間點是超過90天以上,也就是三個月左右。而壞帳是在逾期的基礎上,在對借款方進行了相關的催收等資產處置工做後,債權人依然沒法收回本息,且在從此一段時間內均可能沒法收回本息,在P2P行業內,這個時間段是超過120天。因此說,逾期並不意味着壞帳。
所謂違約,是指借款方未能按照借款合同上的約定,償還貸款本息,這是一個覆蓋性更廣的概念,逾期和壞帳,其實都屬於違約,由於它們都沒有遵照合同上的約定時間還款。二者的區別是,逾期雖然沒有遵照還款時間,可是在超過還款期限後的90天-120天這個時間段內仍是還了,而壞帳則是超過約定還款日期120天后仍是沒有還款,並且有可能一直不會還了。
A卡(Application score card)申請評分卡
B卡(Behavior score card)行爲評分卡
C卡(Collection score card)催收評分卡
評分機制的區別在於:
1.使用的時間不一樣。分別側重貸前、貸中、貸後;
2.數據要求不一樣。A卡通常可作貸款0-1年的信用分析,B卡則是在申請人有了必定行爲後,有了較大數據進行的分析,通常爲3-5年,C卡則對數據要求更大,需加入催收後客戶反應等屬性數據。
3.每種評分卡的模型會不同。在A卡中經常使用的有邏輯迴歸,AHP等,而在後面兩種卡中,常使用多因素邏輯迴歸,精度等方面更好。
        評分卡是綜合我的客戶的多個維度信息(如基本狀況、償債能力、信用情況等,重點關注借貸意願、償債能力、還款意願),基於這些信息綜合運用數學分析模型,給我的綜合評分,判斷違約的可能性的工具。
       生活中存在許多「顯性」或「隱性」的「評分卡」。例如:選購汽車--綜合價格、油耗、安全係數、性能、外觀等來因素。買仍是不買?包括以前小編實習中參與的車聯網交通數據清理,如何評價車主是否爲「中國好司機」會涉及到車輛是否綠色出行(遲早高峯、週末是否出行),車主的駕駛行爲(是否疲勞駕駛、是否夜間駕駛、急加速急轉彎百千米次數等)以及月出行次數的合理程度等。
       就分析方法發而言,如今分類算法有不少種,決策樹,邏輯迴歸,支持向量機,神經網絡等等,均可以實現這個目的。但要明確一點是:數據是決定模型的核心,什麼樣的數據決定什麼樣的模型。
邏輯迴歸彙總的變量選擇
一、 使用全部的變量:這是擬合模型的最簡單的方法; 
二、 正向選擇:這種模型如要以下步驟。第一步,用截距對模型進行擬合,接下來,檢驗沒有歸入模型的變量並選擇卡方統計量最大、符合進入條件的變量,這個條件能夠通選選項SLE肯定。一旦這個變量被歸入模型就不會被移出,重複這個過程知道全部變量歸入。 
三、 逆向選擇:與正向相反,第一步,使用全部的變量進行擬合,而後,在每一步,移出Wald卡方統計量P值最大的變量,一旦移出,將不會歸入。 
四、 stepwise選擇:剛開始模型只有截距項,正向選擇最優,逆向選擇最差,經過SLE和SLS的值控制歸入和移出模型變量的p值。 
五、 得分最有統計模型:最優得分法與stepwise方法類似,可是使用分支界定算法找出木偶性的分數統計量最高變量的子集,從而找出最優解。
相關方法
MLE極大似然估計
 極大似然原理的直觀想法是:一個隨機試驗若有若干個可能的結果A,B,C,…。若在僅僅做一次試驗中,結果A出現,則通常認爲試驗條件對A出現有利,也即A出現的機率很大。通常地,事件A發生的機率與參數a相關,A發生的機率記爲P(A,a),則a的估計應該使上述機率達到最大,這樣的a顧名思義稱爲極大似然估計。 
  極大似然估計是能溝統統過模型以最大機率在線樣本觀察數據,邏輯迴歸模型主要使用極大似然法來進行估計
SLE
  sas中在變量選舉進入的參數,SLE(sets criterion for entry into model) 是變量進入模型的標準即統計意義水平值P<0.3,是定邏輯迴歸中變量歸入的主要條件。
SLS
  sas中在變量選舉進入的參數,SLS(sets criterion for staying in model)是變量在模型中保留的標準即統計意義水平值P<0.3,是定邏輯迴歸中變量保留的主要條件。邏輯迴歸變量進入後,由於新的變量進入致使老的變量對整個模型的貢獻不足,從中移出的閥值。
卡方校驗
原理
  卡方檢驗就是統計樣本的實際觀測值與理論推斷值之間的偏離程度,實際觀測值與理論推斷值之間的偏離程度就決定卡方值的大小,卡方值越大,越不符合;卡方值越小,誤差越小,越趨於符合,若兩個值徹底相等時,卡方值就爲0,代表理論值徹底符合。 
  卡方檢驗的兩個應用是擬合性檢驗和獨立性檢驗擬合性檢驗是用於分析實際次數與理論次數是否相同,適用於單個因素分類的計數數據。獨立性檢驗用於分析各有多項分類的兩個或兩個以上的因素之間是否有關聯或是否獨立的問題。
應用場景
卡方校驗的場景 
1.應用實例——適合度檢驗 
  實際執行多項式試驗而獲得的觀察次數,與虛無假設的指望次數相比較,稱爲卡方適度檢驗,即在於檢驗兩者接近的程度,利用樣本數據以檢驗整體分佈是否爲某一特定分佈的統計方法。 
2.應用實例2——獨立性檢驗 
  卡方獨立性檢驗是用來檢驗兩個屬性間是否獨立。一個變量做爲行,另外一個變量做爲列。 
3.應用實例3——統一性檢驗 
  檢驗兩個或兩個以上整體的某一特性分佈,也就是各「類別」的比例是否統一或相近,通常稱爲卡方統一性檢驗或者卡方同質性檢驗。 
具體參考例子 
見文檔:http://wiki.mbalib.com/wiki/%E5%8D%A1%E6%96%B9%E6%A3%80%E9%AA%8C 

卡方分佈與皮爾遜卡方檢驗的關係
摘錄自知乎,總結的比較到位 
  咱們知道,從正態分佈裏隨機抽取n個值的平方的和構成了自由度爲n-1的卡方分佈,在使用卡方分佈表進行假設檢驗時,咱們須要用樣本方差除整體方差進行標準化。如今的問題是使用皮爾遜卡方檢驗的時候,爲何用的不是整體方差進行標準化,而是使用理論頻數進行標準化? 
  理論證實,實際觀察次數(fo)與理論次數(fe),又稱指望次數)之差的平方再除以理論次數所得的統計量,近似服從卡方分佈。因此用理論次數標準化
模型選擇的幾種方法:AIC,BIC,HQ準則
引用:http://blog.csdn.net/xianlingmao/article/details/7891277
  常常地,對一堆數據進行建模的時候,特別是分類和迴歸模型,咱們有不少的變量可供使用,選擇不一樣的變量組合能夠獲得不一樣的模型,例如咱們有5個變量,2的5次方,咱們將有32個變量組合,能夠訓練出32個模型。可是哪一個模型更加的好呢?目前經常使用有以下方法: 
AIC=-2 ln(L) + 2 k 中文名字:赤池信息量 akaike information criterion 
BIC=-2 ln(L) + ln(n)*k 中文名字:貝葉斯信息量 bayesian information criterion 
HQ=-2 ln(L) + ln(ln(n))*k hannan-quinn criterion 
  其中L是在該模型下的最大似然,n是數據數量,k是模型的變量個數。 
  注意這些規則只是刻畫了用某個模型以後相對「真實模型」的信息損失【由於不知道真正的模型是什麼樣子,因此訓練獲得的全部模型都只是真實模型的一個近似模型】,因此用這些規則不能說明某個模型的精確度,即三個模型A, B, C,在經過這些規則計算後,咱們知道B模型是三個模型中最好的,可是不能保證B這個模型就可以很好地刻畫數據,由於頗有可能這三個模型都是很是糟糕的,B只是爛蘋果中的相對好的蘋果而已。 
  這些規則理論上是比較漂亮的,可是實際在模型選擇中應用起來仍是有些困難的,例如上面咱們說了5個變量就有32個變量組合,若是是10個變量呢?2的10次方,咱們不可能對全部這些模型進行一一驗證AIC, BIC,HQ規則來選擇模型,工做量太大。
總結
邏輯迴歸比較複雜,推薦《Logistic迴歸模型——方法與應用》王濟川郭志剛著,這本書不錯
        您或許據說過一次硬查詢可能使您的信用記錄受影響。可是您可能並不知道這究竟是爲何,到底什麼是硬查詢?
  (因審覈貸款業務申請緣由而查詢信用報告叫硬查詢。如貸款審批、信用卡審批。)
  理解硬查詢如何進行相當重要:經過低息貸款購物能夠爲您省錢。可是若是您忘了按時還款,極可能會在信用查詢時爲您的信用減分,使您以後的借款利率升高。對於相似車貸、房貸這樣的大額貸款來講,哪怕信用分只降了一點,都意味着貸款人將支付更高的利率,進而致使您在還貸期支付更多的利息。因此避免沒必要要的違約實際上是爲本身省錢。
  在您查詢信用信息時,會標註在貸款人信用報告裏。好比說您申請一項汽車貸款,借款方經過Experian徵信公司調用了您的信息記錄和FICO分數。「您的信用信息被一家特定公司使用了」這一記錄將記錄在您的Experian公司報告中,標註了索取報告的公司名以及查詢的方式。
  在咱們談論硬查詢如何工做的細節以前,宏觀的判斷很重要。除非您真的是一個重度刷卡消費者(不止是一時使用),硬查詢不會對您的信用分形成多大的影響。「創建新的信用帳戶」佔到您FICO信用評分的10%,查詢只是這類中的一部分。因此單次查詢不會使您的信用分下降5分以上,但這只是在硬查詢時,並且有一些限制條件。
  另外,這樣的一次詢價將在您的信用記錄上保留兩年,可是隻有一年內的記錄會對您的FICO信用分產生影響,至少如今大部分評分模型是這樣設計的。而太久的查詢記錄早已被忽略。
  硬查詢 VS. 軟查詢
  硬查詢是那些會影響您信用評分的查詢行爲,他們代表您正在積極地獲取信用額度,無論是車貸、抵押、學生貸款仍是信用卡貸款。
  偏偏相反,軟查詢並非爲使用信用卡或貸款購物而發生,不會影響您的信用評分。好比說,若是一個借款人給您發來一個預受權的信用額度,這樣的查詢被稱爲「獎勵」查詢,是一種軟查詢。這時當您查詢本身的信用評分時,也會被定義爲軟查詢。相似的,若是您已經持有一張信用卡或者獲得一筆貸款,徵信公司將不按期地查詢您的帳戶,而這種查詢將不會記錄在您的信用報告中。
  僱主或者保險公司出於對您信用分數的計算目的而進行的查詢也不會被記錄。
  避免信用損失
  有幾種方式來最小化您由於硬查詢而致使的我的信用損失。
  作好決定再出手:正在尋找一份按揭貸款,車貸,或是學生貸款?請在兩週的時間內完成全部消費。這樣的話,全部申請僅算做一次查詢。由於大部分信用評分模型會把1445天內的查詢行爲統一視爲一次(具體時間取決於被使用的是哪一種模型)。
  時刻監控您的信用帳戶:在您要使用信用消費以前檢查一下您的信用報告和信用評分。而後作些功課,申請您最有可能獲得的貸款額。經過Credit.com的免費信用報告卡,您能每個月免費查看您的信用分數。在查看期間,咱們會根據您的我的信用檔案和信用評分爲您推薦適合您的信用卡和貸款項目,您幫助您省錢。
  誰在訪問個人信用帳戶
  您閱覽您的信用報告時,您會看到一個查詢清單,可是您不會看到清單中的公司名字。首先肯定這些查詢是否是獎勵詢價。若是是,那麼您極可能是獲得了一個預受權的信用貸款,請不要擔憂(您能夠在OptOutPrescreen.com網站上拒絕預受權)。若是不是這種狀況,那麼公司的聯繫方式必定會顯示在清單上,因此您可以聯繫到他們。若是這些信息沒有被提供,能夠請信用報告代理商幫您取得。
邏輯迴歸(Logistic Regression,簡稱LR)是機器學習中十分經常使用的一種分類算法,在互聯網領域獲得了普遍的應用,不管是在廣告系統中進行CTR預估,推薦系統中的預估轉換率,反垃圾系統中的識別垃圾內容……均可以看到它的身影。LR以其簡單的原理和應用的普適性受到了廣大應用者的青睞。實際狀況中,因爲受到單機處理能力和效率的限制,在利用大規模樣本數據進行訓練的時候每每須要將求解LR問題的過程進行並行化,本文從並行化的角度討論LR的實現。
   1. LR的基本原理和求解方法
    LR模型中,經過特徵權重向量對特徵向量的不一樣維度上的取值進行加權,並用邏輯函數將其壓縮到0~1的範圍,做爲該樣本爲正樣本的機率。邏輯函數爲,曲線如圖1。

圖1 邏輯函數曲線
給定M個訓練樣本並行邏輯迴歸,其中Xj={xji|i=1,2,…N} 爲N維的實數向量(特徵向量,本文中全部向量不做說明都爲列向量);yj取值爲+1或-1,爲分類標籤,+1表示樣本爲正樣本,-1表示樣本爲負樣本。在LR模型中,第j個樣本爲正樣本的機率是:
 其中W是N維的特徵權重向量,也就是LR問題中要求解的模型參數。
求解LR問題,就是尋找一個合適的特徵權重向量W,使得對於訓練集裏面的正樣本,並行邏輯迴歸值儘可能大;對於訓練集裏面的負樣本,這個值儘可能小(或並行邏輯迴歸儘可能大)。用聯合機率來表示:

對上式求log並取負號,則等價於:
   公式(1)
公式(1)就是LR求解的目標函數。
尋找合適的W令目標函數f(W)最小,是一個無約束最優化問題,解決這個問題的通用作法是隨機給定一個初始的W0,經過迭代,在每次迭代中計算目標函數的降低方向並更新W,直到目標函數穩定在最小的點。如圖2所示。

圖2 求解最優化目標函數的基本步驟
不一樣的優化算法的區別就在於目標函數降低方向Dt的計算。降低方向是經過對目標函數在當前的W下求一階倒數(梯度,Gradient)和求二階導數(海森矩陣,Hessian Matrix)獲得。常見的算法有梯度降低法、牛頓法、擬牛頓法。
(1) 梯度降低法(Gradient Descent)
    梯度降低法直接採用目標函數在當前W的梯度的反方向做爲降低方向:

其中並行邏輯迴歸爲目標函數的梯度,計算方法爲:

(2) 牛頓法(Newton Methods)
    牛頓法是在當前W下,利用二次泰勒展開近似目標函數,而後利用該近似函數來求解目標函數的降低方向:

其中Bt爲目標函數f(W)在Wt處的海森矩陣。這個搜索方向也稱做牛頓方向。
(3) 擬牛頓法(Quasi-Newton Methods):
    擬牛頓法只要求每一步迭代中計算目標函數的梯度,經過擬合的方式找到一個近似的海森矩陣用於計算牛頓方向。最先的擬牛頓法是DFP(1959年由W. C. Davidon提出,並由R. Fletcher和M. J. D. Powell進行完善)。DFP繼承了牛頓法收斂速度快的優勢,而且避免了牛頓法中每次迭代都須要從新計算海森矩陣的問題,只須要利用梯度更新上一次迭代獲得的海森矩陣,但缺點是每次迭代中都須要計算海森矩陣的逆,才能獲得牛頓方向。
        BFGS是由C. G. Broyden, R. Fletcher, D. Goldfarb和D. F. Shanno各自獨立發明的一種方法,只須要增量計算海森矩陣的逆Ht=Bt-1,避免了每次迭代中的矩陣求逆運算。BFGS中牛頓方向表示爲

  L-BFGS(Limited-memory BFGS)則是解決了BFGS中每次迭代後都須要保存N*N階海森逆矩陣的問題,只須要保存每次迭代的兩組向量和一組標量便可:

在L-BFGS的第t次迭代中,只須要兩步循環既能夠增量計算牛頓方向:

2. 並行LR的實現
    由邏輯迴歸問題的求解方法中能夠看出,不管是梯度降低法、牛頓法、擬牛頓法,計算梯度都是其最基本的步驟,而且L-BFGS經過兩步循環計算牛頓方向的方法,避免了計算海森矩陣。所以邏輯迴歸的並行化最主要的就是對目標函數梯度計算的並行化。從公式(2)中能夠看出,目標函數的梯度向量計算中只須要進行向量間的點乘和相加,能夠很容易將每一個迭代過程拆分紅相互獨立的計算步驟,由不一樣的節點進行獨立計算,而後歸併計算結果。
    將M個樣本的標籤構成一個M維的標籤向量,M個N維特徵向量構成一個M*N的樣本矩陣,如圖3所示。其中特徵矩陣每一行爲一個特徵向量(M行),列爲特徵維度(N列)。

圖3 樣本標籤向量 & 樣本矩陣
   若是將樣本矩陣按行劃分,將樣本特徵向量分佈到不一樣的計算節點,由各計算節點完成本身所負責樣本的點乘與求和計算,而後將計算結果進行歸併,則實現了「按行並行的LR」。按行並行的LR解決了樣本數量的問題,可是實際狀況中會存在針對高維特徵向量進行邏輯迴歸的場景(如廣告系統中的特徵維度高達上億),僅僅按行進行並行處理,沒法知足這類場景的需求,所以還須要按列將高維的特徵向量拆分紅若干小的向量進行求解。
(1) 數據分割
    假設全部計算節點排列成m行n列(m*n個計算節點),按行將樣本進行劃分,每一個計算節點分配M/m個樣本特徵向量和分類標籤;按列對特徵向量進行切分,每一個節點上的特徵向量分配N/n維特徵。如圖4所示,同同樣本的特徵對應節點的行號相同,不一樣樣本相同維度的特徵對應節點的列號相同。

圖4 並行LR中的數據分割
一個樣本的特徵向量被拆分到同一行不一樣列的節點中,即:

其中Xr,k表示第r行的第k個向量,X(r,c),k表示Xr,k在第c列節點上的份量。一樣的,用Wc表示特徵向量W在第c列節點上的份量,即:
 
(2) 並行計算
    觀察目標函數的梯度計算公式(公式(2)),其依賴於兩個計算結果:特徵權重向量Wt和特徵向量Xj的點乘,標量和特徵向量Xj的相乘。能夠將目標函數的梯度計算分紅兩個並行化計算步驟和兩個結果歸併步驟
    ① 各節點並行計算點乘,計算並行邏輯迴歸,其中k=1,2,…,M/m,d(r,c),k,t表示第t次迭代中節點(r,c)上的第k個特徵向量與特徵權重份量的點乘,Wc,t爲第t次迭代中特徵權重向量在第c列節點上的份量。
   ② 對行號相同的節點歸併點乘結果

計算獲得的點乘結果須要返回到該行全部計算節點中,如圖5所示。

           圖5 點乘結果歸併
    ③ 各節點獨立算標量與特徵向量相乘

G(r,c),t能夠理解爲由第r行節點上部分樣本計算出的目標函數梯度向量在第c列節點上的份量。
 ④ 對列號相同的節點進行歸併:

Gc,t就是目標函數的梯度向量Gt在第c列節點上的份量,對其進行歸併獲得目標函數的梯度向量:

這個過程如圖6所示。

   綜合上述步驟,並行LR的計算流程如圖7所示。比較圖2和圖7,並行LR實際上就是在求解損失函數最優解的過程當中,針對尋找損失函數降低方向中的梯度方向計算做了並行化處理,而在利用梯度肯定降低方向的過程當中也能夠採用並行化(如L-BFGS中的兩步循環法求牛頓方向)

3. 實驗及結果
    利用MPI,分別基於梯度降低法(MPI_GD)和L-BFGS(MPI_L-BFGS)實現並行LR,以Liblinear爲基準,比較三種方法的訓練效率。Liblinear是一個開源庫,其中包括了基於TRON的LR(Liblinear的開發者Chih-Jen Lin於1999年建立了TRON方法,而且在論文中展現單機狀況下TRON比L-BFGS效率更高)。因爲Liblinear並無實現並行化(事實上是能夠加以改造的),實驗在單機上進行,MPI_GD和MPI_L-BFGS均採用10個進程。
    實驗數據是200萬條訓練樣本,特徵向量的維度爲2000,正負樣本的比例爲3:7。採用十折交叉法比較MPI_GD、MPI_L-BFGS以及Liblinear的分類效果。結果如圖8所示,三者幾乎沒有區別。

將訓練數據由10萬逐漸增長到200萬,比較三種方法的訓練耗時,結果如圖9,MPI_GD因爲收斂速度慢,儘管採用10個進程,單機上的表現依舊弱於Liblinear,基本上都須要30輪左右的迭代才能達到收斂;MPI_L-BFGS則只須要3~5輪迭代便可收斂(與Liblinear接近),雖然每輪迭代須要額外的開銷計算牛頓方向,其收斂速度也要遠遠快於MPI_GD,另外因爲採用多進程並行處理,耗時也遠低於Liblinear。

圖9 訓練耗時對比
轉載於: http://blog.sina.com.cn/s/blog_6cb8e53d0101oetv.html 

一、綜述
機器學習的優化問題中,梯度降低法和牛頓法是經常使用的兩種凸函數求極值的方法,他們都是爲了求得目標函數的近似解。梯度降低的目的是直接求解目標函數極小值,而牛頓法則變相地經過求解目標函數一階導爲零的參數值,進而求得目標函數最小值。在邏輯迴歸模型的參數求解中,通常用改良的梯度降低法,也能夠用牛頓法。
2 梯度降低法
2.1算法描述
一、肯定偏差範圍和降低的步長,肯定函數的導函數
二、while(|新值 -舊值| >偏差)
三、       舊值=新值
四、       新值=初始值-步長*導函數值,來進行梯度降低
算法的一些問題:每一步走的距離在極值點附近很是重要,若是走的步子過大,容易在極值點附近震盪而沒法收斂。解決辦法:將alpha設定爲隨着迭代次數而不斷減少的變量,但過小會致使迭代次數不少。
2.二、java代碼示例
代碼轉自:http://www.lailook.net/klxx/04/2016-01-05/51426.html
[java] view plain copy
 
 
 在CODE上查看代碼片派生到個人代碼片
  1.  /** 
  1.  
  1.  * 梯度降低算法,求解 f(x)=x^4-3x^3+2 最小值 
  1.  * 導數爲: f'(x)=4x^3-9x^2 
  1.  * @author Zealot 
  1.  * @date 2015年12月13日 
  1.  */  
  1. public class GradientDescent {  
  1. //  通過計算, we expect that the local minimum occurs at x=9/4  
  1.    
  1.     double x_old = 0;  
  1.     static double x_new = 6// 從 x=6 開始迭代  
  1.     double gamma = 0.01// 每次迭代的步長  
  1.     double precision = 0.00001;//偏差  
  1.     static int iter = 0;//迭代次數  
  1.     //目標函數的導數  
  1.     private double  derivative(double x) {  
  1.         return 4 * Math.pow(x, 3) - 9 *Math.pow(x, 2);  
  1.     }  
  1.       
  1.     private void getmin() {  
  1.         while (Math.abs(x_new - x_old) > precision){  
  1.             iter++;  
  1.             x_old = x_new;  
  1.             x_new = x_old - gamma * derivative(x_old);  
  1.         }  
  1.     }  
  1.       
  1.     public static void main(String[] args) {  
  1.         GradientDescent gd = new GradientDescent();  
  1.         gd.getmin();  
  1.         System.out.println(iter+": "+x_new);  
  1.     }  
  1. }  
  1.    


三、牛頓法
3.1算法描述
求解f(x)=0,若是f(x)可導,等價爲迭代x = x-f(x)/f'(x)的最小值,算法以下:
輸入:初始值x0,偏差榮制TOL;最大迭代次數m
輸入: 近似解p或者失敗信息
一、 p0=x0
二、while (小於迭代次數)
三、   p= p0-f(p0)/f'(p0)
四、  若|p-p0|<TOL,停機,不然p0=p
3.2例子

四、參考文檔
機器學習中梯度降低法跟牛頓法的比較
http://www.myexception.cn/cloud/1987100.html
梯度降低法(一)入門
http://blog.csdn.NET/nupt123456789/article/details/8281923
Java實現梯度降低算法
http://blog.csdn.Net/nupt123456789/article/details/8281923
梯度降低、牛頓法、擬牛頓法
http://blog.csdn.net/luo86106/article/details/40510383
講解更深刻和詳細的以下:
梯度降低法與牛頓法的解釋與對比
http://www.cnblogs.com/happylion/p/4172632.html
牛頓法、雅克比矩陣、海森矩陣
http://blog.csdn.net/ubunfans/article/details/41520047
系列文章收集在比特幣與互聯網金融風控專欄中
虛擬變量定義
  在實際建模過程當中,被解釋變量不但受定量變量影響,同時還受定性變量影響。例如須要考慮性別、民族、不一樣歷史時期、季節差別、企業全部制性質不一樣等因素的影響。這些因素也應該包括在模型中。
  因爲定性變量一般表示的是某種特徵的有和無,因此量化方法可採用取值爲1或0。這種變量稱做虛擬變量,用D表示。虛擬變量應用於模型中,對其迴歸係數的估計與檢驗方法與定量變量相同。
虛擬變量對模型的意義
  一般,咱們假設的因變量與自變量之間的關係既是線性的,又是能夠疊加,若是這些假設條件被違背,參數估計將發生誤差。 
  將連續變量分紅不一樣組表並用一套虛擬變量來表達,這不只有助於檢查這一變量的非線性模式,還提供在非線性關係存在條件下的無偏參數估計,這其實是在創建迴歸模型時對方非線性關係的一個經常使用的方法。
如何設置虛擬變量
  虛擬變量一般是對無序分類資料而言。在線性迴歸中,若是自變量中有分類變量,那麼必定要事先把這些分類變量事先從新編碼,生成多個二分類虛擬變量。
在模型中引入多個虛擬變量時,虛擬變量的個數應按下列原則肯定: 
(1)若是迴歸模型有截距項 
有m種互斥的屬性類型,在模型中引入(m-1)個虛擬變量。 
(2)若是迴歸模型無截距項,有m個特徵,設置m個虛擬變量 
虛擬變量在計算廣告和信用評分中很經常使用。
人大經濟論壇這個例子講的很是好 
http://bbs.pinggu.org/thread-3702024-1-1.html
  假如現有4個省份,分別是山西,山西,江蘇,江西,要歸入到模型中。
  理解虛擬變量的真正含義:是要體現出不一樣省份之間的差別,而並非所謂的控制變量。而其要充分理解多元線性迴歸當中參數估計量的真正含義:是偏回歸係數,即自變量的邊際量,代表了在其餘條件不變的狀況下,自變量每增長一個單位因變量的變化。 
  若是按照你的理解假設X爲地區變量,X的取值爲1表明山西;2表明陝西;3表明江蘇;4表明江西,那麼迴歸完了之後如何來解釋X前面的參數:X前面的參數表示X每增長一個單位因變量增長多少,而此時按照X的取值,陝西和山西之間相差一個單位,陝西和江蘇之間也是差一個單位、江蘇和江西之間也差一個單位,那麼這個係數到底是說明陝西和山西之間的差異呢?仍是陝西和江蘇仍是江蘇和江西之間的差異呢?這顯然沒法解釋。還有X前面的迴歸參數是一個常數,那麼就是說陝西和山西、陝西和江蘇、江蘇和江西之間因變量的差別是相同的,這顯然是不合理的。 
  要把四個省份用數值區分開來,用1,2,3,4呢?那用10,20,30,40也能夠,那樣的話參數估計量就更無法解釋。因此,虛擬變量的定義必定是按照1和0來定義,便是就等於1,不是就等於0,好比,假設模型中有常數項,那麼能夠定義3個虛擬變量,D1爲陝西(是陝西D1=1,不是陝西D1=0);D2爲江蘇(是江蘇D2=1,不是江蘇D2=0);D3爲江西(是江西D3=1,不是江西D3=0),那麼山西呢?若是D1,D2,D3都同時爲0,確定就是山西了,這樣迴歸以後D1前面的參數代表了陝西與山之間的差異;D2前面的參數代表了江蘇與山西之間的差別;D3前面的參數代表了江西與山西之間的差別,參數的經濟意義很是明確。從深層次上講虛擬變量模型其實是解決了方差分析只能說明不一樣省份之間有無差別,而不能說明不一樣省份之間的這種差別究竟有多大的問題。
spss中設置虛擬變量
http://cos.name/cn/topic/306/
摘要 
  若是自變量是多分類的,若是數據類型是(ordinal)整序變量,則不用設置啞變量,若是是多分類名義變量(觀測類型是norminal)則必須設置啞變量,SPSS會自動設置,但具體設置也能夠本身選擇,通常默認的狀況下,是以最後一個組爲對照組。 
  ordinal的時候,和nomial會有比較大的不一樣的處理方式,能夠參考專門講ordinal變量分析的資料,或者logistic方面的資料,總之要謹慎使用。
相關文章
相關標籤/搜索