日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【深度学习】神经网络模型特征重要性可以查看了!!!

發(fā)布時(shí)間:2025/3/12 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】神经网络模型特征重要性可以查看了!!! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:杰少

查看NN模型特征重要性的技巧

簡 介

我們都知道樹模型的特征重要性是非常容易繪制出來的,只需要直接調(diào)用樹模型自帶的API即可以得到在樹模型中每個(gè)特征的重要性,那么對于神經(jīng)網(wǎng)絡(luò)我們該如何得到其特征重要性呢?

本篇文章我們就以LSTM為例,來介紹神經(jīng)網(wǎng)絡(luò)中模型特征重要性的一種獲取方式。

NN模型特征重要性

01

基本思路

該策略的思想來源于:Permutation Feature Importance,我們以特征對于模型最終預(yù)測結(jié)果的變化來衡量特征的重要性。

02

實(shí)現(xiàn)步驟

NN模型特征重要性的獲取步驟如下:

  • 訓(xùn)練一個(gè)NN;

  • 每次獲取一個(gè)特征列,然后對其進(jìn)行隨機(jī)shuffle,使用模型對其進(jìn)行預(yù)測并得到Loss;

  • 記錄每個(gè)特征列以及其對應(yīng)的Loss;

  • 每個(gè)Loss就是該特征對應(yīng)的特征重要性,如果Loss越大,說明該特征對于NN模型越加重要;反之,則越加不重要。

  • Code

    代碼摘自:https://www.kaggle.com/cdeotte/lstm-feature-importance/notebook

    import?matplotlib.pyplot?as?plt from?tqdm.notebook?import?tqdmimport?tensorflow?as?tf from?tensorflow?import?keras import?tensorflow.keras.backend?as?K from?tensorflow.keras.callbacks?import?EarlyStopping,?ModelCheckpoint from?tensorflow.keras.callbacks?import?LearningRateScheduler,?ReduceLROnPlateau from?tensorflow.keras.optimizers.schedules?import?ExponentialDecay from?sklearn.metrics?import?mean_absolute_error?as?mae from?sklearn.preprocessing?import?RobustScaler,?normalize from?sklearn.model_selection?import?train_test_split,?GroupKFold,?KFold from?IPython.display?import?displayCOMPUTE_LSTM_IMPORTANCE?=?1 ONE_FOLD_ONLY?=?1with?gpu_strategy.scope():kf?=?KFold(n_splits=NUM_FOLDS,?shuffle=True,?random_state=2021)test_preds?=?[]for?fold,?(train_idx,?test_idx)?in?enumerate(kf.split(train,?targets)):K.clear_session()print('-'*15,?'>',?f'Fold?{fold+1}',?'<',?'-'*15)X_train,?X_valid?=?train[train_idx],?train[test_idx]y_train,?y_valid?=?targets[train_idx],?targets[test_idx]#?導(dǎo)入已經(jīng)訓(xùn)練好的模型model?=?keras.models.load_model('models/XXX.h5')#?計(jì)算特征重要性if?COMPUTE_LSTM_IMPORTANCE:results?=?[]print('?Computing?LSTM?feature?importance...')for?k?in?tqdm(range(len(COLS))):if?k>0:?save_col?=?X_valid[:,:,k-1].copy()np.random.shuffle(X_valid[:,:,k-1])oof_preds?=?model.predict(X_valid,?verbose=0).squeeze()?mae?=?np.mean(np.abs(?oof_preds-y_valid?))results.append({'feature':COLS[k],'mae':mae})if?k>0:?X_valid[:,:,k-1]?=?save_col#?展示特征重要性print()df?=?pd.DataFrame(results)df?=?df.sort_values('mae')plt.figure(figsize=(10,20))plt.barh(np.arange(len(COLS)),df.mae)plt.yticks(np.arange(len(COLS)),df.feature.values)plt.title('LSTM?Feature?Importance',size=16)plt.ylim((-1,len(COLS)))plt.show()#?SAVE?LSTM?FEATURE?IMPORTANCEdf?=?df.sort_values('mae',ascending=False)df.to_csv(f'lstm_feature_importance_fold_{fold}.csv',index=False)#?ONLY?DO?ONE?FOLDif?ONE_FOLD_ONLY:?break

    適用情況

    適用于所有的NN模型。

    參考文獻(xiàn)

  • https://www.kaggle.com/cdeotte/lstm-feature-importance/notebook

  • Permutation Feature Importance

  • 往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁完整版課件

    本站qq群851320808,加入微信群請掃碼:

    總結(jié)

    以上是生活随笔為你收集整理的【深度学习】神经网络模型特征重要性可以查看了!!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。