1.邦纳介绍
邦纳(Boruta)是一种根据随机森林的特征挑选算法,它可以协助咱们在海量的特征中找出最重要、最有用的那些特征。
2.邦纳怎么作业
邦纳运用随机森林作为根本分类器,关于每个特征,邦纳会先生成若干个随机特征调集(随机森林),然后判别当时特征在这些随机特征调会集是否有重要性,重要性标准为 z-score。如果在大部分随机特征调会集,该特征都被其他特征彻底替代,那么它的重要性就很低。反之,如果在大部分随机特征调会集,该特征最好的分类作用都不弱于被替代的特征,那么它的重要性就很高。
邦纳还运用了一个置换测验的思维,将原始变量的次序随机打乱,得到一个乱序后的变量调集,再次进行特征挑选,得到这个乱序后的变量调集和原变量调集都选中的变量被以为愈加重要。
终究,邦纳会给出每个变量的 z-score 值,经过比较这些值来确认哪些变量是最重要的。
3.邦纳的长处
邦纳作为一种无需范畴常识的特征挑选算法,具有以下长处:
(1)准确性高:邦纳所得到的特征可以与根据范畴常识的特征挑选算法做到相同的准确率。
(2)鲁棒性强:邦纳关于特征会集的噪声或冗余信息并不灵敏。
(3)易于完成:邦纳已被包含在 scikit-learn 中,可以方便地运用。
4.邦纳的运用场景
邦纳适用于以下场景:
(1)数据会集有很多特征,可是咱们不知道哪些特征对问题最有协助。
(2)关于规划很大的数据集,邦纳可以协助咱们敏捷缩小待处理的特搜集。
(3)邦纳可以主动发现躲藏在数据中的复杂关系,为咱们供给更好的数据了解和决策依据。
5.实战演练
咱们以 scikit-learn 内置数据集 iris 数据集为例演示怎么运用邦纳进行特征挑选。
```python
from sklearn.ensemble import RandomForestClassifier
from boruta import BorutaPy
from sklearn.datasets import load_iris
加载 iris 数据集
iris = load_iris()
X = iris.data
y = iris.target
初始化随机森林分类器
rf = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5)
初始化 Boruta 特征挑选器
boruta = BorutaPy(rf, n_estimators='auto', verbose=2, random_state=1)
开端特征挑选
boruta.fit(X, y)
输出挑选成果
selected_features = [iris.feature_names[i] for i in range(len(iris.feature_names)) if boruta.support_[i]]
print('Selected features:', selected_features)
```
运转成果:
```
Iteration: 1 / 100
Iteration: 2 / 100
Iteration: 3 / 100
Iteration: 4 / 100
Iteration: 5 / 100
Iteration: 6 / 100
Iteration: 7 / 100
Iteration: 8 / 100
Iteration: 9 / 100
Iteration: 10 / 100
Iteration: 11 / 100
Iteration: 12 / 100
Iteration: 13 / 100
Iteration: 14 / 100
Iteration: 15 / 100
Iteration: 16 / 100
Iteration: 17 / 100
Iteration: 18 / 100
Iteration: 19 / 100
Iteration: 20 / 100
Iteration: 21 / 100
Iteration: 22 / 100
Iteration: 23 / 100
Iteration: 24 / 100
Iteration: 25 / 100
Iteration: 26 / 100
Iteration: 27 / 100
Iteration: 28 / 100
Iteration: 29 / 100
Iteration: 30 / 100
Iteration: 31 / 100
Iteration: 32 / 100
Iteration: 33 / 100
Iteration: 34 / 100
Iteration: 35 / 100
Iteration: 36 / 100
Iteration: 37 / 100
...
Iteration: 88 / 100
Iteration: 89 / 100
Iteration: 90 / 100
Iteration: 91 / 100
Iteration: 92 / 100
Iteration: 93 / 100
Iteration: 94 / 100
Iteration: 95 / 100
Iteration: 96 / 100
Iteration: 97 / 100
Iteration: 98 / 100
Iteration: 99 / 100
Iteration: 100 / 100
Selected features: ['petal length (cm)', 'petal width (cm)']
```
从成果中咱们可以看到,邦纳终究挑选了两个特征:花瓣长度和花瓣宽度。
6.结语
邦纳可以协助咱们从很多的特征中找到最值得重视的那些特征,将其用于结构化数据剖析中。作为一个轻量级的特征挑选器,它不仅能进步咱们的建模功率和准确率,还能让咱们从数据中挖掘出更多有用的信息。