J'ai une base de données, composée d'un tas d'enregistrements (environ 600 000) où certains des enregistrements ont manqué certains champs. Mon objectif est de trouver un moyen de prédire ce que les valeurs de données manquantes devraient être (afin que je puisse les remplir) en fonction des données existantes. p>
Une option que je regarde est en clustering - c'est-à-dire représentant les enregistrements qui sont tous complètes en tant que points dans certains espaces, à la recherche de grappes de points, puis à un enregistrement avec des valeurs de données manquantes, essayez de déterminer s'il y en a Les grappes qui pourraient appartenir à cela sont compatibles avec les valeurs de données existantes. Cependant, cela peut ne pas être possible car certains des champs de données sont sur une échelle nominale (par exemple la couleur) et ne peuvent donc pas être mis en ordre. P>
Une autre idée que j'avais est de créer une sorte de modèle probabiliste qui prédire les données, la formant sur les données existantes, puis l'utiliser pour extrapoler. P>
Quels algorithmes sont disponibles pour faire ce qui précède et y a-t-il un logiciel librement disponible qui implémente ces algorithmes (ce logiciel va être en C # en passant). P>
3 Réponses :
Prévision des valeurs manquantes est généralement considérée comme faisant partie de la phase de nettoyage des données qui doit être effectuée avant que les données soient minières ou analysées plus loin. Ceci est assez important dans les données du monde réel. P>
Veuillez consulter cet algorithme http://arxiv.org/abs/math/0701152 < / a> p>
Actuellement, Microsoft SQL Server Analysis Analyses Services 2008 est également livré avec des algorithmes tels que ceux-ci http: //technet.microsoft.com/en-us/library/ms175312.aspx qui aide à la modélisation prédictive des attributs. P>
acclamations p>
Agréable. Mais le document semble faire l'hypothèse implicite selon laquelle il n'y a pas de biais de sélection. Ou ai-je manqué quelque chose?
Ceci est moins d'un algorithmique et d'une question plus philosophique et méthodologique. Il existe quelques techniques différentes disponibles pour aborder ce type de question. ACOCK (2005) donne une bonne introduction à certaines des méthodes. Bien qu'il puisse sembler qu'il y ait beaucoup de mathématiques / statistiques impliquées (et peut sembler beaucoup d'efforts), cela vaut la peine d'être réfléchie à ce qui se passerait si vous vous êtes gâché. P>
Le blog de Andrew Gelman est également une bonne ressource, bien que la fonctionnalité de recherche sur son blog laisse quelque chose à souhaiter ... p>
J'espère que cela aide. P>
ACOCK (2005) P>
http://oregonstate.edu/~Acock/ Curving-Curves / Travailler% 20With% 20MISSING% 20Values.pdf P>
Blog de Andrew Gelman P>
Traitement des valeurs manquantes est une question méthodique qui doit faire avec le sens réel des données. P>
Plusieurs méthodes que vous pouvez utiliser (voir les détails li>
Utilisez moyenne d'attribut strong>. Par exemple, si le revenu moyen d'une famille américaine est X, vous pouvez utiliser cette valeur pour remplacer les valeurs manquantes de revenu. P> li>
Utilisez moyenne d'attribut pour tous les échantillons appartenant à la même classe strong>. Disons que vous avez une voiture tarification DB qui, entre autres choses, les voitures à classifie « Luxe » et « budget » et vous faites affaire avec les valeurs manquantes dans le domaine des coûts. Remplacement manquant coût d'une voiture de luxe avec le coût moyen de toutes les voitures de luxe est probablement plus précise la valeur que vous obtiendriez si vous facteur dans les voitures à petit budget p> li>
Utiliser algorithme d'exploration de données pour prédire la valeur strong>. La valeur peut être déterminée en utilisant la régression, l'inférence des outils à base en utilisant le formalisme bayésien, des arbres de décision, les algorithmes utilisés pour générer le regroupement d'entrée pour l'étape de procédé n ° 4 (K-Mean \ médian etc.)
Je suggère à la recherche d'abord (génération d'arbres ID3) car ils sont relativement faciles et il y a des arbres de régression et de décision beaucoup d'exemples sur le net. P> li>
ol>
En ce qui concerne les paquets, si vous pouvez vous le permettre et vous êtes dans le regard du monde Microsoft à SQL Server Analysis Services (SSAS pour faire court) qui mettent en œuvre la plupart des mentionné ci-dessus. P>
Voici quelques liens vers des données libres minning logiciels: p>
Bien que C #, il est une assez bonne introduction aux arbres de décision et l'apprentissage bayésien (en utilisant Ruby):
http://www.igvita.com/2007/ 04/16 / arbre de décision-apprentissage en ruby /
http://www.igvita.com/2007/05/ 23 / Bayes-classification en ruby / p>
Il y a aussi cette bibliothèque Ruby que je trouve très utile (aussi à des fins d'apprentissage):
http://ai4r.rubyforge.org/machineLearning.html p>
Il devrait y avoir beaucoup d'échantillons pour ces algorithmes en ligne dans toutes les langues, donc je suis sûr que vous trouverez facilement des choses C # trop ... p>
Modifié: p>
oublié dans mon message original. Ceci est un must certainement avoir si vous jouez avec l'exploration de données ...
Télécharger Microsoft SQL Server 2008 Data Mining Add- ins pour Microsoft office 2007 (nécessite SQL Server Analysis services - SSAS - qui n'est pas gratuit, mais vous pouvez télécharger un essai) p>.
Cela vous permettra de jouer facilement et essayer les différentes techniques dans Excel avant de partir et de mettre en œuvre ce genre de choses vous-même. Là encore, puisque vous êtes dans l'écosystème Microsoft, vous pourriez même décider d'aller pour une solution basée sur SSAS et compter sur les types SQL Server pour le faire pour toi:) p>
Énorme problème. Très dépendant de beaucoup de choses que nous ne pouvons pas prédire. Instance la plus simple: existe-t-il des biais de sélection dans lesquels des archives manquent? Comment le sais-tu? Que peux-tu y faire? Existe-t-il des indicateurs de proxy disponibles? Etc...
Accepter avec le commentaire ci-dessus. Il peut y avoir des algorithmes généraux à utiliser des idées que vous pourriez utiliser, mais vous devez personnaliser chacun d'entre eux vers votre domaine.