1

Nous avons eu un produit basé sur la production Web qui permet aux utilisateurs de faire des prédictions sur la valeur future (ou la demande) des marchandises, les données historiques contiennent environ 100k exemples, chaque exemple a environ 5 paramètres;Débutant: par où commencer étant donné un problème pour prédire le succès futur ou non

Tenir compte une classe de données appelé prediciton:

prediction { 
    id: int 
    predictor: int  
    predictionDate: date 
    predictedProductId: int 
    predictedDirection: byte (0 for decrease, 1 for increase) 
    valueAtPrediciton: float 
} 

et une classe de résultat apparié qui mesure le résultat de la prédiction:

predictionResult { 
    id: int 
    valueTenDaysAfterPrediction: float 
    valueTwentyDaysAfterPrediction: float 
    valueThirtyDaysAfterPrediction: float 
} 

nous pouvons définir un test tel pour le succès, où si deux des futurs points de contrôle de valeur sont favorables lors de la conisdering direction et la valeur au moment de la prédiction.

success(p: prediction, r: predictionResult): bool = 
    count: int 
    count = 0 

    // value is predicted to fall 
    if p.predictedDirection = 0 then 
     if p.valueAtPrediciton > r.valueTenDaysAfterPrediction then count = count + 1 
     if p.valueAtPrediciton > r.valueTwentyDaysAfterPrediction then count = count + 1 
     if p.valueAtPrediciton > r.valueThirtyDaysAfterPrediction then count = count + 1 

    // value is predicted to increase 
    else 
     if p.valueAtPrediciton < r.valueTenDaysAfterPrediction then count = count + 1 
     if p.valueAtPrediciton < r.valueTwentyDaysAfterPrediction then count = count + 1 
     if p.valueAtPrediciton < r.valueThirtyDaysAfterPrediction then count = count + 1 

    // success if count = 2 or count = 3 
    return (count > 1) 

Tout dans la classe de prédiction est connue dans le moment où l'utilisateur soumet le formulaire et les informations contenues dans le predictionResult ne sait pas que plus tard; Idéalement, le modèle ou algorythme peut être dérivé de notre histoire de trois ans que l'algorythme est appliqué à une nouvelle prédicite, nous pouvons avoir une probabilité de savoir si elle sera un succès ou non (je serais heureux avec un drapeau booléen O/N comme que cela soit intéressant ou non).

Je ne connais pas grand chose à l'apprentissage automatique, et j'essaie de me frayer un chemin à travers le matériel. Mais ce serait génial si je pouvais avoir quelques conseils afin que je puisse rechercher et pratiquer exactement ce dont j'ai besoin pour résoudre un problème comme celui-ci.

Merci

Répondre

8

Caractéristiques

La première chose que vous devez faire est de décider quelles sont les informations que vous allez utiliser comme preuve pour classer comme étant exacts ou non la prédiction d'un utilisateur. Par exemple, vous pouvez commencer avec des choses simples comme l'identité de l'utilisateur qui fait la prédiction, et leur précision historique lorsque vous faites des prédictions sur des biens identiques ou similaires. Cette information sera fournie aux outils d'apprentissage automatique en aval, tels que , caractéristiques qui seront utilisées pour classer les prédictions des utilisateurs.

Formation, Développement et données de test

Vous voulez partager vos 100k exemples historiques en trois parties: la formation, le développement et test. Vous devriez mettre la plupart des données, disons 80% de celui-ci, dans votre ensemble de formation. Ce sera l'ensemble de données que vous utiliserez pour former votre classificateur d'exactitude de prédiction. En règle générale, plus vous utilisez de données pour former votre classificateur, plus le modèle résultant sera précis.

Les deux autres ensembles de données, développement et test, seront utilisés pour évaluer les performances de votre classificateur. Vous utiliserez l'ensemble de développement pour évaluer l'exactitude des différentes configurations de votre classificateur ou les variations dans la représentation des fonctions. C'est ce qu'on appelle l'ensemble de développement puisque vous l'utilisez pour évaluer en continu les performances de la classification au fur et à mesure que vous développez votre modèle ou votre système. Plus tard, après avoir construit un modèle qui obtient de bonnes performances sur les données de développement, vous aurez probablement besoin d'une estimation non biaisée de la performance de votre classificateur sur les nouvelles données. Pour cela, vous utiliserez l'ensemble de test pour évaluer l'efficacité du classificateur sur les données autres que celles que vous avez utilisées pour le développer.

paquets classificateur/ML

Une fois que vous avez votre fonction préliminaire réglée et que vous avez divisé les données dans la formation, le développement et le test, vous êtes prêt à choisir un programme d'apprentissage de la machine et classificateur. Quelques paquets bons qui prennent en charge de nombreux types de classificateurs comprennent:

qui classificateur vous devez utiliser dépend de nombreux des facteurs tels que le type de prédictions que vous souhaitez effectuer (par exemple, binaire, multiclasse), les types de fonctionnalités que vous souhaitez utiliser et la quantité de données d'entraînement que vous souhaitez utiliser.

Par exemple, si vous souhaitez définir une classification binaire pour déterminer si la prédication d'un utilisateur est probablement exacte ou non, vous pouvez essayer support-vector-machines (SVMs). Leur formulation de base est limitée à faire des prédications binaires. Mais, si c'est tout ce dont vous avez besoin, ils sont souvent un bon choix car ils peuvent donner des modèles très précis.

Cependant, le temps requis pour former un SVM échelles mal avec la taille des données d'apprentissage. Pour vous entraîner sur des quantités importantes de données, vous pouvez décider d'utiliser quelque chose comme random forests. Lorsque les forêts aléatoires et les SVM sont formés sur des ensembles de données de même taille, les forêts aléatoires produisent généralement un modèle aussi précis ou presque aussi précis qu'un modèle SVM. Cependant, les forêts aléatoires peuvent vous permettre d'utiliser davantage de données d'entraînement et d'utiliser davantage de données d'entraînement pour typically increase the accuracy of your model.

Creuser

Voici quelques conseils à d'autres bons endroits pour commencer avec l'apprentissage automatique

+0

Je vous avais suivi les conférences d'andrew ng peu à peu. Mais les tutoriels d'Anrews ont été très instructifs. Je vous remercie... – akaphenom