Python金融數據分析與應用課件 第5章 數據建模:有監督學習_第1頁
Python金融數據分析與應用課件 第5章 數據建模:有監督學習_第2頁
Python金融數據分析與應用課件 第5章 數據建模:有監督學習_第3頁
Python金融數據分析與應用課件 第5章 數據建模:有監督學習_第4頁
Python金融數據分析與應用課件 第5章 數據建模:有監督學習_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章數據建模:有監督學習Python金融數據分析與應用(微課版)目錄CONTENTS有監督學習5.1線性回歸5.2邏輯回歸5.3決策樹5.4隨機森林5.55.1有監督學習5.1.1有監督學習簡介5.1有監督學習【案例5-1】IPO首日成交量預測IPO定義

-首次公開發行(InitialPublicOffering),公司首次向公眾發行股票。IPO的核心作用

-籌集資金:用于業務擴張、投資等。

-市場關注:投資者通過IPO評估公司價值和市場熱度。IPO首日表現的重要性

-反映市場對該公司的認可度。

-影響投資者決策和公司后續股價走勢。現實問題

-關鍵問題:哪些發行信息(如發行價、發行規模)影響首日表現(如成交量、漲跌幅)?

-應用價值:幫助投資者制定策略,優化公司IPO定價。5.1.1有監督學習簡介關注的目標稱為:輸出變量、因變量、響應變量或標簽影響因素稱為:輸入變量、自變量或特征機器學習的目的從歷史數據中發掘輸入變量與輸出變量的關系或規則利用這種關系或規則對未來進行預測模型訓練:關系或規則的發現過程有監督的學習訓練模型時,存在一個指導標準(標簽),即以輸出變量的真實值為模型訓練標準明確區分了輸入變量和輸出變量案例目標:希望基于數據建立IPO首日成交量的預測模型,希望預測結果接近實際結果(有監督的學習)5.1有監督學習5.1.1有監督學習簡介【案例5-2】上市公司ST預測ST的概念:股票特別處理(SpecialTreatment),A股市場中對高風險公司的標記。ST觸發原因:財務困境(如連續虧損)、違規違法或信披問題、其他重大經營風險等

市場標識:股票名稱前加注"ST"字樣監管要求:強制信息披露,限期整改,否則可能暫停上市

ST預測的意義:規避風險,優化投資組合(投資者視角);預警市場風險,維護秩序(監管層視角);提前識別危機,避免退市(公司視角)案例目標:希望通過歷史數據訓練ST的預測模型,盡可能地準確預測公司未來的ST狀態(有監督的學習)關注的目標影響因素5.1有監督學習5.1.1有監督學習簡介案例對比案例問題類型目標變量案例5-1:IPO首日成交量預測回歸問題連續值(首日交易股數)案例5-2:上市公司ST預測分類問題類別(ST=1/非ST=0)Tips:諸多有監督學習模型中,有的僅能解決回歸問題,比如線性回歸模型;有的僅能解決分類問題,比如邏輯回歸模型;有的能同時解決這兩類問題,比如決策樹與隨機森林需要仔細體會與區分各類模型的應用場景,以便針對現實問題選擇更合適的模型回歸問題預測目標是連續變量如案例5—1的問題、利潤預測、營收預測等分類問題預測目標是變量是定性變量如案例5—2的問題(二分類)、風險評級(多分類)問題等5.1有監督學習5.1.2性能度量需要一套標準來度量模型的應用效果,從諸多模型中挑選出最適合解決當前問題的模型,這便是模型性能度量回歸預測模型的性能度量度量指標表達式特點平均絕對誤差最符合對誤差的理解,數學處理不方便,不夠直觀,越小越好均方誤差方便數學處理,對異常值可能敏感,不夠直觀,越小越好均方根誤差本質與MSE一致,單位與目標變量一致,不夠直觀,越小越好R方無量綱,直觀,越接近1越好5.1有監督學習5.1.2性能度量需要一套標準來度量模型的應用效果,從諸多模型中挑選出最適合解決當前問題的模型,這便是模型性能度量分類預測模型的性能度量混淆矩陣(適用于二分類問題)實際值預測值010TNFP1FNTP度量指標表達式特點正確率度量整體預測效果敏感性(R)側重于正類的預測效果特異性側重關注負類的預測效果查準率(P)關注做出正類預測時,預測的準確率F1分數綜合考慮敏感性與查準率的指標綜合考慮敏感性與查準率,但對二者賦予不同權重5.1有監督學習5.1.2性能度量模型泛化能力的度量實踐中,我們不僅關心模型能否解釋現有數據,更關心模型面對新數據時的表現,也就是模型的泛化能力,或者說外推能力由于未來數據無法提前獲取,為了提前了解模型的泛化能力,需要采取合理的方法對其進行估計為了估計模型的泛化能力,一個常用的做法是對數據集進行劃分。一部分數據用于模型訓練,稱作訓練集;另一部分數據被看作新數據,用于驗證模型的泛化能力,稱作測試集基于訓練集得到的模型,在測試集上計算出來的模型性能度量指標可以看作模型泛化能力的度量常用的數據集劃分方法留出(HoldOut)法按照一定的比例隨機將數據集劃分為兩個部分適用于樣本量比較大的情況K折交叉驗證(K-foldCross-Validation)法將數據集隨機近似等分為K份,每次留出一份作為測試集,其余K-1份作為訓練集K折交叉驗證法共建立K個模型,以這些模型在測試集上的性能度量指標的平均值作為模型泛化能力的度量過擬合模型在訓練集上表現優秀,在測試集上表現很差的現象通常因為模型過于復雜或樣本量過小而產生,是模型泛化能力差的一種表現5.1有監督學習5.2線性回歸5.2.1一元線性回歸5.2線性回歸模型構建適用于希望基于某個最主要的因素對目標變量進行預測的情況假定自變量與因變量為線性關系模型表達式:取數學期望假定

參數估計以MSE為目標,參數估計問題轉化為如下最小值問題求解這種參數估計方法稱作最小二乘法可以依據進行預測5.2.1一元線性回歸變量序號123456營業成本(百萬元)3672.7848742.7901660.0749294.2869222.97848116.820營業收入(百萬元)4607.3729167.2683953.76214131.20011047.02053582.500例基于上市公司的營業成本與營業收入數據,建立營業收入的預測模型建立一元線性回歸模型之前,可以通過散點圖觀察輸入變量與輸出變量的關系營業收入與營業成本大致呈現線性關系,建立二者的一元線性回歸模型是合適的按照8∶2的比例劃分訓練集與測試集,在訓練集上訓練模型并估計模型的參數,得到模型表達式形如營業收入=423.439+1.621×營業成本模型的擬合效果如圖右圖所示,一元線性回歸模型能很好地反映營業成本與營業收入的關系模型評價:如右表所示,模型在訓練集與測試集上的R方都接近1,表明模型能很好地解釋歷史數據,同時具有比較理想的泛化能力評價指標訓練集測試集MSE30064511.738160135868.409R方0.9940.9865.2線性回歸5.2.2多元線性回歸模型構建適用于輸出變量受到多個因素影響的情況假定自變量與因變量為線性關系模型表達式:取數學期望假定

參數估計參數估計依然可采用最小二乘法,即求解如下優化問題可以依據下列關系進行預測5.2線性回歸5.2.2多元線性回歸例基于上市公司的營業成本、資產總計、負債合計與營業收入數據,建立營業收入的預測模型以8∶2的比例劃分訓練集與測試集,建立以營業成本、資產總計、負債合計為自變量,營業收入為因變量的多元線性回歸模型,通過訓練集得到的模型表達式為:營業收入=-182.309+1.111×營業成本+0.197×資產總計-0.249×負債合計模型評價:如下表所示,對于上市公司的營業收入預測問題,多元線性回歸模型的表現更好變量序號123456營業收入(百萬元)4607.3729167.2683953.76214131.20011047.02053582.500營業成本(百萬元)3672.7848742.7901660.0749294.2869222.97848116.820資產總計(百萬元)26765.30018491.37012881.140107272.20069480.530153551.800負債合計(百萬元)9079.18410053.7103177.15167010.86027453.96092004.620評價指標訓練集測試集MSE12976737.66251266843.001R方0.9980.9965.2線性回歸5.2.2多元線性回歸營業收入=423.439+1.621×營業成本營業收入=-182.309+1.111×營業成本+0.197×資產總計-0.249×負債合計一元線性回歸多元線性回歸注意:多元線性回歸模型中營業成本的回歸系數與一元線性回歸模型中的存在差異多元回歸系數1.111的含義是資產總計與負債合計保持不變時,營業成本每增加一個單位引起的營業收入的平均增加值一元線性回歸的系數1.621并不限制資產總計與負債合計的變化,該系數可能還包含其它因素變動帶來的影響多元線性回歸模型能排除一定的其他因素的干擾,能更準確地度量自變量本身的影響因為不同自變量的單位或者數量級存在差異,回歸系數不可直接比較如果希望通過回歸系數比較自變量影響的大小,需要先對數據進行標準化處理標準化回歸系數營業收入的標準化回歸模型表達式形如:營業收入=69239.564×營業成本+20252.438×資產總計-17498.748×負債合計依據標準化回歸系數,3個自變量對營業收入的影響程度從大到小依次為:營業成本、資產總計與負債合計這個排序排除了數據量級與量綱的影響,更準確地反映了自變量的影響程度。5.2線性回歸5.2.3線性回歸算法案例實踐【案例5-1】IPO首日成交量預測實踐目標基于上市公司歷史數據,建立公司IPO首日成交量的線性回歸模型評價模型的性能度量各個變量對于預測IPO首日成交量的重要性程度必要的庫scikit-learn(sklearn)庫提供各種用于機器學習和數據挖掘的工具實踐步驟數據讀入與預處理線性回歸模型訓練模型性能度量變量重要性度量5.2線性回歸5.2.3線性回歸算法案例實踐數據讀入與預處理線性回歸模型訓練模型性能度量變量重要性度量#讀入數據data=pd.read_excel('IPO數據.xlsx')pd.options.display.float_format='{:,.3f}'.format#設置顯示的小數位數data.head()#預覽數據前5行#查看各列缺失值情況missing_values=data.isnull().sum()print(missing_values)#缺失值處理 data_cleaned=data.dropna(thresh=len(data)-300,axis=1)data_cleaned=data_cleaned.dropna()print(data_cleaned.shape)#查看數據維度print(data_cleaned.columns)#查看變量名#將數據分為特征和標簽X=data_cleaned.drop(columns=['首日交易股數(股)'])y=data_cleaned['首日交易股數(股)']#數據標準化scaler=StandardScaler()X_scaled=scaler.fit_transform(X)#數據集劃分X_train,X_test,y_train,y_test=train_test_split(X_scaled,y,test_size=0.2,random_state=1234)查看各列的缺失值發現部分輸入變量存在較多的缺失值將缺失值數量超過300的列刪除再將剩余變量中有缺失值的行刪除最終得到4899條記錄、9個變量。數據讀入與預覽缺失值統計與處理特征提取、數據標準化與數據集劃分提取了全部輸入變量并命名為X提取“首日交易股數”作為輸出變量并命名為y進行數據標準化處理,方便輸出標準化回歸系數采用留出法,按照8∶2的比例對數據集進行了劃分5.2線性回歸5.2.3線性回歸算法案例實踐數據讀入與預處理線性回歸模型訓練模型性能度量變量重要性度量#線性回歸模型訓練lr=LinearRegression()lr.fit(X_train,y_train)print('標準化回歸系數:')fori,coefinenumerate(lr.coef_):print(f'{X.columns[i]}:{coef:.3f}')通過LinearRegression初始化模型通過模型名.fit訓練模型通過模型名.coef_輸出了回歸系數,并以保留3位小數的格式輸出5.2線性回歸5.2.3線性回歸算法案例實踐數據讀入與預處理線性回歸模型訓練模型性能度量變量重要性度量#預測pred_train=lr.predict(X_train)pred_test=lr.predict(X_test)#模型性能度量mse_train=mean_squared_error(y_train,pred_train)r2_train=r2_score(y_train,pred_train)mse_test=mean_squared_error(y_test,pred_test)r2_test=r2_score(y_test,pred_test)#存儲結果到列表并輸出results=[mse_train,mse_test,r2_train,r2_test]labels=['訓練集MSE','測試集MSE','訓練集R方','測試集R方']formatted_results=['{}:{:.3f}'.format(label,result)

forlabel,resultinzip(labels,results)]forresultinformatted_results:print(result)在訓練集與測試集上得到了預測結果分別計算了訓練集、測試集上的MSE與R方,并輸出相應結果訓練集與測試集上的R方分別為0.812和0.719模型解釋歷史數據的能力尚可,但泛化能力不夠理想為了提升預測效果,可能需要嘗試更多的模型5.2線性回歸5.3邏輯回歸5.3.1邏輯回歸模型5.3邏輯回歸模型構建關注的輸出變量y是一個二分類變量,對其進行獨熱編碼,用y=1表示變量為某個類別(比如違約),用y=0表示變量為另一個類別(比如非違約)通過輸入變量對y進行預測,實際上是希望建立二者的函數關系由于E(y)等于y取1的概率,函數f(.)應在[0,1]上取值,Logistic函數符合要求且具有優良的數學性質以Logistic函數作為連接函數建立輸入變量與輸出變量y取1的概率p之間的模型,即邏輯回歸模型,其表達式形如等價形式為:對數優勢比反映輸出變量y取1與取0的概率的差異程度邏輯回歸模型建立了輸入變量與輸出變量的對數優勢比之間的線性回歸模型5.3.1邏輯回歸模型參數估計因為對每一個樣本很難獲取實際的概率

,所以最小二乘法不再適用采用極大似然法估計邏輯回歸模型的參數極大似然估計的基本思想是使樣本出現的“可能性”達到最大邏輯回歸模型的參數估計在這一思想下變成如下優化問題表示輸入變量的第i個樣本實際運用中,通常對以上問題的目標函數取對數以方便求解,該目標函數稱作對數似然函數,即5.3邏輯回歸5.3.1邏輯回歸模型模型評價閾值的選擇與影響利用邏輯回歸模型,不能直接得到輸出變量y的預測值0或1,而是得到對數優勢比的預測值,根據對數優勢比,可以得到y取1的概率需要確定一個閾值,當預測概率高于該閾值時,判定y取1,否則判定y取0閾值的選擇影響預測正確率以錯判率最低為目標,最優的閾值為0.5,這也是很多機器學習分類算法默認的閾值對于兩種錯判,實踐中可能希望賦予不同的權重,以加權錯判率最低為目標,最優的閾值將不再等于0.5ROC(ReceiverOperatingCharacteristic,受試者操作特征)曲線評估二分類模型性能的常用工具以TPR(或召回率)為縱軸,FPR(FalsePositiveRate,假正率)為橫軸,連接不同閾值下的點(FPR,TPR)得到的曲線

ROC曲線越接近左上角,代表模型性能越好連接點(0,0)與(1,1)的直線(即對角線)代表隨機分類的結果從ROC曲線來看,模型2優于模型1Tips:一般來說,模型的ROC曲線應在對角線上方,否則模型效果不如隨機分類效果,說明其性能很差5.3邏輯回歸5.3.1邏輯回歸模型模型評價AUC(AreaUnderCurve,曲線下面積)值基于ROC曲線,即ROC曲線下方的面積該指標在評價模型性能時不受閾值影響AUC值越接近1,代表模型性能越好ROC曲線與AUC值反映了模型在不同閾值下TPR和FPR的綜合效果ROC曲線可以幫助我們選擇最佳的閾值參照右圖,希望控制FPR不超過0.4時,我們可以選擇點(0.4,0.784)對應的閾值,此時TPR可以達到0.784點(0.6,0.936)所對應的閾值可能不太好,因為使用該閾值雖然能得到較高的TPR,但也導致了較高的FPR一般來說,希望在得到較高的TPR時,FPR也能得到適當的控制5.3邏輯回歸5.3.2邏輯回歸模型案例實踐實踐目標基于上市公司歷史數據,建立公司ST的邏輯回歸預測模型評價模型的性能度量各個變量對于預測公司ST的重要性程度實踐步驟數據讀入與預處理模型訓練與標準化回歸系數輸出模型性能度量變量重要性度量【案例5-2】上市公司ST預測5.3邏輯回歸5.3.2邏輯回歸模型案例實踐數據讀入與預處理模型訓練與標準化回歸系數輸出模型性能度量變量重要性度量#讀入數據data=pd.read_excel('ST.xlsx')data.head()#數據預覽print(data.shape)#查看數據結構#查看各列缺失值情況missing_values=data.isnull().sum()print(missing_values)#將數據分為特征和標簽X=data.drop(columns=['ST'])y=data['ST']#數據標準化scaler=StandardScaler()X_scaled=scaler.fit_transform(X)#數據集劃分X_train,X_test,y_train,y_test=train_test_split(X_scaled,y,test_size=0.2,random_state=1234)讀入數據后進行缺失值統計,發現并無缺失值直接將數據分為特征和標簽,并將輸入變量進行標準化處理按照8∶2的比例將數據劃分為訓練集與測試集5.3邏輯回歸5.3.2邏輯回歸模型案例實踐數據讀入與預處理模型訓練與標準化回歸系數輸出模型性能度量變量重要性度量#創建并訓練邏輯回歸模型LR=LogisticRegression()LR.fit(X_train,y_train)#輸出標準化回歸系數print('標準化回歸系數:')fori,coefinenumerate(LR.coef_[0]):print(f"{X.columns[i]}:{coef:.3f}")變量標準化回歸系數變量標準化回歸系數凈利潤0.053每股凈資產-1.796非經常性損益-0.854經營杠桿-0.249基本每股收益-2.220應收賬款周轉率TTM-0.643加權平均凈資產收益率-0.024營業周期TTM0.110邏輯回歸模型的標準化回歸系數5.3邏輯回歸5.3.2邏輯回歸模型案例實踐數據讀入與預處理模型訓練與標準化回歸系數輸出模型性能度量變量重要性度量#模型性能度量LR_pred=LR.predict(X_test)#對測試集進行預測report_LR=classification_report(y_test,LR_pred,digits=3)cfmatrix_LR=confusion_matrix(y_test,LR_pred)print('預測效果報告:\n',report_LR)#輸出預測效果報告print('混淆矩陣:\n',cfmatrix_LR)#輸出混淆矩陣#模型性能度量:ROC曲線與AUC值#得到測試集的預測概率LR_predp=LR.predict_proba(X_test)[:,1]#計算ROC曲線的參數fpr,tpr,thresholds=roc_curve(y_test,LR_predp)roc_auc=auc(fpr,tpr)#繪制ROC曲線plt.figure(figsize=(5,5))plt.plot(fpr,tpr,color='darkorange',lw=2,label='ROC曲線(AUC值:%0.3f)'%roc_auc)plt.plot([0,1],[0,1],color='navy',lw=2,linestyle='--')plt.xlim([0.0,1.0])plt.ylim([0.0,1.05])plt.xlabel('FPR')plt.ylabel('TPR')plt.legend(loc='lowerright')plt.show()Python默認的閾值為0.5模型預測0和1的平均查準率為0.717加權平均查準率為0.764(以樣本量占比為權重)模型對測試集的預測正確率為0.775AUC值為0.8255.3邏輯回歸5.3.2邏輯回歸模型案例實踐數據讀入與預處理模型訓練與標準化回歸系數輸出模型性能度量變量重要性度量#找到使fpr<0.2的情況下tpr盡可能大的閾值idx=np.where(fpr<0.2)iflen(idx)>0:

max_tpr_idx=np.argmax(tpr[idx])

threshold=thresholds[idx][max_tpr_idx]

tpr_value=tpr[idx][max_tpr_idx]

fpr_value=fpr[idx][max_tpr_idx]

print('滿足條件的閾值:{:.4f}'.format(threshold))

print('對應的TPR:{:.4f}'.format(tpr_value))

print('對應的FPR:{:.4f}'.format(fpr_value))else:

print('未找到滿足條件的閾值')#模型性能度量:以閾值0.4768進行預測threshold=0.4768LR_pred=(LR_predp>threshold).astype(int)report_LR=classification_report(y_test,LR_pred,digits=3)cfmatrix=confusion_matrix(y_test,LR_pred)#輸出模型性能報告print('預測效果報告:\n',report_LR)#輸出預測效果報告print('混淆矩陣:\n',cfmatrix)#輸出混淆矩陣根據ROC曲線,希望在FPR小于0.2的前提下,使TPR盡可能高運行代碼得到:閾值為0.4768時符合要求,FPR為0.1207,TPR為0.6364以閾值0.4768重新進行預測并評價模型效果模型整體預測正確率與預測正類的效果都得到了提升5.3邏輯回歸5.3.2邏輯回歸模型案例實踐數據讀入與預處理模型訓練與標準化回歸系數輸出模型性能度量變量重要性度量#根據標準化回歸系數的絕對值對變量進行排序abs_coef=np.abs(LR.coef_[0])sorted_indices=abs_coef.argsort()[::-1]sorted_columns=X.columns[sorted_indices]sorted_coef=abs_coef[sorted_indices]#繪制條形圖plt.figure(figsize=(10,6))plt.barh(sorted_columns,sorted_coef,color='skyblue')plt.xlabel('變量重要性度量(基于標準化回歸系數絕對值)')plt.grid(axis='x')plt.show()對于公司ST預測而言,基本每股收益最為重要,其次依次為每股凈資產、非經常性損益、應收賬款周轉率TTM在預測公司ST時,這些因素可以著重考慮5.3邏輯回歸5.4決策樹5.4決策樹決策樹模擬人類在做決策時常用的思維過程,它通過一系列的條件判斷從數據中提取出規則和模式決策樹不再尋找特征與輸出變量之間的函數關系(比如線性關系),而是尋找一種推理規則決策樹的每個節點及其分支對應了一條推理規則。根節點中間節點葉節點分支樹深度:根節點到葉節點的最大層數二叉樹:每個節點有至多兩個子節點多叉樹:任意一個節點下有多于兩個子節點5.4.1決策樹原理特征的選擇優先選擇的特征應當能更好地區分輸出變量依據該特征進行分支時,各個分支中所包含的樣本的異質性應該較低異質性的度量熵(Entropy)熵為非負數,用于度量信息的不確定性早期決策樹算法采用引入新的特征后,應使不確定性下降這種不確定性的變化稱為信息增益(InformationGain)基尼系數(GiniCoefficient)計算公式簡單,計算速度較快Python的sklearn庫中,決策樹算法默認使用基尼系數引入新特征后,基尼系數應當下降以基尼系數為指標,應選擇使其下降最多的特征。5.4決策樹5.4.1決策樹原理序號投資期限預期收益投資風險盈利序號投資期限預期收益投資風險盈利1長高低是18短低低是2長高低是19短低高是3長高低是20長低高否4長低低是21長低低否5長高低是22長低低否6長低低是23長低低否7長高高是24長低高否8短高低是25長高高否9短高高是26短低低否10短高低是27短低低否11短高低是28長低高否12短高低是29長低高否13短高低是30短低高否14長高低否31長高高否15短低低是32短低低否16短低低是33短低高否17短低低是34短低高否例依據34個投資項目的歷史數據構建決策樹Step0計算根節點處的基尼系數Step1.1計算引入各個特征后引起的基尼系數變化引入某個特征的基尼系數為其左右分支基尼系數的加權平均以“預期收益”為例:左分支(預期收益低)的基尼系數右分支(預期收益高)的基尼系數以各分支樣本量為權重引入“預期收益”引起的基尼系數變化為:類似可以計算引入投資風險、投資期限的基尼系數分別約為0.413、0.471Step1.2選擇使基尼系數降低最多的特征預期收益被選擇分支終止條件可以是:所有特征都被考慮到節點處異質性為零樹深度達到預期限制葉節點樣本量達到預期限制…分支終止Step1確定當前節點引入的特征Step2計算當前特征各個分支的基尼系數,轉入下一個節點NOYES結束5.4決策樹5.4.1決策樹原理決策樹序號投資期限預期收益投資風險盈利序號投資期限預期收益投資風險盈利1長高低是18短低低是2長高低是19短低高是3長高低是20長低高否4長低低是21長低低否5長高低是22長低低否6長低低是23長低低否7長高高是24長低高否8短高低是25長高高否9短高高是26短低低否10短高低是27短低低否11短高低是28長低高否12短高低是29長低高否13短高低是30短低高否14長高低否31長高高否15短低低是32短低低否16短低低是33短低高否17短低低是34短低高否例依據34個投資項目的歷史數據進行投資決策分類樹與回歸樹用于分類預測的樹稱作分類樹,用于回歸預測的樹稱作回歸樹回歸樹主要在兩個問題上與分類樹存在差異:異質性的度量與預測異質性的度量以MSE來度量連續型輸出變量的異質性預測以葉節點處包含的樣本點的均值作為該分支下輸出變量的預測值5.4.2決策樹算法案例實踐決策樹【案例5-1續】基于回歸樹的IPO首日成交量預測實踐目標基于上市公司歷史數據,建立公司IPO首日成交量的決策樹模型評價模型的性能度量各個變量對于預測IPO首日成交量的重要性程度必要的庫scikit-learn(sklearn)庫提供各種用于機器學習和數據挖掘的工具實踐步驟數據讀入與預處理決策樹模型訓練模型性能度量變量重要性度量dtr=DecisionTreeRegressor(max_depth=5,random_state=44)dtr.fit(X_train,y_train)plt.figure(figsize=(15,10))plot_tree(dtr,filled=True,rounded=True,class_names=y.unique().astype(str).tolist(),feature_names=X.columns.tolist(),fontsize=9,precision=3)plt.show()模型訓練決策樹圖繪制#獲取變量重要性度量importances=dtr.feature_importances_sorted_indices=importances.argsort()[::-1]sorted_columns=X.columns[sorted_indices]sorted_imp=importances[sorted_indices]#繪制條形圖plt.figure(figsize=(10,6))plt.barh(sorted_columns,sorted_imp,color='skyblue')plt.xlabel('變量重要性度量')plt.grid(axis='x')plt.show()變量重要性度量5.4.2決策樹算法案例實踐【案例5-1續】基于回歸樹的IPO首日成交量預測最大樹深度為5的回歸樹模型在測試集與訓練集上的R方分別為0.959和0.782,該模型效果優于線性回歸模型依據回歸樹模型,重要性排在前3位的變量分別是公開招股數量、實際發行總量與每股發行費用5.4決策樹5.4.2決策樹算法案例實踐【案例5-2續】基于分類樹的上市公司ST預測實踐目標基于上市公司歷史數據,建立公司ST的決策樹預測模型評價模型的性能度量各個變量對于預測公司ST的重要性程度實踐步驟數據讀入與預處理決策樹模型訓練模型性能度量變量重要性度量dtc=DecisionTreeClassifier(max_depth=5,random_state=123)dtc.fit(X_train,y_train)模型訓練分類樹模型與邏輯回歸模型性能相近分類樹模型認為重要性排在前3位的變量依次為每股凈資產、基本每股收益與凈利潤5.4決策樹5.5隨機森林5.5隨機森林決策樹的預測結果不夠穩定,往往具有高方差的特征決策樹的高方差性在特征較多、樹深度較大時更明顯【案例5-1】的決策樹模型100次模型訓練的測試集R方

這種組合多個基礎模型提升預測效果的做法,代表了機器學習算法的一大分支,即集成學習隨機森林是集成學習中綜合性能較好、較為常用的一種算法5.5.1隨機森林算法思想重抽樣自舉法(Bootstrap)隨機森林基于重抽樣自舉法得到m個數據集,在每個數據集上訓練一個決策樹模型隨機森林算法為了降低基礎模型之間的相關性,使每棵決策樹都隨機選擇一部分特征進入基礎模型,這樣便得到一個由m棵樹構成的“森林”對于分類問題,隨機森林通過投票機制來確定最終的類別,即預測結果為m棵樹中得票數最高的類別對于回歸問題,隨機森林通過取平均值來得到最終的預測值生成多個數據集用于訓練多個模型的策略從樣本量為N的原始數據集中進行有放回的隨機抽樣,得到一個樣本量為N的樣本,如此進行m次,得到m個數據集,用于構建m個基礎模型因為抽樣存在隨機性,這樣得到的m個數據集可以認為是相互獨立的5.5隨機森林5.5.1隨機森林算法思想袋外(Out-Of-Bag,OOB)觀測

5.5隨機森林5.5.2隨機森林算法案例實踐IPO首日成交量預測#隨機森林模型的構建:無須劃分數據集rfr=RandomForestRegressor(max_depth=2,random_state=44,oob_score=True)rfr.fit(X_scaled,y)#OOB的R方的計算oob_R2=rfr.oob_score_print('OOB的R方為:',oob_R2)#獲取變量重要性度量imp_rfr=rfr.feature_importances_sorted_indices=imp_rfr.argsort()[::-1]sorted_columns=X.columns[sorted_indices]sorted_imp=imp_rfr[sorted_indices]#繪制條形圖plt.figure(figsize=(10,6))plt.barh(sorted_columns,sorted_imp,color='skyblue')plt.xlabel('變量重要性度量')plt.grid(axis='x')plt.show()OOB的R方為0.759,該值可以作為隨機森林模型泛化能力的度量變量重要性度量的可視化結果與線性回歸模型的結果較為接近,與決策樹的結果差異較大因為選擇了較小的樹深度,部分變量未進入模型,其變量重要性的度量也變為05.5隨機森林5.5.2隨機森林算法案例實踐IPO首日成交量預測基于

5.2.3

節劃分的測試集與訓練集重新訓練隨機森林模型,得到訓練集與測試集的

R

方分別為0.853、0.788隨機森林模型雖然采用了非常簡單的樹結構(最大樹深度為2),但集成多棵樹(100棵樹)仍然取得了優于最大樹深度為

5的單棵決策樹的泛化能力#隨機森林模型:基于劃分后的數據集rf=RandomForestRegres

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論