Maison > Périphériques technologiques > IA > le corps du texte

Sélection de fonctionnalités via des stratégies d'apprentissage par renforcement

王林
Libérer: 2024-06-05 13:00:43
original
392 Les gens l'ont consulté

La sélection des fonctionnalités est une étape clé dans le processus de création d'un modèle d'apprentissage automatique. Choisir de bonnes fonctionnalités pour le modèle et la tâche que nous voulons accomplir peut améliorer les performances.

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

Si nous avons affaire à des ensembles de données de grande dimension, la sélection des caractéristiques est particulièrement importante. Cela permet au modèle d’apprendre plus rapidement et mieux. L’idée est de trouver le nombre optimal de fonctionnalités et les fonctionnalités les plus significatives.

Dans cet article, nous présenterons et mettrons en œuvre une nouvelle sélection de fonctionnalités grâce à une stratégie d'apprentissage par renforcement. Nous commençons par discuter de l’apprentissage par renforcement, en particulier des processus de décision markoviens. Il s'agit d'une méthode très nouvelle dans le domaine de la science des données, particulièrement adaptée à la sélection de fonctionnalités. Ensuite, il présente son implémentation et comment installer et utiliser la bibliothèque python (FSRLearning). Enfin, un exemple simple est utilisé pour démontrer ce processus.

Apprentissage par renforcement : problème de décision de Markov pour la sélection des fonctionnalités

Les techniques d'apprentissage par renforcement (RL) peuvent être très efficaces pour résoudre des problèmes tels que la résolution de jeux. Le concept d'apprentissage par renforcement est basé sur le processus de décision de Markov (MDP). Le but ici n’est pas d’entrer dans une définition approfondie mais d’avoir une compréhension générale de son fonctionnement et de la manière dont il peut être utile pour notre problème. En apprentissage par renforcement, un agent apprend en interagissant avec son environnement. Il prend des décisions en observant l'état actuel et les signaux de récompense, et recevra des commentaires positifs ou négatifs en fonction de l'action choisie. L'objectif de l'agent est de maximiser la récompense cumulée en essayant différentes actions. Un concept important de l'apprentissage par renforcement

L'idée derrière l'apprentissage par renforcement est que l'agent part d'un environnement inconnu. Opérations de recherche pour terminer la mission. L’agent sera plus enclin à choisir certaines actions sous l’influence de son état actuel et des actions précédemment sélectionnées. Chaque fois qu’un nouvel état est atteint et qu’une action est entreprise, l’agent reçoit une récompense. Voici les principaux paramètres que nous devons définir pour la sélection des fonctionnalités :

État, action, récompense, comment choisir l'action

Tout d'abord, le sous-ensemble de fonctionnalités présentes dans l'ensemble de données. Par exemple, si l'ensemble de données comporte trois caractéristiques (âge, sexe, taille) plus une étiquette, les états possibles sont les suivants :

[] --> Empty set [Age], [Gender], [Height] --> 1-feature set [Age, Gender], [Gender, Height], [Age, Height] --> 2-feature set [Age, Gender, Height] --> All-feature set
Copier après la connexion

Dans un état, l'ordre des caractéristiques n'a pas d'importance, il faut regarder faites-en une collection, pas une liste de fonctionnalités.

Concernant les actions, on peut passer d'un sous-ensemble à n'importe quel sous-ensemble de fonctionnalités inexplorées. Dans un problème de sélection de fonctionnalités, l’action consiste à sélectionner des fonctionnalités qui n’ont pas encore été explorées dans l’état actuel et à les ajouter à l’état suivant. Voici quelques actions possibles :

[Age] -> [Age, Gender] [Gender, Height] -> [Age, Gender, Height]
Copier après la connexion

Voici un exemple d'action impossible :

[Age] -> [Age, Gender, Height] [Age, Gender] -> [Age] [Gender] -> [Gender, Gender]
Copier après la connexion

Nous avons défini l'état et l'action, pas encore la récompense. La récompense est un nombre réel utilisé pour évaluer la qualité de l’État.

Dans les problèmes de sélection de fonctionnalités, une récompense possible est d'améliorer la métrique de précision du même modèle en ajoutant de nouvelles fonctionnalités. Voici un exemple de la façon dont la récompense est calculée :

[Age] --> Accuracy = 0.65 [Age, Gender] --> Accuracy = 0.76 Reward(Gender) = 0.76 - 0.65 = 0.11
Copier après la connexion

Pour chaque état que nous visitons pour la première fois, un classificateur (modèle) est formé à l'aide d'un ensemble de fonctionnalités. Cette valeur est stockée dans l'état et le classificateur correspondant. Le processus de formation du classificateur prend du temps et est laborieux, nous ne le formons donc qu'une seule fois. Étant donné que le classificateur ne prend pas en compte l’ordre des caractéristiques, nous pouvons traiter ce problème comme un graphique plutôt que comme un arbre. Dans cet exemple, la récompense pour la sélection du « genre » comme nouvelle fonctionnalité du modèle est la différence de précision entre l’état actuel et l’état suivant.

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

Dans l'image ci-dessus, chaque caractéristique est mappée à un nombre ("Âge" est 1, "Sexe" est 2 et "Taille" est 3). Comment choisir le prochain état à partir de l’état actuel ou comment explorer l’environnement ?

Nous devons trouver la manière optimale car si nous explorons tous les ensembles de fonctionnalités possibles dans un problème avec 10 fonctionnalités, le nombre d'états sera

10! + 2 = 3 628 802
Copier après la connexion

这里的+2是因为考虑一个空状态和一个包含所有可能特征的状态。我们不可能在每个状态下都训练一个模型,这是不可能完成的,而且这只是有10个特征,如果有100个特征那基本上就是无解了。

但是在强化学习方法中,我们不需要在所有的状态下都去训练一个模型,我们要为这个问题确定一些停止条件,比如从当前状态随机选择下一个动作,概率为epsilon(介于0和1之间,通常在0.2左右),否则选择使函数最大化的动作。对于特征选择是每个特征对模型精度带来的奖励的平均值。

这里的贪心算法包含两个步骤:

1、以概率为epsilon,我们在当前状态的可能邻居中随机选择下一个状态

2、选择下一个状态,使添加到当前状态的特征对模型的精度贡献最大。为了减少时间复杂度,可以初始化了一个包含每个特征值的列表。每当选择一个特性时,此列表就会更新。使用以下公式,更新是非常理想的:

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

AORf:特征“f”带来的奖励的平均值

K: f被选中的次数

V(F):特征集合F的状态值(为了简单描述,本文不详细介绍)

所以我们就找出哪个特征给模型带来了最高的准确性。这就是为什么我们需要浏览不同的状态,在在许多不同的环境中评估模型特征的最全局准确值。

因为目标是最小化算法访问的状态数,所以我们访问的未访问过的状态越少,需要用不同特征集训练的模型数量就越少。因为从时间和计算能力的角度来看,训练模型以获得精度是最昂贵方法,我们要尽量减少训练的次数。

最后在任何情况下,算法都会停止在最终状态(包含所有特征的集合)而我们希望避免达到这种状态,因为用它来训练模型是最昂贵的。

上面就是我们针对于特征选择的强化学习描述,下面我们将详细介绍在python中的实现。

用于特征选择与强化学习的python库

有一个python库可以让我们直接解决这个问题。但是首先我们先准备数据

我们直接使用UCI机器学习库中的数据:

#Get the pandas DataFrame from the csv file (15 features, 690 rows) australian_data = pd.read_csv('australian_data.csv', header=None)  #DataFrame with the features X = australian_data.drop(14, axis=1)  #DataFrame with the labels y = australian_data[14]
Copier après la connexion

然后安装我们用到的库

pip install FSRLearning
Copier après la connexion

直接导入

from FSRLearning import Feature_Selector_RL
Copier après la connexion

Feature_Selector_RL类就可以创建一个特性选择器。我们需要以下的参数

feature_number (integer): DataFrame X中的特性数量

feature_structure (dictionary):用于图实现的字典

eps (float [0;1]):随机选择下一状态的概率,0为贪婪算法,1为随机算法

alpha (float [0;1]):控制更新速率,0表示不更新状态,1表示经常更新状态

gamma  (float[0,1]):下一状态观察的调节因子,0为近视行为状态,1为远视行为

nb_iter (int):遍历图的序列数

starting_state (" empty "或" random "):如果" empty ",则算法从空状态开始,如果" random ",则算法从图中的随机状态开始

所有参数都可以机型调节,但对于大多数问题来说,迭代大约100次就可以了,而epsilon值在0.2左右通常就足够了。起始状态对于更有效地浏览图形很有用,但它非常依赖于数据集,两个值都可以测试。

我们可以用下面的代码简单地初始化选择器:

fsrl_obj = Feature_Selector_RL(feature_number=14, nb_iter=100)
Copier après la connexion

与大多数ML库相同,训练算法非常简单:

results = fsrl_obj.fit_predict(X, y)
Copier après la connexion

下面是输出的一个例子:

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

输出是一个5元组,如下所示:

DataFrame X中特性的索引(类似于映射)

特征被观察的次数

所有迭代后特征带来的奖励的平均值

从最不重要到最重要的特征排序(这里2是最不重要的特征,7是最重要的特征)

全局访问的状态数

还可以与Scikit-Learn的RFE选择器进行比较。它将X, y和选择器的结果作为输入。

fsrl_obj.compare_with_benchmark(X, y, results)
Copier après la connexion

输出是在RFE和FSRLearning的全局度量的每一步选择之后的结果。它还输出模型精度的可视化比较,其中x轴表示所选特征的数量,y轴表示精度。两条水平线是每种方法的准确度中值。

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

Average benchmark accuracy : 0.854251012145749, rl accuracy : 0.8674089068825909 Median benchmark accuracy : 0.8552631578947368, rl accuracy : 0.868421052631579 Probability to get a set of variable with a better metric than RFE : 1.0 Area between the two curves : 0.17105263157894512
Copier après la connexion

可以看到RL方法总是为模型提供比RFE更好的特征集。

另一个有趣的方法是get_plot_ratio_exploration。它绘制了一个图,比较一个精确迭代序列中已经访问节点和访问节点的数量。

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

由于设置了停止条件,算法的时间复杂度呈指数级降低。即使特征的数量很大,收敛性也会很快被发现。下面的图表示一定大小的集合被访问的次数。

Sélection de fonctionnalités via des stratégies dapprentissage par renforcement

在所有迭代中,算法访问包含6个或更少变量的状态。在6个变量之外,我们可以看到达到的状态数量正在减少。这是一个很好的行为,因为用小的特征集训练模型比用大的特征集训练模型要快。

总结

我们可以看到RL方法对于最大化模型的度量是非常有效的。它总是很快地收敛到一个有趣的特性子集。该方法在使用FSRLearning库的ML项目中非常容易和快速地实现。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!