基于BP神經(jīng)網(wǎng)絡(luò)的信用風(fēng)險評估模型

本篇由兩個部分組成:
一概述默認(rèn)信用風(fēng)險的區(qū)別與聯(lián)系;

  • Z計(jì)分模型用最簡單的線性模型計(jì)算分?jǐn)?shù)的閾值區(qū)間,判斷企業(yè)違約的可能性。
  • Credit Risk+模型用來猜想預(yù)期損失是多少,核心思想是計(jì)算泊松分布,推斷銀行應(yīng)該準(zhǔn)備多少準(zhǔn)備金(預(yù)期損失),對非預(yù)期對損失心中有數(shù)。
  • KMV模型是計(jì)算違約可能性,核心思想是計(jì)算違約距離判斷其可能性。
  • Credit Metrics模型是當(dāng)“損失也知道了”,“違約可能性也知道”情況下,根據(jù)信用評價,推算未來(1年或者多年)損失當(dāng)情況。

二神經(jīng)網(wǎng)絡(luò)如何和信用風(fēng)險評估做補(bǔ)充。

信用風(fēng)險由兩個部分組成:
一是借款人不愿或者無力承擔(dān)約定款項(xiàng)而違約導(dǎo)致?lián)p失的可能性;
二是由于借款人信用評級的變化引起信用價差的變化而導(dǎo)致?lián)p失的可能性。

一、四大信用風(fēng)險評估模型

1、Z計(jì)分模型

得到Z值(經(jīng)過各種數(shù)理統(tǒng)計(jì)后得到5個變量并確定相關(guān)系數(shù)的一個著名5變量模型,Z = 0.012 * X1 + 0.014 * X2 + 0.033 * X3 + 0.006 * X4 + 0.999 * X5)來判定企業(yè)經(jīng)營的狀況(違約或破產(chǎn)的可能性)。阿爾特曼經(jīng)過統(tǒng)計(jì)分析和計(jì)算最后確定了借款人違約的臨界值Zo=2.675。如果Z<2.675,借款人被劃入違約組;反之,如果Z≥2.675,則借款人被劃入非違約組。當(dāng)1.81<Z<2.99,判斷失誤比較大,稱該重疊區(qū)域?yàn)槲粗獏^(qū)或稱灰色區(qū)域。

優(yōu)點(diǎn):

(1)由Z評分模型所計(jì)算出的z值可以較為明確地反映借款人(企業(yè))在一定時期內(nèi)的信用狀況(違約或不違約、破產(chǎn)或不破產(chǎn)),因此,他可以作為借款人經(jīng)營前景好壞的早期預(yù)警系統(tǒng)。
(2)便捷性,只要通過財(cái)務(wù)數(shù)據(jù)的分析就可以得到該公司的風(fēng)險狀況,成為當(dāng)代預(yù)測企業(yè)違約或破產(chǎn)的核心分析方法之一。

局限性:

(1)該模型缺少對市場數(shù)據(jù)的分析使該模型的預(yù)測結(jié)果存在滯后性,不能及時反映評價公司的信用變化。
(2)該模型僅考慮了兩個比較極端的情況(違約與不違約),而對于負(fù)債重整或是雖然發(fā)生違約但是回收率很高的情況就沒有做另外較詳細(xì)的分類。
(3)該模型的理論基礎(chǔ)不強(qiáng),比如為什么這幾個財(cái)變量值得考慮而另外一些因素則不值得考慮。雖然該模型在實(shí)證上得到了一定的支持,但是并不能在理論上給出合理的解釋。
(4)權(quán)數(shù)顯然不是固定的,必須經(jīng)常調(diào)整。就算調(diào)整,那又該多長時間調(diào)整,調(diào)整的頻率如何確定這些問題模型本身無法給出合理的答案。同時這種調(diào)整需要較大的數(shù)據(jù)庫作為支撐,而這又是一件很費(fèi)時效的工作。
(5)該模型沒有考慮系統(tǒng)性風(fēng)險的影響,該模型根本無法預(yù)測像2008年的金融危機(jī)這樣的系統(tǒng)風(fēng)險,而這種危機(jī)顯然會對企業(yè)的違約率造成不同程度的影響。

優(yōu)化策略:

(1)z值的判斷范圍
在不改變相關(guān)指標(biāo)系數(shù)的前提下,根據(jù)不同行業(yè)的經(jīng)營環(huán)境對Z值的判斷范圍進(jìn)行調(diào)整,確定在一段時期內(nèi)適用的判斷范圍。這樣就能充分考慮不同行業(yè)的風(fēng)險水平。調(diào)整思路為:①研究樣本選取。選取一定數(shù)量的“財(cái)務(wù)危機(jī) ”企 業(yè)和與之相對應(yīng)的同樣數(shù)量的 “正常 ”企業(yè)作為研究總樣本 。②給樣本組財(cái)務(wù)狀況預(yù)警得打分 ,即 Z值。然后排序并選擇分割點(diǎn) ,確 定Z臨界值,設(shè)置預(yù) 警區(qū)間 。將樣本組企業(yè)標(biāo)準(zhǔn)化后的財(cái)務(wù)指標(biāo)得到的各主成分的數(shù)據(jù),再根據(jù)改進(jìn)后預(yù)警函數(shù)模型計(jì)算得到企業(yè)財(cái)務(wù)狀況的預(yù)警分值 。對預(yù)警分值按從高到低進(jìn)行排序 。③ 用樣本組企業(yè)檢驗(yàn)修正預(yù)警模型的有效程度 。對上述從估計(jì)樣本組企業(yè)財(cái)務(wù)數(shù)據(jù)進(jìn)行檢驗(yàn),得出測試樣本組企業(yè)的正確預(yù)測率 ,從而評價修改后的財(cái)務(wù)預(yù)警模型的預(yù)測能力。
(2)對財(cái)務(wù)指標(biāo)進(jìn)行調(diào)整
X4指標(biāo)應(yīng)改為總資產(chǎn)現(xiàn)金回收率,即經(jīng)營現(xiàn)金凈流量/資產(chǎn)總額 ;同時,剔除X5指標(biāo) 。因?yàn)閷χ袊?,?jīng)營現(xiàn)金凈流量比股價和銷售收入更能真實(shí)客觀的反映企業(yè)資產(chǎn)的質(zhì)量、周轉(zhuǎn)情況以及現(xiàn)金償債能力。這樣可以避免我國由于受股價異常變動或者虛假的報表信而使預(yù)測結(jié)果不夠準(zhǔn)確的情況,而剔 除X5指標(biāo)是因?yàn)椴煌袠I(yè)的資產(chǎn)周轉(zhuǎn)率相差較大。這樣做可以使預(yù)測結(jié)果受行業(yè)影響降至最低,從而增強(qiáng)了Z計(jì)分模型的適用性,能更好的發(fā)揮其財(cái)務(wù)預(yù)警的作用 。

2、Credit Risk+

得到貸款組合的預(yù)期損失分布(由各頻段級貸款違約數(shù)量的概率分布和違約損失的概率分布得到)。
Credit Risk+模型屬于信用違約風(fēng)險度量模型,因?yàn)樗鼉H僅考慮了違約風(fēng)險,而沒有考慮信用等級降級風(fēng)險。

優(yōu)點(diǎn):

(1)傳統(tǒng)的模型一般都是單期、單因素模型,而CreditRisk+模型可以擴(kuò)展到多期(即組合)。
(2)違約率可看作是許多背景因素綜合作用的結(jié)果,可以用隨機(jī)變量Xk來表示,每個債務(wù)人的平均違約率可以作是背景因素Xk的線性函數(shù),這些因素是相互獨(dú)立的。
(3)需要的輸入信息簡單,很容易計(jì)算邊際風(fēng)險貢獻(xiàn)

局限性:

(1)每個債務(wù)的敞口固定不變,不依賴于發(fā)行人信用質(zhì)量的最終變化和利率的變化而變化
(2)這一模型不能處理非線性產(chǎn)品。

優(yōu)化策略:

(1)違約損失率
違約損失率的大小直接表現(xiàn)為違約時各筆貸款損失程度的高低。Credit Risk+假定違約損失率為常數(shù),但它其實(shí)容易受到宏觀經(jīng)濟(jì)波動的影響。所以在現(xiàn)有研究中,對貸款違約率的估計(jì)往往是先采用歷史數(shù)據(jù),測量出同種貸款的歷史平均違約損失率的均值與方差,然后假定貸款的違約損失率服從某一偏峰厚尾的分布,通常假定其服從Beta分布,對數(shù)正態(tài)分布等,在此基礎(chǔ)上,確定每筆貸款違約損失率的分布。

3、KMV

得到公司的預(yù)期違約概率EDF(股權(quán)價值VE、股權(quán)收益率波動率σE——>資產(chǎn)價值VA、資產(chǎn)收益率波動率σA——>違約距離DD——>預(yù)期違約概率EDF)。這是一個動態(tài)模型,采用的主要是股票市場的數(shù)據(jù)。

KMV模型屬于違約法,即在貸款期限內(nèi),信貸資產(chǎn)損失的計(jì)量取決于是否發(fā)生違約。因此信貸資產(chǎn)的損失要么是零(未發(fā)生違約),要么是貸款面值與可能回收價值的現(xiàn)值之差(發(fā)生違約),公司股價和資產(chǎn)負(fù)債表中的數(shù)據(jù)能夠被詮釋為隱含的違約風(fēng)險。

優(yōu)點(diǎn):

(1)KMV 是一種動態(tài)的模型,可以及時反映信用風(fēng)險的變化。上市公司的股價每個交易日都發(fā)生變化,且每季度公布財(cái)務(wù)報表。KMV可以據(jù)此更新模型的輸入?yún)?shù),及時反映市場預(yù)期。
(2)KMV是一種前瞻性的模型,克服了依賴歷史數(shù)據(jù)向后看的數(shù)理統(tǒng)計(jì)模型(歷史變化可以在未來重現(xiàn))的缺陷。EDF來自于對股票價格的實(shí)時分析,股價不僅反映了該企業(yè)歷史和當(dāng)前的發(fā)展?fàn)顩r,還反映了投資者對該企業(yè)信用狀況未來發(fā)展趨勢的判斷。
(3)EDF指標(biāo)在本質(zhì)上是一種對風(fēng)險的基數(shù)衡量法。序數(shù)衡量法只能反映企業(yè)間信用風(fēng)險的高低順序,如BB級高于B級,不能明確說明高到什么程度。而基數(shù)衡量法不僅可以反映風(fēng)險水平的高低順序,而且可以反映風(fēng)險水平差異的程度,因而更加準(zhǔn)確。

局限性:

(1)KMV適用于對上市公司的信用風(fēng)險進(jìn)行評估,而對非上市公司進(jìn)行評估則會遇到困難。
(2)EDP的計(jì)算給予企業(yè)資產(chǎn)價值服從正態(tài)分布的假設(shè)。但在現(xiàn)實(shí)中,并非所有借款企業(yè)的資產(chǎn)價值都服從正態(tài)分布。
(3)KMV無法分辨長期債務(wù)的不同類型。如果不區(qū)分長期債務(wù)的類別:優(yōu)先償還順序、是否擔(dān)保、是否可轉(zhuǎn)化,可能造成違約點(diǎn)的計(jì)算不準(zhǔn)確。
(4)KMV沒有考慮稅收的影響。負(fù)債可以帶來抵稅的好處,增加企業(yè)的價值,因此在為負(fù)債企業(yè)估值時,應(yīng)該把抵稅效果考慮進(jìn)去。

優(yōu)化策略:

(1)違約點(diǎn)DPT
kmv公司根據(jù)經(jīng)驗(yàn)將違約點(diǎn)設(shè)在dp=sd+0.5ld,國內(nèi)學(xué)者普遍認(rèn)為不適合中國國情。中國上市公司失信狀況比較嚴(yán)重,違約點(diǎn)的設(shè)定應(yīng)提高。在將違約點(diǎn)設(shè)為公司債務(wù)函數(shù)的研究中,出現(xiàn)了各種嘗試:
A、主觀設(shè)定一個固定違約點(diǎn),通常高于kmv模型違約點(diǎn)。如張智梅和章仁俊設(shè)定違約點(diǎn)dp=sd+0.75ld。這種方法主觀性較強(qiáng),未充分論證違約點(diǎn)設(shè)定的理論依據(jù),因此略顯粗糙。
B、主觀設(shè)立多個固定的違約點(diǎn),通過實(shí)證研究選擇使樣本的違約組和非違約組違約概率差異最大的違約點(diǎn)。如張玲、楊貞柿、陳收設(shè)立了三個違約點(diǎn)進(jìn)行對比:sd、sd+0.5ld、sd+0.75ld,結(jié)果表明違約點(diǎn)設(shè)在最高的sd+0.75ld時模型的信用風(fēng)險差異識別能力最強(qiáng),設(shè)在最低的時識別能力最差[13]。趙建衛(wèi)按長期負(fù)債等差變化設(shè)立了五個違約點(diǎn),分別是sd、sd+0.25ld、sd+0.5ld、sd+0.75ld、sd+ld,實(shí)證結(jié)果表明五個違約點(diǎn)中最高的違約點(diǎn)使kmv模型最有效[14]。從這些研究者的結(jié)論來看,在中國違約點(diǎn)的設(shè)定應(yīng)明顯高于kmv公司的經(jīng)驗(yàn)違約點(diǎn),從實(shí)證上支撐了中國失信狀況嚴(yán)重的理論預(yù)期。
C、在一定范圍內(nèi)改變短期負(fù)債和長期負(fù)債的系數(shù)組合,嘗試各種匹配下的模型效果。如李磊寧、張凱設(shè)違約點(diǎn)為dp=sd+mld,0≤m≤1,m在取值范圍內(nèi)以0.1為步長,共設(shè)定了11個違約點(diǎn),但其結(jié)論顯示只有當(dāng)m為0.1和0.2時模型才能通過顯著性檢驗(yàn),在兩者之中又以m=0.1效果略好,這個結(jié)論顯示中國的違約點(diǎn)較低,與中國失信嚴(yán)重的理論預(yù)期有一定差異[15]。
D、章文芳、吳麗美、崔小巖設(shè)定違約點(diǎn)為dp=ald+bsd,采用窮舉法在(a,b)=[(0,0),(10,10)]的正方形內(nèi)嘗試,在考察期內(nèi),如果公司資產(chǎn)價值撞擊違約點(diǎn)和公司隨后被st處理的事件沒有同時發(fā)生即為錯判,用最小錯判法尋求最優(yōu)的參數(shù)組合(a,b),最終測定dp=1.2ld+3.05sd時錯判率最低,正確率最高,并將此違約點(diǎn)與kmv公司的經(jīng)驗(yàn)違約點(diǎn)sd+0.5ld的模型效果做了對比,表明kmv公司的違約點(diǎn)測出的st和非st公司的違約距離都大于0,用來度量中國公司的違約情況失效,而新違約點(diǎn)只有非st公司的違約距離大于0,與實(shí)際符合。
(2)違約距離DD
計(jì)算違約距離dd時使用了公司的預(yù)期資產(chǎn)價值,部分學(xué)者對資產(chǎn)的預(yù)期增長率進(jìn)行了研究。李磊寧和張凱用公司近三年凈收益增長率的算術(shù)平均值近似預(yù)期增長率。筆者認(rèn)為,公司資產(chǎn)的增長率在實(shí)際中隨時間而變化,尤其對違約公司,在從正常狀態(tài)發(fā)展到違約的過程中,理論上應(yīng)該是增長率下降甚至負(fù)增長,因此簡單假定資產(chǎn)的預(yù)期增長率為零顯然會對計(jì)算結(jié)果造成誤差。
關(guān)于這些模型所用到的特征參數(shù)的調(diào)優(yōu)論文還有很多,比如說使用遺傳算法對違約觸發(fā)點(diǎn)的進(jìn)一步選擇優(yōu)化來提高KMV模型的準(zhǔn)確率、或者使用BP-神經(jīng)網(wǎng)絡(luò)處理國內(nèi)的一些未上市公司的財(cái)政報告中的特征并融合到KMV模型來對國內(nèi)未上市公司的預(yù)測違約率。

4、Credit Metrics

得到VaR(在某一給定的置信水平下,資產(chǎn)組合在未來特定的一段時間內(nèi)可能遭受的最大損失)。Credit Metrics不僅考慮了違約風(fēng)險(違約回收率)還考慮了信用等級降級風(fēng)險(遠(yuǎn)期折現(xiàn)率、信用等級轉(zhuǎn)化矩陣)。

CreditMetrics模型屬于盯市法,即信貸資產(chǎn)的市值直接受借款人的信用等級及其變化情況的影響,即使是借款人并未違約,只要信用等級降低,信貸資產(chǎn)的價值也相應(yīng)降低,這樣合理反映了信貸資產(chǎn)在違約發(fā)生前其價值潛在的損失狀況

優(yōu)點(diǎn):

(1)運(yùn)用該模型可以定量描述某一信用敞口對風(fēng)險的邊際貢獻(xiàn),從而判斷是否將該敞口引入組合,提高識別、衡量和管理風(fēng)險的能力
(2)可以迫使銀行收集信息,更明確地確定限額,更精確地基于風(fēng)險和績效進(jìn)行評價,使銀行的經(jīng)濟(jì)資本分配更合理;可以更好地對客戶進(jìn)行盈利分析,基于風(fēng)險進(jìn)行定價,更好地做好組合管理。

局限性:

(1)所有的預(yù)測和計(jì)算都以信用等級轉(zhuǎn)移概率、違約概率為基礎(chǔ)的,這兩個歷史統(tǒng)計(jì)數(shù)據(jù)庫的可能性引起了一些專家的質(zhì)疑。
(2)只要處于同一等級,所有企業(yè)的違約率都一樣。
(3)實(shí)際違約率等于歷史平均違約率。
(4)信用等級等同于信貸質(zhì)量,信用等級與違約率是同義詞,對擔(dān)保因素考慮不夠。
(5)信用等級的變化是獨(dú)立的。這一假設(shè)存在一定問題,因?yàn)橘J后的等級變化具有關(guān)聯(lián)性,在同一行業(yè)、同一地區(qū)的企業(yè),關(guān)聯(lián)性大一些。在經(jīng)濟(jì)蕭條時期,貸款的信用價
值普遍變小,信用等級普遍變低,不同貸款的變化方向一致。

優(yōu)化策略:

(1)構(gòu)造企業(yè)信用等級動態(tài)變化矩陣
以原有的AAA、AA、A、BBB、BB、B、CCC 七個等級分別為縱軸和橫軸建立基礎(chǔ)企業(yè)信用等級動態(tài)變化矩陣。一方面, 將原來的各等級靜態(tài)的系數(shù), 轉(zhuǎn)化為動態(tài)變化的數(shù)據(jù),使最終的風(fēng)險值也處于隨時變化的狀態(tài), 精確風(fēng)險防范; 另一方面, 以客觀歷史數(shù)據(jù)為基礎(chǔ), 最大剔除原有系數(shù)中的人為主觀干擾, 保證模型的客觀性。
(2)構(gòu)造貸款形態(tài)損失率矩陣
貸款的不同形態(tài)給銀行帶來的風(fēng)險主要是銀行花費(fèi)在該款項(xiàng)上的管理成本和用于再投資的機(jī)會收益的損失上。 因此,單一的各等級( 正常貸款、逾期貸款、呆滯貸款和呆賬貸款)的風(fēng)險系數(shù)不能將損失狀況表現(xiàn)清楚。 通過公式:

Ri——各等級下第 i 類貸款的損失變化率; ri——第i類貸款的利率收益; Ii——第 i 類貸款的投資收益; ci——第i類貸款的管理成本 ; Rar——各等級間的等級 變化風(fēng)險值 , 如 , 正常貸款→逾期貸款風(fēng)險值為 1.5, 逾期貸款→呆滯貸款風(fēng)險值為2,呆滯貸款→呆賬貸款風(fēng)險值為 2.5.這樣, 就能得出各類貸款當(dāng)其貸款形態(tài)發(fā)生變化的時候的損失程度。由于我國銀行的呆壞賬占信貸的比例較大, 不能僅僅計(jì)算正常貸款下信用風(fēng)險的變動, 還需要計(jì)算逾期、呆、滯賬款的風(fēng)險和損失 , 才能真實(shí)反映銀行信貸的真實(shí)信用風(fēng)險程度。保留和改進(jìn)貸款形態(tài)因子正是出于對我國銀行實(shí)際情況的考慮。


二、基于BP神經(jīng)網(wǎng)絡(luò)的信用風(fēng)險評估模型

1、BP神經(jīng)網(wǎng)絡(luò)在信用風(fēng)險評估應(yīng)用的優(yōu)勢及可行性分析

(1)BP神經(jīng)網(wǎng)絡(luò)有自學(xué)習(xí)和自適應(yīng)能力,簡單來說是向環(huán)境獲取知識學(xué)習(xí)并改進(jìn)自身性能。內(nèi)部有大量的可調(diào)參數(shù),因此使系統(tǒng)靈活性更強(qiáng)。
(2)BP神經(jīng)網(wǎng)絡(luò)實(shí)質(zhì)上是輸入到輸出的映射,數(shù)學(xué)理論證明三層的神經(jīng)網(wǎng)絡(luò)就能夠以任意精度逼近任何非線性映射關(guān)系。我國的個人信用等級評估起步比較遲,相關(guān)信息殘缺不全。BP網(wǎng)絡(luò)逼近任意非線性映射關(guān)系的能力對于解決幾乎沒有規(guī)則、多約束條件或數(shù)據(jù)不完全的問題是非常適合的。
(3)BP神經(jīng)網(wǎng)絡(luò)的后天學(xué)習(xí)能力使之能夠隨環(huán)境的變化而不斷學(xué)習(xí)。在進(jìn)行信用等級評估與預(yù)測時,受到評估數(shù)據(jù)帶有模糊性的特點(diǎn)制約,能夠從未知模式的大量復(fù)雜數(shù)據(jù)中發(fā)現(xiàn)規(guī)律,與傳統(tǒng)的評價方法相比,表現(xiàn)出更強(qiáng)的功能。
(4)BP神經(jīng)網(wǎng)絡(luò)方法是一種自然的非線性建模過程。它克服了傳統(tǒng)分析過程的復(fù)雜性及選擇適當(dāng)模型函數(shù)形式的困難,無需分清存在何種非線性關(guān)系,給建立模型與分析帶來了極大的方便。
(4)BP神經(jīng)網(wǎng)絡(luò)方法較好地保證了評估與預(yù)測結(jié)果的客觀性。在傳統(tǒng)的個人信用風(fēng)險評估中,大部分的決定因素是信貸員個人主觀的判斷,而BP神經(jīng)網(wǎng)絡(luò)可以再現(xiàn)專家的經(jīng)驗(yàn)、知識和直覺思維,較好地保證了評估與預(yù)測結(jié)果的客觀性。

2、案例運(yùn)用

先選擇模型指標(biāo)參數(shù)并取值(歸一化至[0,1])作為樣本數(shù)據(jù),如下圖,然后通過BP網(wǎng)絡(luò)來訓(xùn)練并對訓(xùn)練生成的的神經(jīng)網(wǎng)絡(luò)模型的預(yù)測結(jié)果進(jìn)行驗(yàn)證。

模型構(gòu)建:

設(shè)計(jì)了三層神經(jīng)網(wǎng)絡(luò)模擬信用風(fēng)險評估過程,其中,輸入層節(jié)點(diǎn)數(shù)為3,分別對應(yīng)信用風(fēng)險評估選擇的3個指標(biāo):收入、存款、失信;隱層節(jié)點(diǎn)數(shù)為4;輸出層節(jié)點(diǎn)數(shù)為1,其輸出值為模型預(yù)測信用額度。

BP網(wǎng)絡(luò)訓(xùn)練的流程:

有監(jiān)督學(xué)習(xí),包括前向傳播和反向傳播。即在(0,1)范圍內(nèi)先初始化連接權(quán)和閾值,然后訓(xùn)練樣本,得到模型輸出結(jié)果后更新連接權(quán)和閾值(鏈?zhǔn)角髮?dǎo))使得損失函數(shù)最小化(均方誤差最?。?。具體如下:

代碼:

import pandas as pd
import numpy as np
data_dict = {
    "序號": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27],
    "收入指標(biāo)": [1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
             0.1, 1, 0.5],
    "存款指標(biāo)": [1, 1, 0.5, 0.5, 0.1, 0.1, 0.5, 0.1, 1, 1, 0.5, 0.5, 1, 0.1, 0.1, 0.1, 1, 0.5, 1, 0.5, 0.1, 0.1, 0.5, 0.1,
             1, 1, 0.1],
    "失信指標(biāo)": [1, 0.1, 1, 0.1, 1, 0.1, 0.5, 0.5, 1, 0.1, 1, 0.5, 0.5, 0.5, 0.5, 0.1, 1, 1, 0.5, 0.5, 1, 0.1, 0.1, 0.5,
             0.1, 0.5, 0.1],
    "信用額度": [1, 0.8, 0.8, 0.6, 0.8, 0.4, 0.6, 0.6, 0.8, 0.6, 0.6, 0.4, 0.6, 0.4, 0.4, 0.2, 0.8, 0.6, 0.6, 0.4, 0.4, 0.2,
             0.2, 0.2, 0.4, 0.8, 0.6]
}
dataset_df = pd.DataFrame(data_dict)
del dataset_df['序號']
dataset = dataset_df

dataset = np.array(dataset)
m, n = np.shape(dataset)
trueY = dataset[:, 0]
X = dataset[:, 1:]

m, n = np.shape(X)#(27,3)
# 初始化參數(shù)
import random
d = n   # 輸入向量的維數(shù)
l = 1   # 輸出向量的維數(shù)
q = d+1   # 隱層節(jié)點(diǎn)的數(shù)量,這里用的是d+1,這個個數(shù)目前沒有定論,通常是靠試錯法來決定,幾個結(jié)點(diǎn)表現(xiàn)好,就用幾個
theta = [random.random() for i in range(l)]   # 輸出神經(jīng)元的閾值
gamma = [random.random() for i in range(q)]   # 隱層神經(jīng)元的閾值
# v size= d*q .輸入和隱層神經(jīng)元之間的連接權(quán)重
v = [[random.random() for i in range(q)] for j in range(d)]
# w size= q*l .隱藏和輸出神經(jīng)元之間的連接權(quán)重
w = [[random.random() for i in range(l)] for j in range(q)]
eta = 0.5    # 訓(xùn)練速度
maxIter = 80000  # 最大訓(xùn)練次數(shù)

import math
def sigmoid(iX,dimension):  # 激活函數(shù),iX is a matrix with a dimension
    if dimension == 1:
        for i in range(len(iX)):
            iX[i] = 1 / (1 + math.exp(-iX[i]))
    else:
        for i in range(len(iX)):
            iX[i] = sigmoid(iX[i], dimension-1)
    return iX


# 標(biāo)準(zhǔn)BP
while(maxIter > 0):
    maxIter -= 1
    sumE = 0# 累計(jì)誤差
    # 對于每一個樣本,更新
    for i in range(m):
        # 1計(jì)算當(dāng)前樣本的輸出
        alpha = np.dot(X[i], v)  # 隱層神經(jīng)元的輸入,1*d·d*q=1*q
        b = sigmoid(alpha-gamma, 1)  # 隱層神經(jīng)元的輸出b=f(alpha-gamma),1*q
        beta = np.dot(b, w)  # 輸出層神經(jīng)元的輸入,1*l
        predictY = sigmoid(beta-theta, 1)  # 輸出層神經(jīng)元的預(yù)測輸出,1*l,p102--5.3
        E = sum((predictY-trueY[i]) * (predictY-trueY[i])) / 2    # 均方誤差,p102--5.4
        sumE += E  # 累計(jì)誤差,多個樣本(xi,yi)p104--5.16
        # 2計(jì)算當(dāng)前樣本的輸出層神經(jīng)元梯度項(xiàng)、隱層神經(jīng)元梯度項(xiàng)
        g = predictY * (1-predictY) * (trueY[i]-predictY)  # 輸出層神經(jīng)元梯度項(xiàng),1*l,p103--5.10
        e = b * (1 - b) * ((np.dot(w, g.T)).T)  # 隱層神經(jīng)元梯度項(xiàng),1*q,p104--5.15
        # 3更新連接權(quán)和閾值
        w += eta*np.dot(b.reshape((q, 1)), g.reshape((1, l)))  # w更新,q*1·1*l=q*l,p104--5.11
        theta -= eta*g  # theta更新,p104--5.12
        v += eta*np.dot(X[i].reshape((d, 1)), e.reshape((1, q)))  # v更新,d*1·1*q=d*q,p104--5.13
        gamma -= eta*e  # gamma更新,p104--5.14
    # print(sumE)

def predict(iX):
    alpha = np.dot(iX, v)  # m*q
    b = sigmoid(alpha- gamma, 2)  # b=f(alpha-gamma),m*q
    beta = np.dot(b, w)  # m*q·q*l=m*l
    predictY = sigmoid(beta - theta, 2)  # m*l
    return predictY

result = predict(X)
compare = np.concatenate((result, true_Y),axis=1)
compare = pd.DataFrame(compare)
print(compare)

結(jié)果輸出(左邊為模型預(yù)測結(jié)果,右邊為真實(shí)結(jié)果):

        0      1
0   0.953519  1.0
1   0.815795  0.8
2   0.820138  0.8
3   0.554622  0.6
4   0.787117  0.8
5   0.440197  0.4
6   0.646845  0.6
7   0.576809  0.6
8   0.834012  0.8
9   0.589760  0.6
10  0.585079  0.6
11  0.400388  0.4
12  0.584876  0.6
13  0.392659  0.4
14  0.392659  0.4
15  0.398677  0.2
16  0.816912  0.8
17  0.607129  0.6
18  0.614901  0.6
19  0.382922  0.4
20  0.395699  0.4
21  0.199170  0.2
22  0.244092  0.2
23  0.243235  0.2
24  0.396517  0.4
25  0.808622  0.8
26  0.398677  0.6

BP算法應(yīng)用的優(yōu)化策略:

(1)學(xué)習(xí)因子η的優(yōu)化,采用變步長法根據(jù)輸出誤差大小自動調(diào)整學(xué)習(xí)因子,來減少迭代次數(shù)和加快收斂速度。
(2)隱層節(jié)點(diǎn)數(shù)的優(yōu)化。當(dāng)隱節(jié)點(diǎn)數(shù)太多時,會導(dǎo)致網(wǎng)絡(luò)學(xué)習(xí)時間過長,甚至不能收斂;而當(dāng)隱節(jié)點(diǎn)數(shù)過小時,網(wǎng)絡(luò)的容錯能力差。利用逐步回歸分析法并進(jìn)行參數(shù)的顯著性檢驗(yàn)來動態(tài)刪除一些線性相關(guān)的隱節(jié)點(diǎn)。節(jié)點(diǎn)刪除的標(biāo)準(zhǔn):當(dāng)由該節(jié)點(diǎn)出發(fā)指向下一層節(jié)點(diǎn)的所有權(quán)值和閥值均落在死區(qū)(通常取±0.1、 ±0.05等區(qū)間)之中,則該節(jié)點(diǎn)可刪除。最佳隱節(jié)點(diǎn)數(shù)L可參考下面公式計(jì)算:

式中: m為輸入節(jié)點(diǎn)數(shù), n為輸出節(jié)點(diǎn)數(shù), c為介于1~10的常數(shù)。
(3)輸入和輸出神經(jīng)元的確定。利用多元回歸分析法對神經(jīng)網(wǎng)絡(luò)的輸入?yún)?shù)進(jìn)行處理,刪除相關(guān)性強(qiáng)的輸入?yún)?shù),來減少輸入節(jié)點(diǎn)數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 海外CDS市場發(fā)展概況 發(fā)展歷史 CDS誕生于美國,自1995年發(fā)展至今,按照其每段時期特定的歷史背景和CDS市場...
    shenciyou閱讀 15,502評論 0 4
  • 1、簡介 信用風(fēng)險是貸款和債券投資面臨的主要風(fēng)險。Credit Metrics模型通過估計(jì)貸款、債券等信用工具在一...
    cannier_ceac閱讀 7,881評論 1 3
  • 如此真摯而熱情的情感,不表達(dá)出來,你這么笨,又怎么能自己領(lǐng)悟呢。
    尋找世界閱讀 92評論 0 0
  • 2017年師范學(xué)院畢業(yè),考了家鄉(xiāng)的招聘,經(jīng)過三個月的努力學(xué)習(xí),被錄取了,來到我曾經(jīng)上小學(xué)的校園,校長分配我教...
    大名102閆新閃閱讀 173評論 0 0
  • 兒子今天是第一次認(rèn)真地、完整地按照老師的視頻要求來做作業(yè),一共有三個動作。第一二個動作的時候,是他外婆教他...
    穎_af2f閱讀 234評論 0 0

友情鏈接更多精彩內(nèi)容