Tests statistiques | Sélection de fonctionnalités à l'aide de tests statistiques

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données

introduction

La sélection des fonctionnalités est le processus de sélection des fonctionnalités pertinentes pour un modèle d'apprentissage automatique. Cela signifie qu'il sélectionne uniquement les attributs qui ont un effet significatif sur la sortie du modèle.

Considérez le cas lorsque vous allez au grand magasin pour acheter des articles d'épicerie. Un produit contient beaucoup d'informations, c'est-à-dire, produit, Catégorie, date d'échéance, MRP, ingrédients et détails de fabrication. Toutes ces informations sont les caractéristiques du produit. Normalement, vérifier la marque, MRP et date d'expiration avant d'acheter un produit. Cependant, la section ingrédients et fabrication ne vous concerne pas. Donc, la marque, el mrp, la date de péremption sont des caractéristiques pertinentes et l'ingrédient, les détails de fabrication ne sont pas pertinents. Voici comment se fait la sélection des fonctionnalités.

Dans le monde réel, un jeu de données peut avoir des milliers de fonctionnalités et il peut y avoir des chances que certaines fonctionnalités soient redondantes, certains peuvent être corrélés et certains peuvent ne pas être pertinents pour le modèle. À ce stade, si vous utilisez toutes les fonctions, il faudra beaucoup de temps pour former le modèle et la précision du modèle sera réduite. Donc, la sélection des caractéristiques devient importante dans la construction de modèles. Il existe de nombreuses autres façons de sélectionner des fonctionnalités, comme élimination des caractéristiques récursives, algorithmes génétiques, arbres de décision. Cependant, Je vais vous dire la méthode de filtrage la plus basique et manuelle à l'aide de tests statistiques.

Maintenant que vous avez une compréhension de base de la sélection de fonctionnalités, nous verrons comment mettre en œuvre divers tests statistiques sur les données pour sélectionner des caractéristiques importantes.

Cibler

L'objectif principal de ce blog est de comprendre les tests statistiques et leur implémentation en données réelles en Python, qui aidera dans la sélection des fonctionnalités.

Terminologies

Avant d'aborder les types de tests statistiques et leur mise en œuvre, il est nécessaire de comprendre le sens de certaines terminologies.

Tests d'hypothèses

Le test d'hypothèse dans les statistiques est une méthode de test des résultats d'expériences ou d'enquêtes pour voir s'il a des résultats significatifs.. Utile lorsque vous souhaitez déduire une population sur la base d'un échantillon ou d'une corrélation entre deux échantillons ou plus.

Hypothèse nulle

Cette hypothèse établit qu'il n'y a pas de différence significative entre l'échantillon et la population ou entre les différentes populations.. Il est noté H0.

Pas. On suppose que la moyenne de 2 les échantillons sont les mêmes.

Hypothèse alternative

L'énoncé contraire à l'hypothèse nulle est inclus dans l'hypothèse alternative. Il est noté H1.

Pas. On suppose que la moyenne des 2 les échantillons sont inégaux.

valeur critique

C'est un point sur l'échelle de la statistique de test au-delà duquel l'hypothèse nulle est rejetée.. Plus la valeur critique est élevée, plus la probabilité que 2 les échantillons appartiennent à la même distribution. La valeur critique pour tout test peut

valeur p

p-valeur signifie 'valeur de probabilité'; indique la probabilité qu'un résultat se produise par hasard. Essentiellement, la valeur p est utilisée dans les tests d'hypothèse pour vous aider à soutenir ou à rejeter l'hypothèse nulle. Plus la valeur p est petite, plus les preuves sont solides pour rejeter l'hypothèse nulle.

Degré de liberté

Le degré de liberté est le nombre de variables indépendantes. Ce concept est utilisé pour calculer la statistique t et la statistique du chi carré.

Vous pouvez vous référer à statistiqueswho.com pour plus d'informations sur ces terminologies.

Tests statistiques

Un test statistique est un moyen de déterminer si la variable aléatoire suit l'hypothèse nulle ou l'hypothèse alternative. Essentiellement, indique si l'échantillon et la population ou deux échantillons ou plus présentent des différences significatives. Vous pouvez utiliser diverses statistiques descriptives comme moyenne, médian, manière, plage ou écart type à cet effet. Cependant, on utilise généralement la moyenne. Le test statistique vous donne un nombre qui est ensuite comparé à la valeur p. Si sa valeur est supérieure à la valeur p, accepter l'hypothèse nulle, au contraire, elle rejette.

La procédure pour mettre en œuvre chaque test statistique sera la suivante:

  • Nous calculons la valeur statistique en utilisant la formule mathématique
  • Ensuite, nous calculons la valeur critique à l'aide de tableaux statistiques.
  • Avec l'aide de la valeur critique, nous calculons la p-valeur
  • Si la valeur p> 0.05 on accepte l'hypothèse nulle, sinon on le rejette

Maintenant que vous comprenez la sélection de fonctionnalités et les tests statistiques, on peut s'orienter vers la mise en place de différents tests statistiques ainsi que leur signification. Avant que, je vais vous montrer l'ensemble de données et cet ensemble de données sera utilisé pour tous les tests.

Base de données

L'ensemble de données que j'utiliserai est un ensemble de données de prédiction de prêt qui a été tiré du concours d'analyse Vidhya. Vous pouvez également participer au concours et télécharger le jeu de données. ici.

J'ai d'abord importé tous les modules python nécessaires et l'ensemble de données.

importer numpy en tant que np
importer des pandas au format pd
importer seaborn en tant que qn
de numpy import sqrt, abdos, tour
importer scipy.stats en tant que statistiques
à partir de la norme d'importation scipy.stats
df=pd.read_csv('prêt.csv')
df.head()
30995données-de-prêt-2453608

Il y a de nombreuses caractéristiques dans l'ensemble de données, comme genre, personnes à charge, éducation, revenu du demandeur, montant du prêt, histoire de credit. Nous utiliserons ces fonctionnalités et vérifierons si un effet de fonctionnalité affecte d'autres fonctionnalités à l'aide de divers tests., c'est-à-dire, essai Z, test de corrélation, Test ANOVA et test du Chi carré.

essai Z

Un test Z est utilisé pour comparer la moyenne de deux échantillons donnés et déduire s'ils appartiennent ou non à la même distribution.. Nous n'implémentons pas le test Z lorsque la taille de l'échantillon est inférieure à 30.

Un test Z peut être un test Z à un échantillon ou un test Z à deux échantillons.

L'échantillon unique tester t détermine si la moyenne de l'échantillon est statistiquement différente d'une moyenne de population connue ou hypothétique. Le test Z à deux échantillons compare 2 variables indépendantes.

Nous allons implémenter un test Z à deux échantillons.

La statistique Z est notée

77087z-stat-9543535
Google Image

Mise en œuvre

Veuillez noter que nous mettrons en œuvre 2 échantillons de tests z où une variable sera catégorique avec deux catégories et l'autre variable sera continue pour appliquer le test z.

Ici, nous utiliserons le Genre variable catégorielle et Revenu du demandeur Variable continue. Le genre a 2 groupes: masculin et féminin. L'hypothèse sera donc:

Hypothèse nulle: Il n'y a pas de différence significative entre le revenu moyen des hommes et des femmes.

Hypothèse alternative: il y a une différence significative entre le revenu moyen des hommes et des femmes.

Code

M_mean=df.loc[df['Genre']=='Homme',« Revenu du demandeur »].moyenne()
F_mean=df.loc[df['Genre']=='Femme',« Revenu du demandeur »].moyenne()
M_std=df.loc[df['Genre']=='Homme',« Revenu du demandeur »].std()
F_std=df.loc[df['Genre']=='Femme',« Revenu du demandeur »].std()
no_of_M=df.loc[df['Genre']=='Homme',« Revenu du demandeur »].compter()
no_of_F=df.loc[df['Genre']=='Femme',« Revenu du demandeur »].compter()

Le code ci-dessus calcule le revenu moyen des candidats masculins, le revenu moyen des candidates, son écart type et le nombre d'échantillons d'hommes et de femmes.

deuxSampZ La fonction calculera la statistique z et la valeur p sans passer par les paramètres d'entrée précédemment calculés.

def deuxSampZ(X1, X2, mudiff, sd1, sd2, n1, n2):
    pooledSE = sqrt(sd1**2/n1 + sd2**2/n2)
    z = ((X1 - X2) - mudiff)/SE mutualisé
    pval = 2*(1 - norme.cdf(abdos(Avec)))
    retour en rond(Avec,3), pval
z,p= deuxSampZ(M_moyenne,F_moyenne,0,M_std,F_std,no_of_M,no_of_F)
imprimer('Z'=z,'p'=p)
Z = 1.828
p = 0.06759726635832197
si p<0.05:
    imprimer("nous rejetons l'hypothèse nulle")
autre:
    imprimer("on accepte l'hypothèse nulle")
on accepte l'hypothèse nulle

Étant donné que la valeur p est supérieure à 0.5 on accepte l'hypothèse nulle. Pourtant, nous concluons qu'il n'y a pas de différence significative entre les revenus des hommes et des femmes.

Tester T

Un test t est également utilisé pour comparer la moyenne de deux échantillons donnés., comme le test Z. Cependant, est mis en œuvre lorsque la taille de l'échantillon est inférieure à 30. Une distribution normale de l'échantillon est supposée. Il peut également s'agir d'un ou deux échantillons. Le degré de liberté est calculé par n-1 où n est le nombre d'échantillons.

Il est désigné par

51642test-t-5821266
Google Image

Mise en œuvre

Il sera implémenté de la même manière que le test Z. La seule condition est que la taille de l'échantillon soit inférieure à 30. Je vous ai montré la mise en œuvre du test Z. À présent, vous pouvez essayer le T-Test.

Test de corrélation

Un test de corrélation est une mesure permettant d'évaluer dans quelle mesure les variables sont associées les unes aux autres.

Notez que les variables doivent être continues pour appliquer le test de corrélation.

Il existe plusieurs méthodes de test de corrélation, c'est-à-dire, covariance, Coefficient de corrélation de Pearson, Coefficient de corrélation de rang de Spearman, etc.

Nous utiliserons le coefficient de corrélation des personnes puisqu'il est indépendant des valeurs des variables.

Coefficient de corrélation de Pearson

Il est utilisé pour mesurer la corrélation linéaire entre 2 variables. Il est désigné par

76051corrélation-1510139

Google Image

Ses valeurs se situent entre -1 Oui 1.

Si la valeur de r est 0, signifie qu'il n'y a pas de relation entre les variables X et Y.

Si la valeur de r est comprise entre 0 Oui 1, signifie qu'il existe une relation positive entre X et Y, et sa force augmente de 0 une 1. Une relation positive signifie que si la valeur de X augmente, la valeur de Y augmente également.

Si la valeur de r est comprise entre -1 Oui 0, signifie qu'il existe une relation négative entre X et Y, et sa force diminue de -1 une 0. Une relation négative signifie que si la valeur de X augmente, la valeur de Y diminue.

Mise en œuvre

Ici, nous utiliserons deux variables ou caractéristiques continues: Montant du prêt Oui Revenu du demandeur. Nous conclurons s'il existe une relation linéaire entre le montant du prêt et les revenus du demandeur avec la valeur du coefficient de corrélation de Pearson et nous tracerons également le graphique entre eux.

Code

Il y a quelques valeurs manquantes dans la colonne LoanAmount, premier, nous le remplissons avec la valeur moyenne. Puis il calcula la valeur du coefficient de corrélation.

df['Montant du prêt']= df['Montant du prêt'].remplir (df['Montant du prêt'].vouloir dire())

pcc = par exemple corrcoef (df.Revenu du demandeur, df.MontantPrêt)

imprimer (pc)

[[1.         0.56562046]
 [0.56562046 1.        ]]

Les valeurs des diagonales indiquent la corrélation des caractéristiques avec elles-mêmes. 0.56 signifie qu'il existe une certaine corrélation entre les deux caractéristiques.

On peut aussi tracer le graphique comme suit:

sns.lineplot(données=df,x='MontantPrêt',y = 'Revenu du demandeur')
98500ligne-graphique-2509904

test ANOVA

ANOVA signifie Analyse de la variance. Comme le nom le suggère, utilise la variance comme paramètre pour comparer plusieurs groupes indépendants. L'ANOVA peut être une ANOVA unidirectionnelle ou une ANOVA bidirectionnelle. L'ANOVA à sens unique est appliquée lorsqu'il existe au moins trois groupes indépendants d'une variable. Nous allons implémenter la même chose en Python.

La statistique F peut être calculée par

47310f-stat-7000492
Google Image

Mise en œuvre

Ici, nous utiliserons le Personnes à charge variable catégorielle et Revenu du demandeur Variable continue. Les personnes à charge ont 4 groupes: 0,1,2,3+. L'hypothèse sera donc:

Hypothèse nulle: Il n'y a pas de différence significative entre le revenu moyen entre les différents groupes de personnes à charge.

Hypothèse alternative: il existe une différence significative entre le revenu moyen entre les différents groupes de personnes à charge.

Code

Premier, nous gérons les valeurs manquantes dans la fonction Dépendants.

df[« personnes à charge »].est nul().somme()
df[« personnes à charge »]=df[« personnes à charge »].remplir('0')

Après cela, nous créons une base de données avec les caractéristiques Dépendants et Revenu Candidat. Alors, avec l'aide de la bibliothèque scipy.stats, nous calculons la statistique F et la valeur p.

df_anova = df[['Facture totale','journée']]
grps = pd.unique(df.day.values)
d_données = {grp:df_anova['Facture totale'][df_anova.day == grp] pour grp en grps}
F, p = stats.f_oneway(d_données['Soleil'], d_données['Sam'], d_données['Jeu'],d_données['Ven'])
imprimer('F ={},p={}'.format(F,p))
F =5.955112389949444,p=0.0005260114222572804

et P <0,05:

imprimer (“rejeter l'hypothèse nulle”)

le reste:

imprimer (“accepter l'hypothèse nulle”)


Rejeter l'hypothèse nulle.

Étant donné que la valeur p est inférieure à 0.5 nous rejetons l'hypothèse nulle. Pourtant, nous concluons qu'il existe une différence significative entre les revenus des divers groupes de personnes à charge.

Test du chi carré

Ce test est appliqué lorsque vous avez deux variables catégorielles d'une population. Il est utilisé pour déterminer s'il existe une association ou une relation significative entre les deux variables.

Il y a 2 types de tests du chi carré: Test d'adéquation du chi carré et test du chi carré d'indépendance, nous allons mettre en œuvre ce dernier.

Le degré de liberté dans le test du chi carré est calculé par (n-1) * (m-1) où n et m sont respectivement les nombres de lignes et de colonnes.

Il est désigné par:

71537test du chi carré-1925567
Google Image

Mise en œuvre

Nous utiliserons des caractéristiques catégorielles Genre Oui Statut du prêt et découvrir s'il existe une association entre eux en utilisant le test du chi carré.

Hypothèse nulle: il n'y a pas d'association significative entre les caractéristiques de genre et le statut de prêt.

Hypothèse alternative: il existe une association significative entre les caractéristiques de genre et le statut de prêt.

Code

Premier, on récupère la colonne Gender et LoanStatus et on forme un tableau.

dataset_table=pd.crosstab(base de données['sexe'],base de données['fumeur'])
dataset_table
Loan_Status  N  Y
Gender
Female      37   75
Homme        33  339

Alors, nous calculons les valeurs observées et attendues à l'aide du tableau ci-dessus.

observé=dataset_table.values
val2=stats.chi2_contingency(dataset_table)
attendu=val2[3]

Ensuite, nous calculons la statistique du chi carré et la valeur p à l'aide du code suivant:

de scipy.stats importer chi2
chi_carré=somme([(o-et)**2./e pour o,e en zip(observé,attendu)])
chi_square_statistic=chi_square[0]+chi_carré[1]
p_value=1-chi2.cdf(x=chi_square_statistic,df = dddf)
imprimer("statistique du chi carré:-",chi_square_statistic)

imprimer('Niveau de signification: ',alpha)

imprimer('Degré de liberté: ',je vais venir)

imprimer('valeur p:',p_valeur)
statistique du chi carré:- 0.23697508750826923
Niveau de signification:  0.05
Degré de liberté:  1
valeur p: 0.6263994534115932
si p_valeur<=alpha:

    imprimer("Rejeter l'hypothèse nulle")

autre:

    imprimer("Accepter l'hypothèse nulle")
Accepter l'hypothèse nulle

Étant donné que la valeur p est supérieure à 0.05, on accepte l'hypothèse nulle. Nous concluons qu'il n'y a pas d'association significative entre les deux caractéristiques.

résumé

Premier, nous avons discuté de la sélection des fonctionnalités. Ensuite, nous passons aux tests statistiques et aux diverses terminologies qui s'y rapportent.. Finalement, nous avons vu l'application de tests statistiques, c'est-à-dire, essai Z, Test T, test de corrélation, ANOVA et test Chi-deux ainsi que leur implémentation en Python.

Les références

Image exceptionnelle – Google Image

Statistiques – statistiqueswho.com

Sur moi

Salut! Soja Ashish Choudhary. J'étudie le B.Tech de l'Université des sciences et technologies JC Bose. La science des données est ma passion et je suis fier d'écrire des blogs intéressants à ce sujet. N'hésitez pas à me contacter sur LinkedIn.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.