I would like to know whether it's possible to build a predictive model where I could define a set of rows with their attributes, and a class belonging to that set of rows, instead of having the typical model one observation - one class.

What I'm trying to do is to create a model which should be able to predict the future level of a rider in professional cycling - more likely to be used to forecast young riders' level . The input data are the results of each rider (race,category of race, type of parcours, position, and so on). The class is represented with the value (from 1 to 10) each "known" rider has been assigned for each skill (mountain, flat, time trial, sprint, etc.), which means that in principle, I would make one predictive model for each skill (what means for each class). For example, for mountain class I would have the following:

Rider   Category    Race Type   Parcours    Distance    Position    Class(Mountain)
Froome  GrandTour   Stage       Mountain    185         1           10
Froome  WorldTour   Stage       MidMountain 210         25          10
Nibali  Contin.Tour Stage       Mountain    170         15          9
Nibali  WorldTour   Classic     MidMountain 245         3           9

I see here two main challenges, apart from the fact of dealing with both numerical and categorical attributes.

  1. A rider gathers a lot of results, and each of them will result in the same class value. For example, a victory in a Grand Tour category stage from Chris Froome would be rated with a 10 in mountain, but he would also be rated with a 10 in mountain when he ended up in a bad position in a lower level stage - just as in the example. Ok, it's supposed that with thousands of rows the model (regression model probably, rather than a classification algorithm, but not sure of that either) should be able to detect the "common" pattern (a good performance in mountain from a good climber like Froome), so it could be overcome. I guess it'd be a matter of testing and finding the best-fitted models.

  2. I find the predictive part the most problematic one, because what I need isn't to predict the class value for each observation (which is represented by each result), but the class value for each rider. That's why I said at the beginning of the thread that I would need to somehow treat all the results of a rider as a unique observation (something like a set or group of observations), and assign the class value to that set. A workaround could be to take all the observations of the rider, predict the class for each of them, and then calculate the average, but it doesn't look very smart.

So, any idea of how to build this kind of models?

Thanks in advance.

  • $\begingroup$ The only method I know of that handles 'many-to-one' classification (e.g. each observation has multiple rows of data) is recurrent neural networks and they are sadly pretty difficult to use (karpathy.github.io/2015/05/21/rnn-effectiveness). Likely some kind of feature engineering is needed to create a single row of data for each rider. $\endgroup$
    – pir
    Commented Sep 28, 2015 at 19:12

1 Answer 1


Looks like you have two problems: time-dependant predictive modeling and feature engineering.

1) Time-dependant data

Key words:

create a model which should be able to predict the future level of a rider in professional cycling

The future Level of the Rider.

That means there is current Level. And Level in the past. And the history of Level change in time for each Rider.

The problem you are trying to solve is time dependant. Your source data can look like:

enter image description here

2) Build a variable to predict

Second. You should build the target feature. This Rider Level (Class).

As far as I understood:

  • the overall rider 'level' can be a function of his 'classes' in each particular race types
  • and... the race 'observation' class is a kind of function of {Category, Race Type, Parcours, Distance, Position}

So the only thing you realy need to predict is race result.

enter image description here

  • $\begingroup$ Thanks @IharS , but actually I'm rating riders valuing their whole career, so there's no current level or future level for this kind of riders. What I want to do is the following: 1. Train the known riders' data, and predict less known riders' level taking into account their results. 2. Predict young riders' future level (in this case I should take into account the results the known riders achieved when they were young, train this data, and predict the level of currently young riders). On the other hand, I'm looking for the level in each skill, not an overall level. $\endgroup$
    – Hibai
    Commented Sep 26, 2015 at 11:10
  • $\begingroup$ So still you are talking about Rider's class change in time. $\endgroup$
    – IgorS
    Commented Sep 26, 2015 at 11:16
  • $\begingroup$ Not exactly, I think. I mean, what I want to predict is the level some riders will have, let's say, as a result of their whole career. So I don't want to infer their level at their very early years as a professional, then their improvement, and so on. I would like to take their results as young riders, and deduce what level they could reach, but not a changing level. And there's also the other part, where I have a rider in his maturity, with his results in different races, but without being classified yet. $\endgroup$
    – Hibai
    Commented Sep 26, 2015 at 15:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.