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.
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.
L'environnement est Google Colaboratory
Nous reprendrons ce qui se fait couramment dans l'analyse des données de table.
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é.
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)
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
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).
À 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.
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é.
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.
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.
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