La sélection des problèmes résolus est souvent considérée comme un modèle d'apprentissage des machines d'apprentissage, souvent non séparés.
Mais la sélection des fonctionnalités est un processus important de traitement des données. Il existe deux fonctions principales:
Réduisez le nombre de fonctionnalités, des gouttes et de la vue d'ensemble du modèle. Réduire le renforcement
Compact entre les caractéristiques et les eigenvalues
Une bonne fonctionnalité de sélection de fonctionnalités peut améliorer les performances du modèle, peut nous aider à comprendre les caractéristiques des données, la structure de base, ce dossier sera Améliorer encore le modèle, l'algorithme a un rôle important.
Cet article introduira un certain nombre de méthodes de choix des caractéristiques communes, des avantages et de leurs inconvénients respectifs.
Ce doit être le procédé de choix de la fonctionnalité la plus facile: Supposons que le La valeur de fonctionnalité d'une fonctionnalité n'est que 0 et 1 et les caractéristiques de 95% des cas trong Tous les échantillons d'entrée sont 1, peuvent considérer que cette fonctionnalité n'est pas grande. Si 100% est 1, cette fonctionnalité n'a pas de sens.
Cette méthode peut être utilisée lorsque la valeur de fonctionnalité est une variable discrète. S'il s'agit d'une variable continue, il est nécessaire d'utiliser des variables continues à la discrete et en fait, elle n'est généralement pas trop importante. Il y a plus de 95% des caractéristiques d'une certaine valeur, de sorte que cette méthode est simple mais pas très facile. Il peut être utilisé comme première de la sélection des fonctionnalités, d'abord retirer des fonctionnalités avec de petites variations, puis la sélection de la sélection appropriée de la méthode de sélection de fonctionnalité mentionnée dans la section suivante.
II. Choisissez une seule fonctionnalité de transformation
Anglais: Sélection des fonctionnalités unipolaires.
Le choix d'une fonctionnalité variable peut vérifier chaque fonctionnalité, mesurer la relation entre les fonctionnalités et tourner les commentaires et le jeter en fonction du score. Les caractéristiques peuvent être vérifiées à l'aide deNG Vérifiez le service et d'autres méthodes de régression et de classification.
Cette méthode est relativement simple, facile à utiliser, facile à comprendre, affectant souvent la compréhension des données, mais pas nécessairement valable pour optimiser les caractéristiques et l'amélioration de la capacité de généralisation); Cette méthode a de nombreuses versions améliorées, variations.
Coefficient de corrélation de 1.
[: corrélation Pearson
La relation de Pearson est la méthode la plus simple pour aider à comprendre les relations entre les caractéristiques et les variables de réaction, linéaires corrélation entre variables. La plage de valeurs des résultats est [-1, 1], - 1 signifie une corrélation négative complète (cette variable est abaissée, augmentera), + 1 indique une corrélation complètement positive, 0 signifie qu'il n'y a pas de corrélation linéaire.
La corrélation Pearson est très rapide, facile à calculer, généralement effectuée après la récupération de données (après le nettoyage et l'extraction des fonctions) obtenues. Méthode PearsoNR of SciPy peut simultanément calculer le facteur relationnel et la valeur p,
Dans cet exemple, nous comparons des variables avant et après le bruit. Lorsque le petit bruit, une corrélation forte et des valeurs de p très faibles.
import numpy as npfrom scipy.stats import pearsonrnp.random.seed(0)size = 300x = np.random.normal(0, 1, size)print "Lower noise", pearsonr(x, x + np.random.normal(0, 1, size))print "Higher noise", pearsonr(x, x + np.random.normal(0, 10, size))
SCIKIT-HORW fournit la méthode F_ReGRSIS pour calculer la valeur des caractéristiques, très pratique, se référer au pipeline de Sklearn.
Un inconvénient évident de la corrélation de Pearson est constitué de mécanisme de classification typique, il n'est que sensible aux relations linéaires. Si la relation n'est pas linéaire, même si les deux variables ont une relation correspondante, la corrélation Pearson peut être proche de zéro.
-0.00230804707612
2. Informations mutuelles et facteur d'information maximum
Anglais: Informations générales et facteur d'information maximum (MIC)
x = np.random.uniform(-1, 1, 100000)print pearsonr(x, x**2)[0]
ci-dessus est la recette classique d'informations mutuelles. Je veux que des informations mutuelles soient utilisées directement pour choisir la fonctionnalité. Ce n'est pas trop pratique: Il n'appartient pas à une métrique, il n'y a aucun moyen de normaliser, et il ne peut pas être comparé dans différentes données et résultats;
Pour les variables continues ne sont pas très pratiques (X et Y sont des collections, X, Y est une valeur discrète), généralement les variables doivent être discrètes, tandis que les résultats sont des sentiments mutuellement sensibles avec discret.Le facteur d'information maximum corrige ces deux problèmes. Premièrement, il recherche une méthode discrète optimale, puis convertissez les informations liées en données et la plage de valeur réside dans [0, 1]. Miney fournit des caractéristiques du micro.
À son tour, Y = X ^ 2, la valeur d'informations Micale du micro est de 1 (valeur maximale).
Les capacités statistiques de MIC ont été interrogées. Lorsque zéro assaut n'est pas défini, les statistiques de MIC seront affectées. Il n'y a pas de tels problèmes sur certains ensembles de données, mais ont ce problème sur le jeu de données.
3. Le coefficient de corrélation à distance
Le coefficient de corrélation à distance consiste à résoudre les faiblesses des coefficients liés à Pearson .. In x et x ^ 2, même si Le coefficient de corrélation Pearson est 0, nous ne pouvons pas conclure que ces deux variables indépendantes (peuvent ne pas être liées à linéaire); Mais si le coefficient est lié à la distance de 0, nous pouvons dire que ces deux variables sont indépendantes en direct.
Le package énergétique de R fournit un coefficient de corrélation à distance, ce qui est la mise en œuvre du gist Python.
from minepy import MINEm = MINE()x = np.random.uniform(-1, 1, 10000)m.compute_score(x, x**2)print m.mic()
Bien qu'il existe un coefficient de micro et micro lié à la distance, le coefficient de corrélation Pearson ne peut toujours pas être remplacé lorsque la relation entre les variables est proche de la corrélation linéaire.
TI Head, Le coefficient de corrélation Pearson est rapidement calculé, ce qui est très important pour traiter des données à grande échelle.
La plage de valeur du coefficient de corrélation de Pearson est [-1, 1] et les coefficients de corrélation micro et la distance est [0, 1]. Cette fonctionnalité permet aux coefficients de corrélation de Pearson de décrire des relations et des icônes plus riches qui montrent les relations positives et négatives des relations et des valeurs absolues pouvant représenter leur force forte. Bien sûr, la prémisse de Pearson Monteance est la relation entre les deux variables est monotone.
4. Caractéristiques des modèles d'apprentissage
L'idée de cette méthode est d'utiliser directement avec l'algorithme d'apprentissage de la machine utilisée pour configurer le modèle anticipé pour chaque fonctionnalité individuelle et retournez. En fait, le coefficient de corrélation Pearson équivaut à la normalisation de la régression linéaire standard. Retournez au coefficient. Si la relation entre une fonctionnalité et la variable de rétroaction est non linéaire, une méthode à base d'arbres (arbre décisif, forêtÉchantillon) ou modèle linéaire étendu, V.V.
Les méthodes basées sur des arbres sont plus faciles à utiliser car elles préféraient modéliser les relations non linéaires et n'ont pas besoin de trop de débogage. Mais faites attention au problème approprié, la profondeur de l'arborescence n'est préférable pas trop grosse, et cela utilise une confirmation croisée.
Dans le ratio de Boston Ensemble de données, une utilisation aléatoire des bénéfices forestiers Sklearn fournissait un exemple d'option variable unique:
#R-code> x = runif (1000, -1, 1)> dcor(x, x**2)[1] 0.4943864
from sklearn.cross_validation import cross_val_score, ShuffleSplitfrom sklearn.datasets import load_bostonfrom sklearn.ensemble import RandomForestRegressor#Load boston housing dataset as an exampleboston = load_boston()X = boston["data"]Y = boston["target"]names = boston["feature_names"]rf = RandomForestRegressor(n_estimators=20, max_depth=4)scores = []for i in range(X.shape[1]): score = cross_val_score(rf, X[:, i:i+1], Y, scoring="r2", cv=ShuffleSplit(len(X), 3, .3)) scores.append((round(np.mean(score), 3), names[i]))print sorted(scores, reverse=True)
]
Méthode de choix de modes de mesure indépendants de mesure indépendante chaque variable et modifiant la relation entre une méthode de choix d'autres caractéristiques principales en fonction d'une méthode de modèles d'apprentissage mécanique. Certaines méthodes d'apprentissage ont un mécanisme pour les caractéristiques de points ou les appliquer facilement pour avoir sélectionné des tâches, telles que des modèles de régression, des SVM, des décisions, des forêts aléatoires, V.V.
Cette méthode semble appelée lBien de la présentation à certains endroits. Peut-être que le modèle de tri typique et les modèles de modélisation sont combinés ensemble, les types de méthodes correspondants choisissent la fonctionnalité à appeler Tweed.Les éléments suivants seront décrits avec le coefficient du modèle de régression pour sélectionner des fonctionnalités. Des caractéristiques plus importantes, les plus gros coefficients correspondent au modèle et à plusieurs facteurs correspondant aux caractéristiques de la variable de sortie, près de 0. Sur les données sans bruit, ni une grande quantité de données beaucoup plus que les données du nombre de fonctionnalités, si La fonctionnalité est relativement indépendante, même si elle est similaire au modèle de régression linéaire le plus simple, elle peut atteindre très bien. Effet.
Dans cet exemple, bien qu'il y ait du bruit dans les données, ce modèle de sélection de fonctionnalités est toujours capable de refléter la structure très bien de base des données. Bien sûr, cela est également dû à ce problème dans l'exemple très approprié pour une utilisation dans des modèles linéaires: Toutes les caractéristiques et les connaissancesn Feedback est la relation linéaire et entre les fonctionnalités est indépendante.
from sklearn.linear_model import LinearRegressionimport numpy as npnp.random.seed(0)size = 5000#A dataset with 3 featuresX = np.random.normal(0, 1, (size, 3))#Y = X0 + 2*X1 + noiseY = X[:,0] + 2*X[:,1] + np.random.normal(0, 2, size)lr = LinearRegression()lr.fit(X, Y)#A helper method for pretty-printing linear modelsdef pretty_print_linear(coefs, names = None, sort = False): if names == None: names = ["X%s" % x for x in range(len(coefs))] lst = zip(coefs, names) if sort: lst = sorted(lst, key = lambda x:-np.abs(x[0])) return " + ".join("%s * %s" % (round(coef, 3), name) for coef, name in lst)print "Linear model:", pretty_print_linear(lr.coef_
Dans de nombreuses données réelles, il existe souvent de nombreuses fonctionnalités impliquant des fonctionnalités connexes, cette fois que le modèle sera instable et que les modifications de données plus douces peuvent conduire à un changement important dans le modèle (le modèle de variation est fondamentalement un facteur ou paramètres pouvant être compris, cela fera des prédictions de modèles difficiles, également appelé plusieurs copies.
Exemple: Supposons que nous ayons un ensemble de données, son modèle réel doit être Y = x1 + x2, lorsque nous observer, trouver y "= x1 + x2 + e, e est le bruit. Si X1 et X2 ont une relation linéaire, telle que X1 environ égale à x2, cette période est due à la présence de bruit E, le modèle que nous avons appris ne peut pas Soyez Y = x1 + x2, peut être Y = 2x1 ou Y = -X1 + 3x2.
Dans cet exemple, certains bruits sont ajoutés aux mêmes données et algorithmes forestières aléatoires sélectionnés.
]
Coefficients totaux proches de 3. Fondamentalement et le résultat de l'exemple précédent, le modèle que vous avez appris est toujours bon à prédire. Toutefois, si les caractéristiques des caractéristiques sont l'importance des caractéristiques si le X3 a un impact positif fort sur la variable de sortie et X1 a un impact et des effets négatifs entre toutes les fonctionnalités et les variables, la sortie est égale.
La même méthode et les mêmes habitudes peuvent être utilisées sur le même modèle linéaire, telle que la régression logique.
from sklearn.linear_model import LinearRegressionsize = 100np.random.seed(seed=5)X_seed = np.random.normal(0, 1, size)X1 = X_seed + np.random.normal(0, .1, size)X2 = X_seed + np.random.normal(0, .1, size)X3 = X_seed + np.random.normal(0, .1, size)Y = X1 + X2 + X3 + np.random.normal(0,1, size)X = np.array([X1, X2, X3]).Tlr = LinearRegression()lr.fit(X,Y)print "Linear model:", pretty_print_linear(lr.coef_)
1. Modèle principal
Transactions ajoutées à la liaison ou à des pénalités supplémentaires avec un modèle (fonction de perte) pour empêcher les travaux. Excédant la fusion. Les fonctions prennent le changement de l'original e (x, y) en e (x, y) + alpha || W ||, W est le facteur de modèle, y compris le vecteur (certains endroits également appelés paramètres, facteurs), || · || Normalement, Alpha est un paramètre qui peut ajuster le contrôle de la consommation de la régularité. Lorsqu'ils sont utilisés dans des modèles linéaires, conventionnels L1 et généralement L2 sont également appelés lassoet crête.
2.L1
Unified L1 utilisera les normes L1 de la ligne W en raison de la pénalité ajoutée à la fonction de perte. Parce que l'élément est généralement différent, il s'agit de coefficients correspondant à des caractéristiques faibles deviendra 0. Par conséquent, la fréquence de L1 a tendance à rendre le modèle qu'elles sont clairsemées (le coefficient W est 0), cette fonctionnalité rend la principale L1 régule dans un bonne méthode de sélection de fonctionnalités.
Scikit-Apprendre fournit Lasso pour la régression linéaire, fournissant une logique de classification de L1.
L'exemple suivant fonctionne Lasso au taux de Boston, optimisé en recherchant la grille.
Le voir, de nombreux événements de la fonctionnalité sont 0. Si vous continuez à augmenter la valeur de l'alpha, le modèle de résultat sera tellement Sparse, c'est de plus en plus de coefficients spécifiques devenant 0. Cependant,
, L1 est tout simplement instable comme un modèle linéaire normalisé. S'il y a une fonctionnalité connexe dans le jeu de fonctionnalités,Il est également possible de provoquer une grande différence de modèle lorsque des données sont délicates.
3.L2 Douleur répétant la régression normale / crête
from sklearn.linear_model import Lassofrom sklearn.preprocessing import StandardScalerfrom sklearn.datasets import load_bostonboston = load_boston()scaler = StandardScaler()X = scaler.fit_transform(boston["data"])Y = boston["target"]names = boston["feature_names"]lasso = Lasso(alpha=.3)lasso.fit(X, Y)print "Lasso model: ", pretty_print_linear(lasso.coef_, names, sort = True)
L2 ajoutez régulièrement des normes L2 du vecteur coefficient à la fonction de perte. Étant donné que le coefficient de pénalité L2 est secondaire, cela rend L2 et L1 avec de nombreuses différences, le point le plus évident est que la formation de L2 fera la valeur du facteur moyen. Pour des caractéristiques connexes, cela signifie qu'ils peuvent obtenir une correspondance plus similaire.
ou un exemple typique, supposons que X1 et X2 ont des associations fortes, si elles sont utilisées dans L1, si le modèle est Y = x1 + x2 ou y = 2x1, la peine est identique, toutes sont 2LPHA. Toutefois, pour L2, le terme du premier modèle est 2Aalpha, mais le deuxième modèle est 4 * alpha. On peut constater que lorsque le total des changements, la corrélation est le minimum lorsque chaque coefficient égal, il suffira de chaque coefficient que chaque coefficient a tendance à avoir les mêmes caractéristiques.
On peut voir que L2 THuong Xuyénization est un modèle stable pour choisir la fonctionnalité, ne pas fluctuer par des données subtiles comme régulier L1. Par conséquent, la valeur de la L2 régulière et généralement L1 est différente. Le L2 principal est plus utile pour la compréhension caractéristique: le coefficient correspond à la capacité de fonctionner est différent.
Retour Pour voir des exemples de trois caractéristiques de liaison correspondantes, a permis de tourner 10 fois 10 fois dans 10 particules différentes, pour observer la stabilité de la L1 et L2 ordinaire.
Comme on peut le voir, le modèle (coefficient) obtenu avec une régression linéaire sur différentes données est loin, bien que cependant, pour le modèle habituel L2 , les coefficients des résultats sont très stables, la différence est petite, près de 1 et la structure interne des données peut être réfléchie.
4. Forêt aléatoire
La forêt aléatoire présente les avantages de la haute précision, forte, facile à utiliser, l'aidant à devenir l'un des algorithmes de la machine la plus populaire. Cu forêt aléatoireCaractéristiques de niveau deux caractéristiques: signifie réduire la précision des intraveineuses et des moyens.
1. Moyenne Contrairement à
from sklearn.linear_model import Ridgefrom sklearn.metrics import r2_scoresize = 100#We run the method 10 times with different random seedsfor i in range(10): print "Random seed %s" % i np.random.seed(seed=i) X_seed = np.random.normal(0, 1, size) X1 = X_seed + np.random.normal(0, .1, size) X2 = X_seed + np.random.normal(0, .1, size) X3 = X_seed + np.random.normal(0, .1, size) Y = X1 + X2 + X3 + np.random.normal(0, 1, size) X = np.array([X1, X2, X3]).T lr = LinearRegression() lr.fit(X,Y) print "Linear model:", pretty_print_linear(lr.coef_) ridge = Ridge(alpha=10) ridge.fit(X,Y) print "Ridge model:", pretty_print_linear(ridge.coef_) print
La forêt aléatoire comprend de nombreuses décisions. Chaque bouton de l'arborescence décide d'être l'état d'une fonctionnalité, qui est la division de données définie en deux en fonction de la variable de rétroaction différente. Utilisation de prix, le bouton (condition optimale) peut être déterminé. Pour les problèmes de classification, Kini n'est ni pure ni croissante d'informations couramment utilisées et de problèmes de régression, de variance ou de plus petites carrés couramment utilisés.
Lorsque des arbres de formation ont décidé, il peut être calculé que chaque fonctionnalité est réduite. Pour une forêt arborée décisive, la quantité incorrecte de diminution incorrecte et la perte d'impureté moyenne est la valeur sélectionnée comme caractéristique sélectionnée.
L'exemple des caractéristiques de la forêt aléatoire est basée sur des forêts aléatoires de Sklearn:
Les points de fonctionnalité réels sont utilisés dans l'importance de Gini. Lorsque vous utilisez des méthodes non-avantages, rappelez-vous:
Cette méthode est biaisée, plus favorable pour les variables avec plus de catégories;
Pour de nombreuses caractéristiques existentielles pertinentes, l'une d'entre elles peut être utilisée comme index (d'excellentes fonctionnalités), et une fois qu'une fonctionnalité est sélectionnée, l'importance d'autres fonctionnalités diminuera fort, car les incomplètes ont été sélectionnées et d'autres caractéristiques sont difficiles. Il n'a pas de pureté, d'indiquer que les caractéristiques des premières caractéristiques sélectionnées sont élevées et des caractéristiques associées inhabituelles sont souvent faibles.
Lors de la compréhension des données, cela entraînera des malentendus, ce qui entraînera les caractéristiques du premier choix et le reste des caractéristiques sans importance, mais en fait, ces fonctions de rétroaction, la fonction de la variable est en effet très proche (ceci est très similaire à lasso).
Caractéristiques sélectionnées au hasardSteam réduit ce problème, mais en général, il n'est pas complètement résolu. Dans l'exemple suivant, X0, X1, X2 sont trois variables pouvant interpoler et éteindre la sortie sont trois du bruit total sans bruit. Lors du calcul de l'importance spécifique, l'importance de X1 peut être considérée comme l'importance de X2. Il est 10 fois plus élevé, mais en fait, ils importaient en réalité une importance. Malgré de grandes quantités de données et sans bruit, il persiste de 20 arbres à faire des options aléatoires, mais ce problème existe toujours. Il est important de noter qu'il existe un phénomène instable dans les points de fonctionnalités connexes, pas seulement une forêt aléatoire, la plupart des méthodes choisissent des caractéristiques basées sur le modèle existent. 2. Réduisez la précision moyenne Une autre méthode de sélection de fonctionnalités courantes est l'effet de données direct de la précision des fonctionnalités ci-dessus du modèle. IdéeNH interrompt la séquence de valeur essentielle de chaque fonctionnalité et l'effet des changements de données sur la précision du modèle. Évidemment, pour les variables sans importance, le chaos ne sera pas trop grand, mais pour des variables importantes, la commande Chaos réduira la précision du modèle. Cette méthode Sklearn n'est pas fournie directement, mais facile à mettre en œuvre et les éléments suivants continuent d'être effectués sur le jeu de données Ratio Boston. Dans cet exemple, les deux caractéristiques de LSTAT et de RM ont une performance importante du modèle. Impact, les valeurs distinctes de ces deux caractéristiques ont réduit les performances du modèle à 73% et 57%. Notez que bien que nous ayons été formés à toutes les caractéristiques, il a été introduit par l'importance de chaque personnage. Cela ne signifie pas que nous disposons de certaines ou une performance du modèle après que certaines fonctionnalités importantes seront définitivement publiées, car après avoir supprimé la fonctionnalité, ses caractéristiques associées ontPeut jouer un rôle, de sorte que les performances du modèle sont fondamentalement inchangées. Terminer. Terminer. Source: Podcast CNBLOG Cet article est copié partagé, tel que des violations, veuillez contacter l'arrière-plan pour supprimer