Rumah  >  Artikel  >  Peranti teknologi  >  Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

王林
王林ke hadapan
2023-09-22 12:09:03799semak imbas

Analisis kepentingan ciri digunakan untuk memahami kegunaan atau nilai setiap ciri (pembolehubah atau input) dalam membuat ramalan. Matlamatnya adalah untuk mengenal pasti ciri paling penting yang mempunyai kesan terbesar pada output model, dan ia merupakan kaedah yang sering digunakan dalam pembelajaran mesin.

Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

Mengapa analisis kepentingan ciri penting

Jika anda mempunyai set data dengan berdozen atau bahkan ratusan ciri, setiap ciri mungkin mempunyai sumbangan kepada prestasi model pembelajaran mesin anda. Tetapi tidak semua ciri dicipta sama. Sesetengahnya mungkin berlebihan atau tidak relevan, yang meningkatkan kerumitan pemodelan dan boleh menyebabkan pemasangan berlebihan.

Analisis kepentingan ciri boleh mengenal pasti dan menumpukan pada ciri yang paling bermaklumat, menghasilkan kelebihan berikut: 1. Berikan cerapan: Dengan menganalisis kepentingan ciri, kami boleh mendapatkan cerapan tentang ciri dalam data yang mempunyai kesan paling besar pada hasil, sekali gus membantu kami memahami sifat data dengan lebih baik. 2. Optimumkan model: Dengan mengenal pasti ciri utama, kami boleh mengoptimumkan prestasi model, mengurangkan overhed pengkomputeran dan storan yang tidak diperlukan, dan meningkatkan kecekapan latihan dan ramalan model. 3. Pemilihan ciri: Analisis kepentingan ciri boleh membantu kami memilih ciri dengan kuasa ramalan yang paling tinggi, dengan itu meningkatkan ketepatan dan keupayaan generalisasi model. 4. Terangkan model: Analisis kepentingan ciri juga boleh membantu kami menerangkan hasil ramalan model, mendedahkan corak dan hubungan sebab di sebalik model dan meningkatkan kebolehtafsiran model Bersama

  • Latihan dan inferens yang lebih pantas .
  • Kebolehtafsiran yang dipertingkatkan
  • Mari kita lihat dengan lebih mendalam beberapa kaedah analisis kepentingan ciri dalam Python.
  • Kaedah Analisis Kepentingan Ciri

1. Pilih Pilih Kepentingan Kepentingan

Kaedah ini menyusun nilai setiap ciri secara rawak, dan kemudian memantau tahap kemerosotan prestasi model. Jika penurunan lebih besar, ini bermakna ciri itu lebih penting
from sklearn.datasets import load_breast_cancer from sklearn.ensemble import RandomForestClassifier from sklearn.inspection import permutation_importance  from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt  cancer = load_breast_cancer()  X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=1)  rf = RandomForestClassifier(n_estimators=100, random_state=1) rf.fit(X_train, y_train)   baseline = rf.score(X_test, y_test) result = permutation_importance(rf, X_test, y_test, n_repeats=10, random_state=1, scoring='accuracy')  importances = result.importances_mean  # Visualize permutation importances plt.bar(range(len(importances)), importances) plt.xlabel('Feature Index') plt.ylabel('Permutation Importance') plt.show()

2. Kepentingan ciri terbina dalam (coef_ atau feature_importances_)

Sesetengah model, seperti regresi linear dan hutan rawak secara langsung Output markah kepentingan ciri. Ini menunjukkan sumbangan setiap ciri kepada ramalan akhir. Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

from sklearn.datasets import load_breast_cancer from sklearn.ensemble import RandomForestClassifier  X, y = load_breast_cancer(return_X_y=True)  rf = RandomForestClassifier(n_estimators=100, random_state=1) rf.fit(X, y)  importances = rf.feature_importances_  # Plot importances plt.bar(range(X.shape[1]), importances) plt.xlabel('Feature Index')  plt.ylabel('Feature Importance') plt.show()

3, Tinggalkan satu keluar

Alih keluar satu ciri pada satu masa dan nilai ketepatannya. Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt import numpy as np  # Load sample data X, y = load_breast_cancer(return_X_y=True)  # Split data into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)   # Train a random forest model rf = RandomForestClassifier(n_estimators=100, random_state=1) rf.fit(X_train, y_train)  # Get baseline accuracy on test data base_acc = accuracy_score(y_test, rf.predict(X_test))  # Initialize empty list to store importances importances = []  # Iterate over all columns and remove one at a time for i in range(X_train.shape[1]):X_temp = np.delete(X_train, i, axis=1)rf.fit(X_temp, y_train)acc = accuracy_score(y_test, rf.predict(np.delete(X_test, i, axis=1)))importances.append(base_acc - acc)  # Plot importance scores plt.bar(range(len(importances)), importances) plt.show()

4. Analisis korelasi

Kandungan yang perlu ditulis semula ialah: Kira korelasi antara ciri dan pembolehubah sasaran, semakin penting ciri tersebut Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

5. Penghapusan Ciri Rekursif

Alih keluar ciri secara rekursif dan lihat cara ia mempengaruhi prestasi model. Ciri yang mengakibatkan penurunan yang lebih besar apabila dialih keluar adalah lebih penting.

import pandas as pd from sklearn.datasets import load_breast_cancer  X, y = load_breast_cancer(return_X_y=True) df = pd.DataFrame(X, columns=range(30)) df['y'] = y  correlations = df.corrwith(df.y).abs() correlations.sort_values(ascending=False, inplace=True)  correlations.plot.bar()

Keluarannya ialah [6 4 11 12 7 11 18 21 8 16 10 3 15 14 19 17 20 13 11 11 12 9 11 5 11.

KepentinganSembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

Kira satu Bilangan kali ciri digunakan dalam membelah data Ciri ini digunakan dalam semua pokok. Lebih banyak pemisahan bermakna lebih penting

from sklearn.ensemble import RandomForestClassifier from sklearn.feature_selection import RFE import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as plt  X, y = load_breast_cancer(return_X_y=True) df = pd.DataFrame(X, columns=range(30)) df['y'] = y  rf = RandomForestClassifier()  rfe = RFE(rf, n_features_to_select=10)  rfe.fit(X, y)  print(rfe.ranking_)

7. Analisis komponen utama PCA

Lakukan analisis komponen utama pada ciri dan lihat nisbah varians yang dijelaskan bagi setiap komponen utama. Ciri dengan beban yang lebih tinggi pada beberapa komponen pertama adalah lebih penting.

import xgboost as xgb import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as plt  X, y = load_breast_cancer(return_X_y=True) df = pd.DataFrame(X, columns=range(30)) df['y'] = y  model = xgb.XGBClassifier() model.fit(X, y)  importances = model.feature_importances_ importances = pd.Series(importances, index=range(X.shape[1]))  importances.plot.bar()

Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan8. Analisis varians ANOVA

Gunakan f_classif() untuk mendapatkan analisis nilai varians bagi setiap ciri. Semakin tinggi nilai f, semakin kuat korelasi antara ciri dan sasaran.

from sklearn.decomposition import PCA import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as plt  X, y = load_breast_cancer(return_X_y=True) df = pd.DataFrame(X, columns=range(30)) df['y'] = y  pca = PCA() pca.fit(X)  plt.bar(range(pca.n_components_), pca.explained_variance_ratio_)  plt.xlabel('PCA components') plt.ylabel('Explained Variance')

Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan9. Ujian khi kuasa dua

Gunakan fungsi chi2() untuk mendapatkan statistik khi kuasa dua bagi setiap ciri. Ciri dengan markah yang lebih tinggi lebih berkemungkinan bebas daripada pembolehubah sasaran

from sklearn.feature_selection import chi2 import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as plt  X, y = load_breast_cancer(return_X_y=True) df = pd.DataFrame(X, columns=range(30)) df['y'] = y  chi_scores = chi2(X, y) chi_scores = pd.Series(chi_scores[0], index=range(X.shape[1])) chi_scores.plot.bar()

Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan

为什么不同的方法会检测到不同的特征?

由于不同的特征重要性方法,有时可以确定哪些特征是最重要的

1、他们用不同的方式衡量重要性:

有的使用不同特特征进行预测,监控精度下降

像XGBOOST或者回归模型使用内置重要性来进行特征的重要性排序

而PCA着眼于方差解释

2、不同模型有不同模型的方法:

线性模型偏向于处理线性关系,而树模型则更倾向于捕捉接近根节点的特征

3、交互作用:

有些方法可以获取特征之间的相互关系,而有些方法则不行,这会导致结果的不同

3、不稳定:

使用不同的数据子集,重要性值可能在同一方法的不同运行中有所不同,这是因为数据差异决定的

4、Hyperparameters:

通过调整超参数,例如主成分分析(PCA)组件或决策树的深度,也会对结果产生影响

所以不同的假设、偏差、数据处理和方法的可变性意味着它们并不总是在最重要的特征上保持一致。

选择特征重要性分析方法的一些最佳实践

  • 尝试多种方法以获得更健壮的视图
  • 聚合结果的集成方法
  • 更多地关注相对顺序,而不是绝对值
  • 差异并不一定意味着有问题,检查差异的原因会对数据和模型有更深入的了解

Atas ialah kandungan terperinci Sembilan kaedah analisis kepentingan ciri Python yang biasa digunakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam