Analyse Calcul de prédictions

Inscrit
28 Decembre 2019
Messages
8
Reactions
0
#1
Bonjour,

Je souhaiterais avoir vos avis sur la meilleure methode de calcul d'une prédiction de la valeur d'un bien.
Voici les données dont je dispose pour faire cette prevision :
Nom du bien; prix à l'unité, prix en lot de 10; prix en lot de 100; prix moyen;date et heure à laquelle jai enregistré la data.

Cette prediction peut etre faites sur excel grace à un graph(courbe LN) mais la j'aimerais reproduire ca dans mon projet en m'appuyant sur ma DB et avoir la possibilité de créer mes critères.

J'ai la date et l'heure précise du relevé du prix et je commence a avoir une db de 30k ligne qui s'alimente en autonomie ( 7/8k ligne par jour).
Hors évènements spéciaux je pense qu'une prédiction en fonction de l'heure et jour de la semaine est possible. Je peux donc prévoir les évènements comme le week-end, sortie de boulot et meme les vacances

Derrière je suis en train d'intègrera un référentiel pour 'évaluer' la ressource si elle se vend bien (lot de 1 ou 10 ou 100).

Je compte aussi stocker en base un historique d'achat et vente ce qui pourra aussi améliorer mes prédictions ?

Codant en .ast net core j'ai regardé du coté neral network : https://medium.com/coinmonks/implement-a-simple-neural-network-in-c-net-part-1-d44b49ae6e99

Exemple de doc microsoft sur calcul de prediction en Ml.net : https://docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/time-series-demand-forecasting

Mais j'ai aucune exp dans ce domaine je vais voir si je peux facilement mettre en place ca
Avis sur cette solution ?

Merci d'avance, pour vos réponses
 
Dernière édition:
Inscrit
26 Janvier 2016
Messages
99
Reactions
28
#2
Je vois pas trop ce que tu pourrais prédire au jour le jour ...

Ya des evenements, dj rusher , almanax, sortie de maj, week end (?) , vacance ...
Qui font bouger les prix
Jimagine que la sortie de cours/travail a 17h doit faire bouger aussi

Mais jai du mal a croire que tu peux concretement prévoir un prix ...
 
Inscrit
2 Juin 2019
Messages
3
Reactions
1
#4
Salut,

Si tu es chaud en python, tu peux te renseigner sur Kaggle. C'est un site web qui te fournit un environnement pour faire du ML, des datasets et les travaux des personnes sur ces datasets. En plus des datasets proposés, tu peux rajouter les tiens pour tes travaux personnels. L'avantage de Kaggle c'est que tu peux activer un GPU pour accélérer l'apprentissage de ton modèle si tu n'as pas de PC très puissant et toutes les librairies nécessaires pour du ML sont déja installées. J'utilise Kaggle dans le cadre de l'école, mais des professionnels l'utilisent également.

Je ne suis pas une bête en ML j'ai juste quelques bases, mais je pense que tu peux essayer de prévoir le prix de certains objets avec une Linear Régression. Par contre, tu risque d'avoir deux problèmes pour appliquer du Machine Learning :
- La qualité de ton datasets : Est ce que les différents facteurs listés par Bravensgeur ont un impact sur les prix (je pense que oui). Tu dois donc essayer de les récupérer afin de vérifier si ca un impact ou non. Sans l'utilisation de ces facteurs tu auras peut être avoir une prédiction proche de 50% (ce qui est le pire dans ton cas).
- La quantité : Tu dois avoir des enregistrements sur les prix à toutes heures, sur plusieurs jours et plusieurs mois. En ML, l'entrainement de ton modèle est important. Sur un jeu de donnée, 70% à 80% servent à l'entrainement et le reste sert à déterminer si ton modèle est performant ou non.

En cherchant deux minutes sur Kaggle j'ai pu récupérer un travail sur la prédiction des prix de maisons. https://www.kaggle.com/faressayah/linear-regression-house-price-prediction#2.-Robust-Regression

A toi de voir si tu trouves des trucs qui peuvent t'intéresser.
 
Inscrit
28 Decembre 2019
Messages
8
Reactions
0
#5
@nataire, merci pour ton retour !

Je suis développeur full stack spé asp net + angular/vue de base :/ donc niveau python j'ai les notions mais rien de fou ..
Je vais jeter un coup d'oeil sur kaggle mais je pense pas partir sur ca.

Après pour revenir sur l'aspect dataset :
- J'ai facilement une dizaine d'enregistrement par ressource par jour sur plus de semaines ( prix lot 1 / 10 /100 et moyen et sa date d'enregistrement )
- Cette db s'alimente en auto donc mon dataset s'améliorer de jour en jour .


Coté PC ayant un ryzen 7 3800x ca devrait pas poser de pb de je pense et dans le pire des cas j'ai une CG derrière si je vois que ca passe mal sur cpu.

Par exemple je créer ce pipleLine pour le calcul du prix lot de cent :
ps : désolé pour le formattage du code (impossible d'ajouter une balise Spoiler + code)

var pipelinePriceCent = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: nameof(Ressources.PrixCent))
.Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName:"RessourceEncoded" , inputColumnName : nameof(Ressources.Ressource)))
.Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "DateEncoded", inputColumnName: nameof(Ressources.Date)))
.Append(mlContext.Transforms.Concatenate("Features","PrixUn","PrixDix", "PrixMoyen", "RessourceEncoded", "DateEncoded"))
.Append(mlContext.Regression.Trainers.FastTree())
.Append(mlContext.Transforms.CopyColumns(outputColumnName: "RessourceEncoded", inputColumnName: "Score"));
 
Inscrit
28 Decembre 2019
Messages
8
Reactions
0
#6
Exemple de donnée que j'ai sur une ressource qui démontre rapidement l'effet "week end " sur cette ressource. a confirmer le week end pro bien sur. D'autre jeu de donnée confirme l'effet sortie de boulot . Je vais partir du coté neural network je pense clairement

ressource / prix unité / prix 10 / prix 100 / lot / date de lecture
1607469385905.png
 

Pièces jointes

Inscrit
2 Juin 2019
Messages
3
Reactions
1
#7
Plusieurs questions/remarques me viennent :
  • A quoi correspond la valeur "lot" ? (est un id ?)
  • Est ce que tu penses qu'il est possible de récupérer la valeur du prix moyen d'un item et du lot en question. Je pense que ca peut être intéressant de comparer la valeur marchande en HDV et le prix moyen pour certains objets.
  • Un conseil pour ton jeu de donnée, essaye de déplacer ta chaine de caractère ressource, dans une autre table. Et utilise des clés étrangères. Certains algorithmes n'aiment pas trop la présence de string, on préfère en général des valeurs numériques (exemple au lieu d'un true/false on préfère un 1/0).
  • Je vois des null dans ta table. est ce normal ? Je sais que certains algorithmes n'aiment pas trop ca. En ML, il existe différentes méthodes pour remplacer les null il faudra que je me renseigne (exemple remplacer null par la valeur moyenne de ta colonne).
  • Petite précision sur ton jeu de données, tu dois rajouter une colonne que ton réseau doit deviner. Elle te servira pour ton entrainement et déterminer si ton modèle est performant ou non.
 
Inscrit
28 Decembre 2019
Messages
8
Reactions
0
#8
Hello !

- Erreur de ma part sur le therme 'lot ' => c'est le prix moyen affiché en hdv.
- Du coup oui ya moyen je le stock déjà ;)
- Pour la question des valeurs non numérique j'encode toute ces valeurs avant de l'envoyer à mon ML
- pour ce qui est des valeurs null, plusieurs cas : 90% c'est que il n'y a pas de valeurs affiché en hdv, 10 % des cas problème de lecture via l'OCR. J'essaye d'améliorer mon dataReader au fur et mesure mais la je suis plutto satisfait mon jeu de donnée est plutot propre. Maintenant je le fait tourner 10/12h par jour pour avoir un dataset le plus complet pour mes test coté ML .
- bah le problème ici c'est que j'ai pas une seule valeur a deviner, mais les 3 : lot 1, lot 10 et lot 100. voir même prix moyen. Du coup j'ai créé un objet ressourcePrediction qui est mon objet output du model.


Autre question que je me pose:
- Dois-je create/train/use/évaluate un même model pour l'ensemble des ressources ou en faire un par ressource.
- Dois-je créer plusieurs pipeline pour chaque prix (lot 1, lot 10 et lot 100 ) ?

Je me base sur cette doc : https://docs.microsoft.com/fr-fr/dotnet/machine-learning/tutorials/time-series-demand-forecasting
 
Dernière édition:
Inscrit
26 Janvier 2016
Messages
99
Reactions
28
#9
Hello !
Autre question que je me pose:
- Dois-je create/train/use/évaluate un même model pour l'ensemble des ressources ou en faire un par ressource.
bah tu vas pouvoir prévoir qu'en moyenne tout augmente (ou baisse) à l'arrivé en soirée/weekend/vacance ... mais jvois aps comment tu peux en déduire autre chose en ne te basant que sur un seul item avec si peu de donnée ...

et autre chose un peu triste mais si tu veux réellement te faire de l'agrent sur la prédiction de valeur bah go farm et tu vends avant un événement précis qui concerne la ressource ...

et si c est pour apprendre commence par étudier les paquets pour d'une part apprendre cette partie et pour avoir des données fiable et en plus grand nombre ...
 
Inscrit
28 Decembre 2019
Messages
8
Reactions
0
#10
@Brasvengeur,

yes d'où l'intérêt je pense de créer un model par ressource et par lot je pense.

Le but c'est surtout de me mettre dans le framework ML et la logique ML qui m'intéresse. Bien sur si demain ca généré des kamas c'est tjr ca mais bon je joue peu a dofus.

pour les paquets j'ai déjà travaillé sur des projets de bot packet notamment 1.29 et pour ce que je fais mon OCR + script ahk fait bien le boulot je trouve. A part améliorer la vitesse de lecture de l'HDV la lecture de paquet ne va pas m'apporter d'autre chose ?


Actuellement je tourne a environ 12/15 lectures de chaque ressource par jour.
 
Inscrit
26 Janvier 2016
Messages
99
Reactions
28
#11
@Brasvengeur,

yes d'où l'intérêt je pense de créer un model par ressource et par lot je pense.

Le but c'est surtout de me mettre dans le framework ML et la logique ML qui m'intéresse. Bien sur si demain ca généré des kamas c'est tjr ca mais bon je joue peu a dofus.

pour les paquets j'ai déjà travaillé sur des projets de bot packet notamment 1.29 et pour ce que je fais mon OCR + script ahk fait bien le boulot je trouve. A part améliorer la vitesse de lecture de l'HDV la lecture de paquet ne va pas m'apporter d'autre chose ?


Actuellement je tourne a environ 12/15 lectures de chaque ressource par jour.
Améliorer la vitesse de lecture et diminuer les erreurs de lecture que tu as mentionner au dessus, et une fois ce premier travail fait il n'y aura plus qu'un pas à faire pour passer à du mitm pour pouvoir questionner l'hdv via envoi de paquets et là le nombre de données potentiellement récupérable sera beaucoup plus grand et utile pour ton ml ...
 
Inscrit
2 Juin 2019
Messages
3
Reactions
1
#12
Dois-je create/train/use/évaluate un même model pour l'ensemble des ressources ou en faire un par ressource.
Dans un premier temps tu peux faire un model sur l'ensemble des ressources. Le problème c'est que tu n'as pas énormément de donnée pour chaque item. Au fil du temps il se remplira et tu pourras peut être partir sur un réseau de neurone pour chaque item

Dois-je créer plusieurs pipeline pour chaque prix (lot 1, lot 10 et lot 100 ) ?
Je ne vois pas trop ce que c'est un pipeline, mais en regardant ton lien j'ai envie de dire un pour chaque lot.

Apres ce que je te dis c'est que des supposition. Dans le ML il y a beaucoup de test, de changement de paramètre, de chance, de feeling pour trouver le meilleur modèle.
 
Dernière édition:
Haut Bas