[PYTHON] Signer 2nd _Beginner Limited Competition Review

introduction

Nous avons participé à un concours réservé aux débutants (https://signate.jp/competitions/293) pour le deuxième mandat d'AIQuest à partir d'octobre 2020. Le concours auquel j'ai participé pour participer à AIQuest n'était pas très bon, mais j'ai réussi à m'impliquer. Je pensais que je ne pouvais pas obtenir de résultats tels quels, et j'ai pu passer du temps à participer à cette compétition, même si c'était à partir de la deuxième quinzaine de septembre.

Cette compétition était claire si un certain score était donné, et le classement n'était pas très significatif, mais j'ai fait un effort pour élever le classement «pour étudier» et «pour gagner en confiance». En conséquence, j'ai eu la chance de prendre la première place, alors je voudrais vous présenter ce que j'ai fait cette fois.

Aperçu de la compétition

Cette fois, les données sanguines, l'âge et le sexe sont utilisés pour déterminer si la maladie est ou non une maladie du foie. La fonction d'évaluation utilise AUC. La condition d'effacement doit dépasser AUC = 0,92.

environnement

L'environnement est Google Colaboratory

introduction

Nous reprendrons ce qui se fait couramment dans l'analyse des données de table.

  1. Afficher les données

Vérifiez la signification de chaque donnée, le type de données et s'il y a des valeurs manquantes. Après cela, visualisons le degré de partialité.

  1. Jetez un œil à feature_importance

Essayez d'apprendre sans rien imaginer et voyez ce qui est important. Ce travail semble être important pour faire une image en faisant des hypothèses même si seules quelques impressions sont données. (Selon la façon dont vous y pensez, l'impression que vous obtenez ici peut être une entrave)

  1. Apprenez avec différents modèles et voyez le score Il est également réalisé dans la célèbre note Titanic de Kaggle, mais je vais essayer de marquer avec différents modèles. Ce que j'ai essayé cette fois Support Vector Machines, KNN, Logistic Regression, Random Forest, Naive Bayes, Perceptron, Stochastic Gradient Decent, Linear SVC, Decision Tree,catboost

J'ai adopté «catboost». Puisqu'il n'y avait aucune valeur manquante cette fois, j'ai marqué avec divers modèles sans penser à rien, et celui avec le meilleur résultat a été défini comme first_commit. Je pense que le résultat était d'environ 0,8

Le minimum requis pour effacer

Dans ↑, il était de 0,8, ce qui est loin d'être la condition d'effacement, donc je ne pouvais pas l'effacer sans aucune ingéniosité. Dans mon cas, j'ai pu remplir les conditions de compensation en faisant les deux idées suivantes (peut-être pas).

  1. Supprimez les colonnes de sexe et d'âge

À première vue, cela semble avoir quelque chose à voir avec le fait qu'il s'agisse ou non d'une maladie du foie (en fait, la corrélation était élevée), mais le supprimer améliorait la précision. Je voulais vraiment l'effacer pour une raison quelconque, mais je n'ai pas pu le saisir et j'ai dit: "J'ai essayé de l'effacer mécaniquement et cela a fonctionné." Au moment où vous arrivez ici --Essayez TargetEncoding

2.Faites du résultat de l'inférence une notation probabiliste Ce type de raisonnement n'avait qu'un cerveau qui produisait 1 ou 0, il a donc fallu du temps pour le trouver, mais cela a considérablement amélioré le score.

assessment.py


#Sortie avec 0 ou 1
model.predict(pred)

#Notation de probabilité
model.predict_proba(pred)[:, 1]

Cela a atteint la ligne de passe de 0,83 ⇒ 0,92.

Ce que nous avons fait pour améliorer encore la précision

La compétition n'était pas pertinente pour le classement, mais j'étais motivé, alors j'ai essayé d'améliorer la précision. Voici ce que le score a augmenté.

  1. Ajout de la quantité de fonction de savoir si elle est dans la plage de la valeur sanguine normale d'un point de vue médical. Bien qu'il soit possible de juger par la valeur, il est difficile de porter un jugement complet car toutes les unités sont différentes, et je voulais un montant de caractéristique pour juger uniquement par "s'il se situe dans la plage de valeurs normales", alors je l'ai adopté. En fait, cette méthode a été très utile et cela a amélioré mon classement dans le top 10.

  2. Supprimez les données irrégulières des données d'entraînement avec les connaissances acquises dans ↑

«Les données jugées normales même si la plupart des valeurs numériques sont des valeurs aberrantes» qui ne pouvaient pas être trouvées en supprimant simplement les données contenant des données importantes de manière mécanique ont été supprimées. S'il s'agit d'une inférence 1 ou 0, cela peut ne pas avoir beaucoup d'effet, mais comme il s'agit d'une notation probabiliste, en effaçant les données qui sont exactement le contraire de la tendance, il sera possible d'exprimer des données blanches et noires exceptionnelles avec 1 ou 0 autant que possible. Puis? Cela a été fait à partir de l'hypothèse. Ce fut le coup décisif qui put grimper à la 1ère place.

Résumé

C'est un point subtil, mais je suis content d'avoir travaillé dessus car c'est une compétition réservée aux débutants et le classement n'a pas vraiment d'importance.

Je sens que je ne peux pas supporter le niveau pratique avec ce genre d'analyse de données bâclée, donc je veux pouvoir travailler plus dur.

Recommended Posts

Signer 2nd _Beginner Limited Competition Review
SIGNATE [1st _Beginner Limited Competition] Participation au ciblage des clients de la banque
SIGNATE [1st _Beginner Limited Competition] Résolution du ciblage des clients bancaires
Critique du concours AtCoder Beginner Contest 152
Critique du concours AtCoder Débutant 160
Critique du concours AtCoder Débutant 178
Critique du concours AtCoder pour débutant 166
AtCoder Débutant Contest 167 Évaluation
AtCoder Débutant Contest 169 Évaluation
Critique du concours AtCoder Débutant 181
AtCoder Débutant Contest 171 Critique
Critique du concours AtCoder pour débutant 182
Critique du concours AtCoder Débutant 180
Critique du concours AtCoder pour débutant 177
AtCoder Débutant Contest 168 Critique
Critique du concours AtCoder
Critique du concours AtCoder pour débutant 172
Critique du concours AtCoder
Critique du concours AtCoder
Critique du concours AtCoder Beginner Contest 153
AtCoder Débutant Contest 161 Critique
AtCoder Débutant Contest 170 Critique
Critique du concours AtCoder
AtCoder Débutant Contest 173 Critique
AtCoder Débutant Contest 155 Critique
AtCoder Débutant Contest 162 Évaluation