版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十一章
深度學(xué)習(xí)與數(shù)據(jù)分析
學(xué)習(xí)目標(biāo)
熟悉不同類型的神經(jīng)網(wǎng)絡(luò)模型的特點(diǎn)與區(qū)別掌握神經(jīng)網(wǎng)絡(luò)模型搭建原理并能將其應(yīng)用于金融市場(chǎng)分析中
本章導(dǎo)讀
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,其主要采用的模型是神經(jīng)網(wǎng)絡(luò)模型,因此,本章節(jié)將主要介紹有關(guān)人工神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的基本概念、相關(guān)模型以及優(yōu)化策略。人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetworks,ANN),簡(jiǎn)稱神經(jīng)網(wǎng)絡(luò)(neuralnetwork,NN),是一種模擬人腦神經(jīng)元網(wǎng)絡(luò)處理信息的數(shù)學(xué)模型。從機(jī)器學(xué)習(xí)的角度來(lái)看,神經(jīng)網(wǎng)絡(luò)模型本質(zhì)上是由具有非線性激活函數(shù)的神經(jīng)元組成的模型。通過(guò)大量神經(jīng)元之間的連接,神經(jīng)網(wǎng)絡(luò)成為一種高度非線性的模型,神經(jīng)元之間的連接權(quán)重就是需要學(xué)習(xí)的參數(shù)。11.1神經(jīng)元11.2BP神經(jīng)網(wǎng)絡(luò)11.3卷積神經(jīng)網(wǎng)絡(luò)11.4循環(huán)神經(jīng)網(wǎng)絡(luò)11.5深度學(xué)習(xí)模型優(yōu)化策略11.6
專題11基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究目錄CONTENTS神經(jīng)元11.1
11.1神經(jīng)元一個(gè)典型的神經(jīng)元學(xué)習(xí)訓(xùn)練模型可抽象為如下過(guò)程
11.2BP神經(jīng)網(wǎng)絡(luò)1.前饋神經(jīng)網(wǎng)絡(luò)
前饋神經(jīng)網(wǎng)絡(luò)至少有三層,第一層為輸入層,最后一層為輸出層,其他中間層為隱藏層。
11.2BP神經(jīng)網(wǎng)絡(luò)
11.2BP神經(jīng)網(wǎng)絡(luò)通??捎商荻认陆捣ㄇ蠼馍鲜鰞?yōu)化問(wèn)題。即首先初始化參數(shù),然后根據(jù)式(11.4)和式(11.5)迭代更新,逐漸縮小誤差:其中α為學(xué)習(xí)率,決定著目標(biāo)函數(shù)能否收斂到局部最小值以及何時(shí)收斂到最小值。
11.2BP神經(jīng)網(wǎng)絡(luò)2.BP算法
11.2BP神經(jīng)網(wǎng)絡(luò)
11.2BP神經(jīng)網(wǎng)絡(luò)圖11-3BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)效果例11.1
BP神經(jīng)網(wǎng)絡(luò)應(yīng)用實(shí)例以滬深300股指為例,建立BP神經(jīng)網(wǎng)絡(luò)模型。預(yù)測(cè)步長(zhǎng)設(shè)為15天,即用前15天的數(shù)據(jù)通過(guò)滑動(dòng)窗口不斷預(yù)測(cè)下一天的收盤價(jià)及漲跌情況。特征變量包括開(kāi)盤價(jià)、收盤價(jià)、最高價(jià)、最低價(jià)、交易量和交易額。為消除異常值和量綱影響,對(duì)數(shù)據(jù)進(jìn)行歸一化處理。在Python中可利用tensorflow庫(kù)調(diào)用KerasAPI構(gòu)建BP神經(jīng)網(wǎng)絡(luò)。模型預(yù)測(cè)效果如圖11-3所示,可以看到股票漲跌在訓(xùn)練集與測(cè)試集上的誤差,模型在測(cè)試集上的MAE、MSE較訓(xùn)練集高,MAPE較訓(xùn)練集低,測(cè)試集的整體預(yù)測(cè)準(zhǔn)確率為67%,模型預(yù)測(cè)效果較好。
11.2BP神經(jīng)網(wǎng)絡(luò)Python代碼演示#讀取數(shù)據(jù)df1=pd.read_excel(r'E//jrj1/Chapter10/hs300.xlsx',0)#df1=df1.iloc[3600:-10,1:]df1=df1.iloc[:,1:]df1.tail()##進(jìn)行數(shù)據(jù)歸一化fromsklearnimportpreprocessingmin_max_scaler=preprocessing.MinMaxScaler()df0=min_max_scaler.fit_transform(df1)df=pd.DataFrame(df0,columns=df1.columns)#構(gòu)造訓(xùn)練集測(cè)試集y=pd.DataFrame(y.values,columns=['goal'])x=Xcut=10#取最后cut=10天為測(cè)試集X_train,X_test=x.iloc[:-cut],x.iloc[-cut:]y_train,y_test=y.iloc[:-cut],y.iloc[-cut:]X_train,X_test,y_train,y_test=X_train.values,X_test.values,y_train.values,y_test.valuesX=df.drop('close',axis=1)y=df['close']
11.2BP神經(jīng)網(wǎng)絡(luò)#建立BP模型訓(xùn)練:fromtensorflow.keras.modelsimportSequentialfromtensorflow.keras.layersimportDense,Activationfromtensorflow.keras.optimizersimportAdammodel=Sequential()#層次模型model.add(Dense(16,input_dim=5))#輸入層model.add(Activation('relu'))#添加激活函數(shù)model.add(Dense(4))#中間層model.add(Activation('sigmoid'))#添加激活函數(shù)model.add(Dense(1))#輸出層pile(loss='mean_squared_error',optimizer='Adam')#編譯模型model.fit(X_train,y_train,epochs=50,batch_size=256) #模型擬合:#在訓(xùn)練集上的擬合結(jié)果y_train_predict=model.predict(X_train)y_train_predict=y_train_predict[:,0]y_train=y_train#在測(cè)試集上的擬合結(jié)果y_test_predict=model.predict(X_test)y_test_predict=y_test_predict[:,0]fromsklearn.metricsimportmean_absolute_errorfromsklearn.metricsimportmean_squared_errorimportmathdefmape(y_true,y_pred): returnnp.mean(np.abs((y_pred-y_true)/y_true))*100print('訓(xùn)練集上的MAE/MSE/MAPE')print(mean_absolute_error(y_train_predict,y_train))print(mean_squared_error(y_train_predict,y_train))print(mape(y_train_predict,y_train))print('測(cè)試集上的MAE/MSE/MAPE')print(mean_absolute_error(y_test_predict,y_test))print(mean_squared_error(y_test_predict,y_test))print(mape(y_test_predict,y_test))#預(yù)測(cè)漲跌y_var_test=y_test[1:]-y_test[:len(y_test)-1]y_var_predict=y_test_predict[1:]-y_test_predict[:len(y_test_predict)-1]txt=np.zeros(len(y_var_test))foriinrange(len(y_var_test-1)): txt[i]=np.sign(y_var_test[i])==np.sign(y_var_predict[i])result=sum(txt)/len(txt)print('預(yù)測(cè)漲跌正確:',result)
11.3卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)一般由卷積層、池化層和全連通層組成,如圖11-4所示圖11-4
CNN網(wǎng)絡(luò)流程圖
11.3卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)中卷積層(Convolutionallayer)由若干卷積核(即可學(xué)習(xí)的權(quán)重向量)組成,每個(gè)卷積單元的參數(shù)都經(jīng)由反向傳播算法優(yōu)化得到。
卷積層的特點(diǎn)在于局部連接性與權(quán)值共享。如圖11-5所示,卷積層中的每一個(gè)神經(jīng)元都只和前一層中某個(gè)局部窗口內(nèi)的神經(jīng)元相連,構(gòu)成一個(gè)局部連接網(wǎng)絡(luò),可以大幅減少訓(xùn)練的參數(shù)。圖11-5全連通神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)對(duì)比
11.3卷積神經(jīng)網(wǎng)絡(luò)2.池化層
池化層(PoolingLayer),也叫匯聚層、子采樣層(SubsamplingLayer),其作用主要就是壓縮數(shù)據(jù)和參數(shù)的量,或者說(shuō)是保留最顯著的特征,通過(guò)特征映射去除其中不重要的樣本,進(jìn)一步減少參數(shù)數(shù)量。
由于卷積層可以減少網(wǎng)絡(luò)中連接的數(shù)量,但特征映射組中的神經(jīng)元個(gè)數(shù)并沒(méi)有顯著減少,如果后面接一個(gè)分類器,分類器的輸入維數(shù)依然很高,很容易出現(xiàn)過(guò)擬合。為了解決這個(gè)問(wèn)題,可以在卷積層之后加上一個(gè)池化層,從而降低特征維數(shù),避免過(guò)擬合。目前,池化的方法有很多,常用的池化方法有最大池化和平均池化兩種。
11.3卷積神經(jīng)網(wǎng)絡(luò)3.全連通層
全連通層(fullyconnectedlayer,F(xiàn)C),即前面一層的每個(gè)神經(jīng)元都與后面一層的相連接,在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用。卷積層與池化層的作用在于提取分布式特征,而全連通層則將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間,對(duì)多次卷積后高度抽象化的特征進(jìn)行整合。在CNN中,它可以直接把圖像降維成一堆序列。全連通層主要通過(guò)總層數(shù)、單個(gè)全連通層的神經(jīng)元數(shù)和激活函數(shù)三個(gè)參數(shù)影響模型。
11.3卷積神經(jīng)網(wǎng)絡(luò)例11.2CNN模型實(shí)例
卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型被廣泛應(yīng)用于圖片識(shí)別技術(shù),本例將采用內(nèi)置手寫數(shù)字集作為示例數(shù)據(jù),通過(guò)keras模塊搭建CNN模型來(lái)進(jìn)行手寫數(shù)字體識(shí)別。內(nèi)置數(shù)據(jù)集已劃分出訓(xùn)練集與測(cè)試集,訓(xùn)練集中的輸入信息x為手寫數(shù)字的圖片,輸出信息y為圖片的標(biāo)簽。如圖11-6所示,訓(xùn)練集的第一張圖片為數(shù)字“5”的手寫體,其對(duì)應(yīng)的y標(biāo)簽也是類別數(shù)字“5”。圖11-6手寫數(shù)據(jù)集示例
11.3卷積神經(jīng)網(wǎng)絡(luò)Python代碼演示importnumpyasnp;importpandasaspd;importmatplotlib.pyplotaspltfromkeras.datasetsimportmnistfromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropout,Activation,Flattenfromkeras.optimizersimportadam_v2fromkeras.layers.normalization.batch_normalization_v1importBatchNormalizationfromkeras.utilsimportnp_utilsfromkeras.layersimportConv2D,MaxPooling2D,ZeroPadding2D,GlobalAveragePooling2Dfromkeras.layers.advanced_activationsimportLeakyReLUfromkeras.preprocessing.imageimportImageDataGenerator#圖像基本變換(X_train,y_train),(X_test,y_test)=mnist.load_data()#劃分訓(xùn)練集和測(cè)試集plt.imshow(X_train[0],cmap='gray')plt.title('Class'+str(y_train[0]))#尺寸轉(zhuǎn)換X_train=X_train.reshape(X_train.shape[0],28,28,1)#尺寸變換X_test=X_test.reshape(X_test.shape[0],28,28,1)X_train=X_train.astype('float32')#類型轉(zhuǎn)換X_test=X_test.astype('float32')X_train/=255;X_test/=255;X_train.shape;number_of_classes=10Y_train=np_utils.to_categorical(y_train,number_of_classes)#類別變換Y_test=np_utils.to_categorical(y_test,number_of_classes)
11.3卷積神經(jīng)網(wǎng)絡(luò)model.summary()#模型匯總pile(loss='categorical_crossentropy',optimizer=adam_v2.Adam(),metrics=['accuracy'])gen=ImageDataGenerator(rotation_range=8,width_shift_range=0.08,shear_range=0.3,height_shift_range=0.08,zoom_range=0.08)#圖像變換test_gen=ImageDataGenerator()#圖像處理train_generator=gen.flow(X_train,Y_train,batch_size=64)test_generator=test_gen.flow(X_test,Y_test,batch_size=64)#模型訓(xùn)練model.fit_generator(train_generator,steps_per_epoch=60000//64,epochs=5,validation_data=test_generator,validation_steps=10000//64)score=model.evaluate(X_test,Y_test)#模型評(píng)估print('Testaccuracy:',score[1])#準(zhǔn)確率得分predictions=model.predict(X_test)#模型預(yù)測(cè)classes=np.argmax(predictions,axis=1)predictions=list(predictions)actuals=list(y_test)#輸出預(yù)測(cè)值與實(shí)際值sub=pd.DataFrame({'Actual':actuals,'Predictions':predictions})sub.to_csv('./output_cnn.csv',index=False)
11.4循環(huán)神經(jīng)網(wǎng)絡(luò)1.RNN單隱藏層的簡(jiǎn)單循環(huán)網(wǎng)絡(luò)在時(shí)刻t的更新公式為h(t)=f(Whh(t-1)+Wxx(t)+bh)(11.9)其中,Wh為狀態(tài)-狀態(tài)權(quán)重矩陣,Wx為狀態(tài)-輸入權(quán)重矩陣,bh為偏置向量,f(·)為激活函數(shù)。將最終時(shí)刻輸出的隱藏層狀態(tài)h(T)看作整個(gè)序列的最終表示,輸入到分類器g(·)進(jìn)行分類,即y(t)=g(h(T))(11.10)
11.4循環(huán)神經(jīng)網(wǎng)絡(luò)2.LSTM
11.4循環(huán)神經(jīng)網(wǎng)絡(luò)三個(gè)門it、ft、ot的取值均在0到1之間,表示以一定的比例允許信息通過(guò)。計(jì)算公式分別如下:it=σ(Wxi·xt+Whi·ht-1+bi)ft=σ(Wxf·xt+Whf·ht-1+bf)ot=σ(Wxo·xt+Who·ht-1+bo)其中σ(·)為L(zhǎng)ogistic函數(shù),其輸出區(qū)間為(0,1),W為對(duì)應(yīng)的權(quán)重矩陣,bi為偏置矩陣。
11.4循環(huán)神經(jīng)網(wǎng)絡(luò)圖9-15LSTM原理圖
11.4循環(huán)神經(jīng)網(wǎng)絡(luò)3.GRU模型
11.4循環(huán)神經(jīng)網(wǎng)絡(luò)圖9-16GRU原理圖
深度學(xué)習(xí)模型優(yōu)化策略11.511.5深度學(xué)習(xí)模型優(yōu)化策略在應(yīng)用深度學(xué)習(xí)模型時(shí)通常面臨網(wǎng)絡(luò)優(yōu)化與網(wǎng)絡(luò)正則化兩大難題。一方面,神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化目標(biāo)是能找到一個(gè)全局最優(yōu)解或較好的局部最優(yōu)解;另一方面模型優(yōu)化達(dá)到最優(yōu)解時(shí)可能帶來(lái)過(guò)擬合問(wèn)題。11.5深度學(xué)習(xí)模型優(yōu)化策略網(wǎng)絡(luò)優(yōu)化:改善神經(jīng)網(wǎng)絡(luò)優(yōu)化的目標(biāo)是找到更好的局部最小值和提高優(yōu)化效率。目前比較有效的優(yōu)化思路有如下幾種:使用更有效的優(yōu)化算法來(lái)提高梯度下降優(yōu)化方法的效率和穩(wěn)定性。通過(guò)參數(shù)初始化和數(shù)據(jù)預(yù)處理來(lái)提高優(yōu)化效率。通過(guò)逐層歸一化來(lái)提高優(yōu)化效率。使用更好的超參數(shù)優(yōu)化方法。11.5深度學(xué)習(xí)模型優(yōu)化策略網(wǎng)絡(luò)正則化,即通過(guò)限制神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度,避免模型過(guò)擬合并提高模型泛化能力。在傳統(tǒng)的機(jī)器學(xué)習(xí)中,提高泛化能力的方法主要是限制模型復(fù)雜度,比如可通過(guò)約束參數(shù)的L1和L2范數(shù)來(lái)減小模型在訓(xùn)練數(shù)據(jù)集上的過(guò)擬合現(xiàn)象。在訓(xùn)練深度學(xué)習(xí)模型時(shí),除L1和L2正則化外還會(huì)使用其他正則化方法:數(shù)據(jù)增強(qiáng)。主要應(yīng)用于圖像數(shù)據(jù),通過(guò)算法對(duì)圖像進(jìn)行旋轉(zhuǎn)、翻轉(zhuǎn)、縮放、平移等轉(zhuǎn)變,或引入噪聲等方法來(lái)增加數(shù)據(jù)多樣性。提前停止。其基本思想是設(shè)置一個(gè)和訓(xùn)練集獨(dú)立的樣本集合,即驗(yàn)證集(ValidationSet),并用驗(yàn)證集上的錯(cuò)誤來(lái)代替期望錯(cuò)誤,當(dāng)驗(yàn)證集上的錯(cuò)誤率不再下降或滿足停止條件時(shí),停止迭代。丟棄法(Dropout)。在訓(xùn)練時(shí),隨機(jī)丟棄一部分神經(jīng)元及其對(duì)應(yīng)的連接邊,以避免過(guò)擬合。專題11基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究我國(guó)“十四五”規(guī)劃將“健全金融風(fēng)險(xiǎn)預(yù)防、預(yù)警、處置、問(wèn)責(zé)制度體系”列為實(shí)施金融安全戰(zhàn)略的重要舉措之一,2021年中央經(jīng)濟(jì)工作會(huì)議同樣指出要“正確認(rèn)識(shí)和把握防范化解重大風(fēng)險(xiǎn)”,并“完善金融風(fēng)險(xiǎn)處置機(jī)制”。近年來(lái)黑天鵝事件時(shí)有發(fā)生,全球系統(tǒng)性風(fēng)險(xiǎn)隱患不斷凸顯,進(jìn)一步加劇企業(yè)的財(cái)務(wù)風(fēng)險(xiǎn)。在此背景下,結(jié)合系統(tǒng)性風(fēng)險(xiǎn)指標(biāo)與前沿的深度學(xué)習(xí)算法,優(yōu)化我國(guó)企業(yè)財(cái)務(wù)危機(jī)的預(yù)測(cè)模型,提升企業(yè)財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警效力,對(duì)優(yōu)化投資決策、強(qiáng)化企業(yè)風(fēng)險(xiǎn)管理、健全風(fēng)險(xiǎn)監(jiān)測(cè)預(yù)警機(jī)制、完善金融風(fēng)險(xiǎn)處置機(jī)制均有重要顯示意義。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究傳統(tǒng)的財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警方法通常基于統(tǒng)計(jì)分析和規(guī)則模型,這些方法往往依賴于研究者對(duì)財(cái)務(wù)指標(biāo)之間關(guān)系的猜測(cè)和經(jīng)驗(yàn)判斷。然而,隨著大數(shù)據(jù)技術(shù)的迅速發(fā)展和深度學(xué)習(xí)在各個(gè)領(lǐng)域的成功應(yīng)用,越來(lái)越多的研究者和從業(yè)者開(kāi)始關(guān)注和探索利用深度學(xué)習(xí)技術(shù)改進(jìn)財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警的方法和模型。深度學(xué)習(xí)是一種以人工神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的機(jī)器學(xué)習(xí)方法,通過(guò)多層次的抽象和表示學(xué)習(xí),能夠從大規(guī)模、非結(jié)構(gòu)化、高維度的數(shù)據(jù)中提取有用的特征和模式。這使得深度學(xué)習(xí)在圖像識(shí)別、自然語(yǔ)言處理等領(lǐng)域取得了顯著的成就?;诖?,本專題將結(jié)合深度學(xué)習(xí)構(gòu)建上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警模型,對(duì)我國(guó)上市公司的財(cái)務(wù)風(fēng)險(xiǎn)水平進(jìn)行監(jiān)測(cè)與評(píng)估。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究1.數(shù)據(jù)來(lái)源及預(yù)處理(1)數(shù)據(jù)來(lái)源及樣本選取本專題選取2020年到2022年A股上市公司為初始樣本,剔除金融行業(yè)公司后,“財(cái)務(wù)狀況異?!倍状伪籗T的上市公司總計(jì)115家。為正確預(yù)警公司財(cái)務(wù)困境,要通過(guò)比較ST公司與正常公司相關(guān)指標(biāo)的異同,并且利用模型將兩類公司準(zhǔn)確識(shí)別并且區(qū)分出來(lái)。本專題將以ST公司:非ST公司=1:2的比例選取正常公司作為配對(duì)樣本進(jìn)行研究,配對(duì)時(shí)采用資產(chǎn)規(guī)模相當(dāng)(總資產(chǎn)上下相差不超過(guò)20%)、所屬行業(yè)相同、會(huì)計(jì)年度一致的原則。最終樣本包含了115家ST公司和與之配對(duì)的230家正常公司,即總體的樣本公司數(shù)量為345家,三年樣本數(shù)據(jù)共1035個(gè)數(shù)據(jù)行。本專題中使用的公司財(cái)務(wù)數(shù)據(jù)來(lái)源于Wind數(shù)據(jù)庫(kù)。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究(2)
變量構(gòu)建本專題將采用公司是否被實(shí)施ST作為公司財(cái)務(wù)風(fēng)險(xiǎn)的衡量標(biāo)準(zhǔn)。根據(jù)證監(jiān)會(huì)規(guī)定,若上市公司連續(xù)兩個(gè)會(huì)計(jì)年度凈利潤(rùn)為負(fù)或者最近一個(gè)年度的每股凈資產(chǎn)低于股票面值,公司將被執(zhí)行ST處理?;诖?,模型中的輸入數(shù)據(jù)和預(yù)測(cè)變量數(shù)據(jù)間隔設(shè)為兩年,即使用T年的財(cái)務(wù)數(shù)據(jù)和財(cái)報(bào)文本數(shù)據(jù),來(lái)預(yù)測(cè)T+2年公司是否會(huì)被實(shí)行ST。參考國(guó)內(nèi)學(xué)者的研究成果,從反映上市公司盈利能力、成長(zhǎng)能力、營(yíng)運(yùn)能力、償債能力、現(xiàn)金流量五個(gè)方面選取了35個(gè)財(cái)務(wù)指標(biāo)作為特征變量。2.神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)(1)BPNN模型:基于反向傳播算法來(lái)訓(xùn)練模型,并采用梯度下降法來(lái)調(diào)整網(wǎng)絡(luò)中的參數(shù),以最小化損失函數(shù)。(2)CNN模型:卷積層-池化層-卷積層-池化層-Flatten層-Dense層--Dropout層-全連接層-全連接層,第一層卷積層的神經(jīng)元個(gè)數(shù)為256,卷積核大小為3,第二層卷積層的神經(jīng)元個(gè)數(shù)為128,卷積核大小為3。池化層使用MaxPooling1D處理。最后一層Dense層的神經(jīng)元個(gè)數(shù)為1。(3)RNN模型:RNN層-Dropout層-RNN層-Dropout層-Flatten層-Dense層,其中第一層RNN神經(jīng)元個(gè)數(shù)設(shè)置為128個(gè),第二層RNN神經(jīng)元個(gè)數(shù)設(shè)置為100個(gè),第一層Dropout層丟棄0.2。第二層Dropout層丟棄0.3,最后搭建Flatten層和全連接層。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究2.神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)(4)GRU模型:GRU層-Dropout層-Dense層--Dropout層-Dense層-Dropout層-Dense層,其中第一層GRU神經(jīng)元個(gè)數(shù)設(shè)置為256個(gè),第一層Dropout層丟棄0.2,第二層Dropout層丟棄0.2,最后添加Dense層。(5)LSTM模型:LSTM層-Dense層-Dropout層-LSTM層-Dense層-Dropout層-Dense層-Dense層,其中第一層神經(jīng)元個(gè)數(shù)設(shè)置128個(gè),添加全連接層,激活函數(shù)選擇relu,第一層Dropout層丟棄0.2,第二層Dropout層丟棄0.2,最后使用一個(gè)具有1個(gè)神經(jīng)元和使用sigmoid激活函數(shù)的全連接層,用于進(jìn)行二分類任務(wù)。所有模型使用develop_pile編譯模型,其中l(wèi)oss參數(shù)設(shè)置為binary_crossentropy表示二元交叉熵?fù)p失函數(shù),optimizer參數(shù)設(shè)置為adam表示使用Adam優(yōu)化器進(jìn)行參數(shù)更新,metrics參數(shù)設(shè)置為accuracy表示評(píng)估指標(biāo)為準(zhǔn)確率。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究3.模型比較與結(jié)果分析本專題研究基于Python3.0框架,使用Tensorflow搭建神經(jīng)網(wǎng)絡(luò)模型。
首先以7:3的比例將數(shù)據(jù)集劃分為訓(xùn)練集與測(cè)試集,基于訓(xùn)練集訓(xùn)練模型,然后基于搭建設(shè)計(jì)好的深度學(xué)習(xí)模型,對(duì)測(cè)試集進(jìn)行預(yù)測(cè)。
預(yù)測(cè)窗口長(zhǎng)度設(shè)為7,即用前7天的股票交易數(shù)據(jù)預(yù)測(cè)未來(lái)一天的股票收盤價(jià)。
為考察不同模型對(duì)財(cái)務(wù)風(fēng)險(xiǎn)的預(yù)測(cè)效果,選擇Accuracy、precision、recall、f1-score、roc值作為評(píng)價(jià)指標(biāo),對(duì)比不同模型在訓(xùn)練集與測(cè)試集上的預(yù)測(cè)效果。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究如表11-1所示,在本專題中,CNN模型在測(cè)試集上準(zhǔn)確率最高,達(dá)到了81%,對(duì)財(cái)務(wù)危機(jī)的預(yù)警較為準(zhǔn)確;其次是GRU模型,準(zhǔn)確率為79%,且AUC值較高,達(dá)到了86%,預(yù)警也較為準(zhǔn)確。除LSTM模型外,基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型預(yù)測(cè)準(zhǔn)確率均在75%以上,而邏輯回歸模型準(zhǔn)確率最低,預(yù)測(cè)準(zhǔn)確率為73%,不如多層迭代訓(xùn)練的深度學(xué)習(xí)模型。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究4.預(yù)測(cè)結(jié)果可視化前述分析中發(fā)現(xiàn)CNN、GRU這兩個(gè)模型對(duì)財(cái)務(wù)預(yù)警的預(yù)測(cè)效果較好,鑒于篇幅限制,該部分將把其中部分模型在訓(xùn)練集與測(cè)試集上的模型準(zhǔn)確度與模型損失可視化,直觀比較不同模擬的擬合效果。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究(1)CNN訓(xùn)練結(jié)果可視化分析根據(jù)圖11-10,CNN模型在訓(xùn)練集上整體表現(xiàn)優(yōu)秀,模型在訓(xùn)練集與測(cè)試集上的準(zhǔn)確率情況重合較高,趨勢(shì)一致,模型訓(xùn)練集值與測(cè)試集上的損失率情況也趨勢(shì)一致重合。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究(2)GRU訓(xùn)練結(jié)果可視化分析如圖11-11所示,GRU模型在訓(xùn)練集上整體表現(xiàn)優(yōu)秀,模型訓(xùn)練集值與測(cè)試集上的準(zhǔn)確率情況重合較高,趨勢(shì)一致,模型訓(xùn)練集值與測(cè)試集上的損失率情況也趨勢(shì)一致重合。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究(3)預(yù)測(cè)結(jié)果可視化分析由圖11-12可知,CNN模型的AUC值接近0.866,預(yù)測(cè)效果最好,GRU模型次之,邏輯回歸的效果最差。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究(3)預(yù)測(cè)結(jié)果可視化分析由圖11-12可知,CNN模型的AUC值接近0.866,預(yù)測(cè)效果最好,GRU模型次之,邏輯回歸的效果最差。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究(3)預(yù)測(cè)結(jié)果可視化分析由圖11-12可知,CNN模型的AUC值接近0.866,預(yù)測(cè)效果最好,GRU模型次之,邏輯回歸的效果最差。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究5.研究結(jié)論本專題基于RNN、LSTM、GRU、CNN、BPNN五個(gè)神經(jīng)網(wǎng)絡(luò)模型與邏輯回歸模型對(duì)上市公司財(cái)務(wù)危機(jī)進(jìn)行預(yù)測(cè)研究,并考察不同模型對(duì)上市公司財(cái)務(wù)危機(jī)的預(yù)測(cè)效力。主要結(jié)論如下:考察的五個(gè)深度神經(jīng)網(wǎng)絡(luò)模型中,CNN模型對(duì)上市公司財(cái)務(wù)危機(jī)的預(yù)測(cè)效果最好,在測(cè)試集上擬合優(yōu)度最大且預(yù)測(cè)誤差最小;GRU模型次之,在測(cè)試集上能夠較好地?cái)M合上證指數(shù)的變化趨勢(shì);LSTM模型的表現(xiàn)最差。而機(jī)器學(xué)習(xí)中的經(jīng)典分類模型邏輯回歸效果不如深度學(xué)習(xí)模型。因此,可以選擇合適的神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于風(fēng)險(xiǎn)預(yù)警相關(guān)研究。
11.6基于深度學(xué)習(xí)的上市公司財(cái)務(wù)風(fēng)險(xiǎn)預(yù)警研究習(xí)題1.LSTM與GRU模型如何解決RNN模型的梯度消失和爆炸問(wèn)題?二者的區(qū)別與聯(lián)系是什么?2.試?yán)?021年1月1日至2022年5月31日平安銀行的日交易數(shù)據(jù)建立BP神經(jīng)網(wǎng)絡(luò)、RNN與LSTM模型,并比較三個(gè)模型對(duì)股價(jià)的預(yù)測(cè)效果。Theending第十二章
文本數(shù)據(jù)分析
學(xué)習(xí)目標(biāo)
了解文本數(shù)據(jù)挖掘流程;掌握文本數(shù)據(jù)采集、文本切分和文本特征詞選擇的常用方法;掌握文本情感分析方法并能將該方法運(yùn)用于金融市場(chǎng)分析。
本章導(dǎo)讀
金融大數(shù)據(jù)為金融業(yè)態(tài)創(chuàng)新注入了新的活力,被銀行、證券、保險(xiǎn)等多個(gè)行業(yè)廣泛應(yīng)用于交易欺詐識(shí)別、精準(zhǔn)營(yíng)銷、信貸風(fēng)險(xiǎn)評(píng)估、智能投顧、風(fēng)險(xiǎn)定價(jià)等具體業(yè)務(wù)中。未來(lái)金融業(yè)的核心競(jìng)爭(zhēng)力將很大程度上依賴于從數(shù)據(jù)資產(chǎn)向市場(chǎng)競(jìng)爭(zhēng)力轉(zhuǎn)化的速度與能力,而這種速度和能力,取決于數(shù)據(jù)分析、挖掘和應(yīng)用水平。上一章將詳細(xì)介紹金融大數(shù)據(jù)的特征以及大數(shù)據(jù)處理流程,且重點(diǎn)研究幾類常用的數(shù)據(jù)挖掘方法,本章重點(diǎn)介紹文本數(shù)據(jù)挖掘相關(guān)技術(shù)及其在金融風(fēng)險(xiǎn)計(jì)量中的應(yīng)用。通過(guò)本章內(nèi)容學(xué)習(xí),學(xué)生應(yīng)掌握文本數(shù)據(jù)分析的基本知識(shí)與技術(shù),進(jìn)一步提升運(yùn)用大數(shù)據(jù)技術(shù)分析和解決金融實(shí)際問(wèn)題的能力。通過(guò)金融文本挖掘技術(shù)的學(xué)習(xí),了解中國(guó)政府保持金融穩(wěn)定的決心和信心。12.1文本獲取12.2文本預(yù)處理12.3文本表示12.4文本特征選擇12.5模式挖掘12.6專題12金融網(wǎng)絡(luò)輿情指數(shù)構(gòu)建與應(yīng)用目錄CONTENTS文本獲取12.112.1文本數(shù)據(jù)挖掘概述文本數(shù)據(jù)挖掘流程可概括為如下七個(gè)步驟:(1)文本獲?。唬?)文本預(yù)處理;(3)文本表示;(4)文本特征選擇;(5)模式挖掘;(6)結(jié)果評(píng)價(jià);(7)模式輸出與應(yīng)用。12.1文本獲取網(wǎng)絡(luò)爬蟲的本質(zhì)即模擬瀏覽器向網(wǎng)站服務(wù)器發(fā)送請(qǐng)求,然后從服務(wù)器返回的相應(yīng)數(shù)據(jù)中篩選目標(biāo)數(shù)據(jù)。Python是最為常用的爬蟲程序語(yǔ)言之一,利用Python爬蟲獲取文本數(shù)據(jù)的基本工作流程包含四個(gè)步驟:發(fā)起HTTP請(qǐng)求;獲取HTTP響應(yīng);解析內(nèi)容;保存數(shù)據(jù)。12.1文本獲取例12.1Python簡(jiǎn)單爬蟲實(shí)例
運(yùn)用Python爬取2023年政府工作報(bào)告全文。在爬取數(shù)據(jù)前應(yīng)先觀察數(shù)據(jù)所在的網(wǎng)站結(jié)構(gòu)。進(jìn)入2023年政府工作報(bào)告網(wǎng)頁(yè),在瀏覽器中按F12鍵打開(kāi)開(kāi)發(fā)者模式(有些電腦需同時(shí)按下Fn與F12鍵),查看網(wǎng)頁(yè)的“元素”菜單,如圖12-2所示??梢钥吹?,想要爬取政府工作報(bào)告正文內(nèi)容,只需將其從HTML文檔中提取出來(lái)即可。最終采集的政府工作報(bào)告文本輸出結(jié)果如圖12-3所示。圖12-22023年政府工作報(bào)告網(wǎng)頁(yè)HTML文檔圖12-3采集的政府工作報(bào)告文本數(shù)據(jù)12.1文本獲取例12.1Python簡(jiǎn)單爬蟲實(shí)例Python代碼演示importrequestsfrombs4importBeautifulSoup#導(dǎo)入BeautifulSoup4importosos.chdir(r'E:/jrj1/Chapter12/')#修改工作目錄head={'Host':'','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/99.0.4844.74Safari/537.36Edg/99.0.1150.55'}url='/zhuanti/2023lhzfgzbg/index.htm'#1發(fā)起HTTP請(qǐng)求r=requests.get(url,headers=head);print(r)#2獲取HTTP響應(yīng)html=r.content.decode('utf-8')#設(shè)置編碼方式為utf-8以正確顯示中文;print(html)#3解析內(nèi)容soup=BeautifulSoup(html,"html.parser")#HTML文件解析content=soup.find("div",class_="zhj-bbqw-cont").text#篩選目標(biāo)print(content)#4儲(chǔ)存文件file=open('政府工作報(bào)告.txt','w',encoding="utf-8")file.write(content)file.close()12.2文本預(yù)處理分詞分詞,也稱詞條化(Tokenization),即將文檔切分為詞匯的單位。英語(yǔ)、法語(yǔ)、西班牙語(yǔ)等拉丁文語(yǔ)系的語(yǔ)言最小單位均是獨(dú)立的詞語(yǔ),例如“Iamastudent”,詞與詞可通過(guò)空格符切分。而中文文本中,詞與詞之間沒(méi)有固定的間隔符,因此需要分詞處理。當(dāng)前主要的分詞技術(shù)可劃分為三個(gè)流派:基于詞典的分詞技術(shù)(也稱機(jī)械分詞方法、基于理解的分詞技術(shù)、基于統(tǒng)計(jì)的分詞技術(shù)。隨著大規(guī)模語(yǔ)料庫(kù)的建立以及統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法的研究和發(fā)展,基于統(tǒng)計(jì)的中文分詞方法逐漸成為主流。Python的中文分詞工具有很多,較為流行的有jieba(結(jié)巴分詞)、THULAC(清華大學(xué)自然語(yǔ)言處理與社會(huì)人文計(jì)算實(shí)驗(yàn)室)、pkuseg(北京大學(xué)語(yǔ)言計(jì)算與機(jī)器學(xué)習(xí)研究組)、SnowNLP等。12.2文本預(yù)處理2.停用詞過(guò)濾在漢語(yǔ)中,有一類沒(méi)有多少實(shí)際意義的詞,例如“啊”“阿”“的”“以及”等詞,被稱為停用詞。停用詞對(duì)理解文本沒(méi)有太大作用,因此,在進(jìn)行自然語(yǔ)言處理時(shí)一般將停用詞過(guò)濾掉。停用詞過(guò)濾一方面可以對(duì)文本數(shù)據(jù)降維,另一方面也可提高文本的信息含量。過(guò)濾停用詞可通過(guò)建立停用詞表來(lái)實(shí)現(xiàn),如果詞匯位于停用詞表中,則將其刪除。常用的停用詞表有哈工大停用詞詞庫(kù)、四川大學(xué)機(jī)器學(xué)習(xí)智能實(shí)驗(yàn)室停用詞庫(kù)、百度停用詞表等。12.2文本預(yù)處理例12.2對(duì)《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)文本進(jìn)行預(yù)處理本例選取《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)文本進(jìn)行預(yù)處理。首先利用jieba工具包進(jìn)行分詞,然后利用停用詞表stopword.txt對(duì)停用詞進(jìn)行過(guò)濾。預(yù)處理后結(jié)果如圖12-4所示??梢钥吹?,返回的result對(duì)象中為過(guò)濾掉停用詞后的詞匯組合。圖12-4《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)文本預(yù)處理結(jié)果12.2文本預(yù)處理例12.2對(duì)《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)文本進(jìn)行預(yù)處理Python代碼演示importjieba#使用jieba分詞fileContent=open(r'E:/jrj1/Chapter12/金融穩(wěn)定報(bào)告節(jié)選.txt','r',encoding="utf-8").read()words=jieba.lcut(fileContent)#分詞后返回一個(gè)列表stopwords=[line.strip()forlineinopen('stopword.txt','r',encoding='UTF-8').readlines()]#加載停用詞表result=""forwinwords:ifwnotinstopwords:#停用詞過(guò)濾
ifwnotin'\n\t\r\f':#去除特殊符號(hào)
result+=w+""print(result)12.3文本表示
圖12-5向量空間模型12.3文本表示例12.3簡(jiǎn)單向量空間模型的Python實(shí)現(xiàn)比較兩段文本d1“我喜歡投資,不喜歡消費(fèi)?!迸cd2“我不喜歡投資,也不喜歡消費(fèi)。”的相似性。并在基于這兩段文本的向量空間模型基礎(chǔ)上,比較新句子d3“他討厭投資,但喜歡消費(fèi)。”與已有文本的相似性。在Python中可利用gensim庫(kù)構(gòu)建向量空間模型,并利用gensim.similarities模塊計(jì)算文本的余弦相似度。最后可得文本d1與d2的相似度為92.45%,即兩段文本高度相似。新文本d3與d1文本的余弦相似度為83.33%,與d2文本的相似度為69.34%。由于向量空間模型無(wú)法處理新詞,新文本d3與已有文本d1和d2之間的相似度大幅降低。12.3文本表示importjiebafromgensimimportcorpora,modelsfromgensim.similaritiesimportMatrixSimilarityd1="我喜歡投資,不喜歡消費(fèi)。"#1.讀取文檔d2=我不喜歡投資,也不喜歡消費(fèi)。"defstopword_filter(words):#2.分詞result=[]forwinwords:ifwnotin',
。':result.append(w)returnresultw1=jieba.lcut(d1);w2=jieba.lcut(d2)w1=stopword_filter(w1)w2=stopword_filter(w2)texts=[w1,w2]#3.生成字典和向量語(yǔ)料dictionary=corpora.Dictionary(texts)#生成字典corpus=[dictionary.doc2bow(text)fortextintextstfidf=models.TfidfModel(corpus)#利用TF-IDF方法vector=tfidf[corpus[1]]#文本d2表達(dá)。#4.相似性比較featurenums=len(dictionary.token2id)index=MatrixSimilarity(corpus,num_features=featurenums)sim12=index[corpus[1]]#文本d2與文本d1和自身的余弦相似度。print('文本d2與文本d1余弦相似度為:')print(sim12[0])#5.比較新文本d3='他討厭投資,但喜歡消費(fèi)。’w3=stopword_filter(jieba.lcut(d3))new3=dictionary.doc2bow(w3)sim=index[new3]print('文本d3與文本d1和文本d2的余弦相似度分別為:')print(sim) 12.3文本表示2.主題模型主題模型(TopicModel)是一種概率生成模型,旨在挖掘文本中隱含的主題或概念。主題可以定義為文檔集中具有相同詞境的詞的集合通過(guò)捕獲文本中的主題分布,主題模型可以部分地解決一詞多義和一義多詞的問(wèn)題。同時(shí),主題提供了一種高維文本數(shù)據(jù)維數(shù)的約減方式,將傳統(tǒng)向量空間模型中的高維稀疏向量轉(zhuǎn)化為低維稠密向量,以緩解維數(shù)災(zāi)難問(wèn)題。代表性的主題模型有概率潛在語(yǔ)義分析(Probabilisticlatentsemanticanalysis,PLSA)和潛在狄利克雷分布(LatentDirichletallocation,LDA)。12.3文本表示2.主題模型(1)PLSA12.3文本表示2.主題模型(1)PLSA12.3文本表示例12.4LDA簡(jiǎn)單模型的Python實(shí)現(xiàn)
在本例中,仍利用《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)數(shù)據(jù)作為文檔集,抽取文檔集的主題。最后輸出結(jié)果如圖12-6所示,輸出結(jié)果中包含10個(gè)主題,每個(gè)主題囊括了該類別下最相關(guān)的5個(gè)詞語(yǔ)及該詞匯在主題中出現(xiàn)的概率。圖12-6LDA主題模型提取結(jié)果12.3文本表示Python代碼演示fromgensim.modelsimportLdaModel,TfidfModel;fromgensim.corporaimportDictionaryimportpandasaspd;importjieba;importrefileContent=open(r'E:/jrj1/Chapter12/金融穩(wěn)定報(bào)告節(jié)選.txt','r',encoding="utf-8").read()word=fileContent.split();word=pd.Series(word)jieba_output=(word.astype(str)).apply(jieba.lcut)stopwords=[line.strip()forlineinopen('stopword.txt','r',encoding='UTF-8').readlines()]#建立停用詞表df1=jieba_output.apply(lambdax:[iforiinxifinotinstopwords])#停用詞過(guò)濾
df1=df1.apply(lambdax:[re.sub('[\d]','',i)foriinx])texts=[wforwindf1];dictionary=Dictionary(texts)corpus=[dictionary.doc2bow(text)fortextintexts];tfidf=TfidfModel(corpus)lda=LdaModel(corpus=corpus,id2word=dictionary,num_topics=10,random_state=1)x1=lda.show_topics(num_words=5)print("LDA主題類,詞出現(xiàn)概率*詞")forxinx1:print(x)lda=LdaModel(corpus=tfidf[corpus],id2word=dictionary,num_topics=10,random_state=1)x2=lda.show_topics(num_words=5)print("LDA主題類(tfidf優(yōu)化),詞出現(xiàn)概率*詞")forxinx2:print(x)12.3文本表示3.基于神經(jīng)網(wǎng)絡(luò)的詞嵌入模型12.3文本表示例12.5利用Word2vec對(duì)股票的文本評(píng)論進(jìn)行詞向量編碼本例中利用文件comment_sample.csv進(jìn)行詞向量訓(xùn)練,comment_sample.csv是東方財(cái)富網(wǎng)上證股指股吧中2022年的20000條評(píng)論,數(shù)據(jù)結(jié)構(gòu)如表12-2所示。12.3文本表示例12.5利用Word2vec對(duì)股票的文本評(píng)論進(jìn)行詞向量編碼
利用gensim.modelsm模塊中的Word2Vec模塊,采用CBOW模型進(jìn)行詞向量訓(xùn)練,在訓(xùn)練完模型后輸出詞語(yǔ)“漲”的詞向量,以及與“漲”最相關(guān)的10個(gè)詞語(yǔ)。輸出結(jié)果如圖12-7所示。可以看到,最終詞向量中一共包含6078個(gè)詞,特征向量維度為100。與“漲”最相關(guān)的十個(gè)詞分別是“指數(shù)”“個(gè)股”“紅”“股票”“跌成”。圖12-7利用Word2vec對(duì)股票的文本評(píng)論進(jìn)行詞向量編碼12.3文本表示Python代碼演示fromgensim.modelsimportWord2Vecimportpandasaspd;
importjieba;importredf=pd.read_csv(r'E:/jrj1/Chapter12/comment_sample.csv',encoding='utf-8')jieba_output=(df['標(biāo)題'].astype(str)).apply(jieba.lcut)stopwords=[line.strip()forlineinopen('stopword.txt','r',encoding='UTF-8').readlines()]#建立停用詞表df1=jieba_output.apply(lambdax:[iforiinxifinotinstopwords])#停用詞過(guò)濾
df1=df1.apply(lambdax:[re.sub('[\d]','',i)foriinx])common_texts=[wforwindf1]model=Word2Vec(sentences=common_texts,vector_size=100,window=5,min_count=2,workers=4)print(model)#summarizevocabularywords=list(model.wv.key_to_index)#print(words[:10])model.save("word2vec.model")model=Word2Vec.load("word2vec.model")vector=model.wv['漲']#getnumpyvectorofawordprint('“漲”的詞向量為:')print(vector)sims=model.wv.most_similar('漲',topn=5)print('和“漲”最相關(guān)的5個(gè)詞:')forwinsims:print(w)12.4文本特征選擇TF-IDF法如果某個(gè)文本特征詞在某文檔中出現(xiàn)的頻率高,并且在其他文檔中很少出現(xiàn),則認(rèn)為該詞具有很好的類別其區(qū)分能力,適合用來(lái)分類。在TF-IDF中,TF代表文本特征詞w在文檔Di中出現(xiàn)的頻率;IDF表示如果包含文本特征詞w的文檔越少,則說(shuō)明w具有很好的類別區(qū)分能力。表達(dá)式如下所示:12.4文本特征選擇2.互信息法3.信息增益法在文本挖掘中,信息增益代表文本中包含某一文本特征詞時(shí)文本類型的平均信息量,體現(xiàn)了某一個(gè)特征詞的存在與否對(duì)類別預(yù)測(cè)的影響能力。因此,一個(gè)特征詞w能夠?yàn)橄到y(tǒng)帶來(lái)的信息越多,則表示特征詞w越重要。在文本分析中,信息增益的計(jì)算式可定義為熵與條件熵的差值:12.4文本特征選擇
12.4文本特征選擇12.4文本特征選擇例12.6文本特征選擇下面介紹基于jieba.analyse.extract_tags()方法的文本特征選擇,從《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)中抽出TF-IDF權(quán)重最大的20個(gè)關(guān)鍵詞。抽取結(jié)果如圖12-8所示。圖12-8文本特征選擇結(jié)果示例12.4文本特征選擇Python代碼演示importjiebaimportjieba.analysefileContent=open(r'E:/jrj1/Chapter12/金融穩(wěn)定報(bào)告節(jié)選.txt','r',encoding="utf-8").read()keywords=jieba.analyse.extract_tags(fileContent,topK=20,withWeight=True,allowPOS=('n','nr','ns'))foriteminkeywords:print(item[0],item[1])12.5模式挖掘1.情感分析例如,“雖然目前大盤處于上升周期,但這支股票仍在下跌,投資者極其不看好它,認(rèn)為不能扭虧為盈”,這樣一條評(píng)論對(duì)應(yīng)的消費(fèi)者情緒是積極的還是消極的?(1)對(duì)評(píng)論進(jìn)行分詞:“雖然/目前/大盤/處于/上升/周期/,但/這支/股票/仍/在/下跌/,投資者/極其/不/看好/它/,認(rèn)為/不能/扭虧為盈”。(2)找出句子中的情感詞,并對(duì)其賦值。積極的情感詞如“好”“好看”“上漲”等,消極的情感詞如“差”“爛”“下跌”等,出現(xiàn)一個(gè)積極詞分值加1,出現(xiàn)一個(gè)消極詞分值就減1。(3)往情緒詞前查找程度副詞,并為程度副詞設(shè)置調(diào)整權(quán)重。例如,當(dāng)存在“太”、“無(wú)比”等反映強(qiáng)情感的程度副詞時(shí),該詞權(quán)重設(shè)定為2;存在“僅僅”、“有點(diǎn)”等反映弱情感的程度副詞時(shí),該詞權(quán)重設(shè)為0.5。(4)尋找情感詞前是否存在否定詞,如存在,則情感傾向發(fā)生改變,將該條評(píng)論的情感權(quán)重設(shè)定為-1。(5)計(jì)算一條評(píng)論所有分詞的情感值,記錄下來(lái)。例句最后綜合情感得分為-3分,即該評(píng)論中負(fù)面情緒占主導(dǎo)地位。12.5模式挖掘例12.7用Python實(shí)現(xiàn)對(duì)一段評(píng)論文本的情感分析
利用情感詞典對(duì)評(píng)論文本進(jìn)行情感分析。Python代碼演示importpandasaspd;importjieba;importosos.chdir(r'E:/jrj1/Chapter12/')#修改工作目錄#加載詞典score=pd.read_table("emotion1.txt",header=None,delimiter=",",encoding='utf-8',names=['word','score'])adv_words=pd.read_csv("fdandcd.txt",header=None,delimiter="\t",encoding='utf-8',names=['term','score'])stopwords=[line.strip()forlineinopen('stopwords.txt','r',encoding='UTF-8').readlines()]#建立停用詞表#找出語(yǔ)料a中的情感詞和程度副詞,計(jì)算句子的情感得分defcount_score(a):b=pd.DataFrame(a,columns=['word'])b_score=pd.merge(b,score,how='left',left_on='word',right_on='word')c_score=pd.merge(b_score,adv_words,how='left',left_on='word',right_on='term')delc_score['term']ind=c_score['score_y'].notnull()#布爾向量c_score.loc[ind,'score_x']=012.5模式挖掘Python代碼演示(續(xù))ind2=[iforiinrange(len(c_score))ifind[i]]#定位程度副詞#程度副詞調(diào)整foriinind2:ifi!=(len(c_score)-1):c_score.loc[i+1,'score_x']=c_score.loc[i+1,'score_x']*c_score.loc[i,'score_y']returnc_score['score_x'].sum()#文本預(yù)處理得到語(yǔ)料comment=‘雖然目前大盤處于上升周期,但這支股票仍在下跌,投資者極其不看好它,認(rèn)為不能扭虧為盈'words=jieba.lcut(comment)result=[]forwinwords:ifwnotinstopwords:result.append(w)#調(diào)用count_score()函數(shù)計(jì)算情感得分emo=count_score(result)print('當(dāng)前情感得分值為:'+str(emo))12.5模式挖掘2.可視化詞云例12.8用Python生成“詞云”圖在本例中,利用《中國(guó)金融穩(wěn)定報(bào)告(2022)》(節(jié)選)文本數(shù)據(jù),構(gòu)建詞云提取報(bào)告中的關(guān)鍵詞,運(yùn)行結(jié)果如圖12-9所示??梢钥吹健巴瑯I(yè)業(yè)務(wù)”“銀行”“業(yè)務(wù)”“金融機(jī)構(gòu)”等詞均為報(bào)告中的高頻詞匯,凸顯出防范化解金融風(fēng)險(xiǎn)的重要性。圖12-9“詞云”運(yùn)行結(jié)果12.5模式挖掘Python代碼演示
fromwordcloudimportWordCloudimportcollections#詞頻統(tǒng)計(jì)庫(kù)importjiebaimportmatplotlib.pyplotaspltimportosos.chdir(r'E:/jrj1/Chapter12
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公設(shè)備購(gòu)銷合同專業(yè)版
- 小產(chǎn)權(quán)房買賣合同參考范本
- 農(nóng)村房屋繼承協(xié)議書樣式
- 工程委托設(shè)計(jì)合同示范
- 代征稅款委托協(xié)議樣本
- 合肥市建筑材料購(gòu)銷合同
- 員工勞動(dòng)合同范本規(guī)范文本
- 員工購(gòu)房抵押貸款合同范本
- 彩色鋼板工程承包合同模板
- 2024年農(nóng)村土地買賣協(xié)議書范本
- 湖北省鄂東南省級(jí)示范高中教育教學(xué)改革聯(lián)盟2023-2024學(xué)年高一上學(xué)期期中聯(lián)考政治試題
- 海水淡化處理方案
- 福建省廈門市翔安區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期中英語(yǔ)試題
- 學(xué)生對(duì)學(xué)校滿意度評(píng)價(jià)表
- 化工項(xiàng)目國(guó)民經(jīng)濟(jì)分析 化工項(xiàng)目技術(shù)經(jīng)濟(jì)
- 計(jì)算與人工智能概論智慧樹(shù)知到課后章節(jié)答案2023年下湖南大學(xué)
- 小學(xué)一年級(jí)下冊(cè)數(shù)學(xué)期末考試質(zhì)量分析及試卷分析
- 原材料情況說(shuō)明范本
- 疲勞駕駛安全教育內(nèi)容
- ICH技術(shù)指導(dǎo)原則概述
- 15D503利用建筑物金屬體做防雷及接地裝置安裝圖集
評(píng)論
0/150
提交評(píng)論