training set features different from test set features in prediction - machine-learning

I have two data set, train data set and test data set and I want to predict on these data sets.
My train data set has these features:
ID, name, age, Time of recruitment, Time fired, status
My test data set has these features:
ID, name, age, Time of recruitment
Now I want to predict “status” for test data set, but number of train data set features are different from test data set. Train data set has the “Time fired” feature while test data set has not it. What should I do?

If a model uses a particular attribute, then it is required in the test set for prediction.
Is 'Time fired' an important/critical attribute for the prediction? If not you could just leave it out in the training data as well. If it is, you'll have to find a way to collect it in the test data as well.

Related

Confusion regarding validation data set in Machine learning?

https://www.youtube.com/watch?v=i_LwzRVP7bg&list=PPSV&ab_channel=freeCodeCamp.org
I was watching above youtube video , in chapter "Training Model" there were 3 sets discussed.
1)Training data set
2)Test data set
3)Validation data set
But i am confused in difference between these 3 types because in other resources of ML, i came across only two sets,Training data set and test data set, but here Validation data set is also discussed
But what is Validation data set and is it always necessary to include? and how it is different from Training data set & Test data set
Usually, in machine learning, the most discussed data sets are the training and the test sets where a model can learn a distribution (the training set) and evaluate its performance on unseen data (the test set).
In recent years, when enough data is present, a validation set has been introduced between those two sets to help with hyper-tuning (finding the best parameters for the models). It is similar to the test set because it is unseen data, but because we use it to tune the hyperparameters, we still need a final test set to see if those hyperparameters generalize well.
Hope this helps!

Temporal train-test split for forecasting

I know this may be a basic question but I want to know if I am using the train, test split correctly.
Say I have data that ends at 2019, and I want to predict values in the next 5 years.
The graph I produced is provided below:
My training data starts from 1996-2014 and my test data starts from 2014-2019. The test data perfectly fits the training data. I then used this test data to make predictions from 2019-2024.
Is this the correct way to do it, or my predictions should also be from 2014-2019 just like the test data?
The test/validation data is useful for you to evaluate the predictor to use. Once you have decided which model to use, you should train the model with the whole dataset 1996-2019 so that you do not lose possible valuable knowledge from 2014-2019. Take into account that when working with time-series, usually the newer part of the serie has more importance in your prediction than older values of the serie.

Training data has more columns than test data

I have training data with 16 columns and test data with 14columns and the last two target columns from training data is not present in test data(which is very important). Also the test data is already given and training data is also given.
The approach i was thinking is to start off by combining the train and test data and then split the data as X_Train, Y_Train, X_Test and Y_Test. Is it a good way to do or is there any other way to start off?
I haven't coded for it yet. But before i could do i need some advice to start it.
Thanks
Well I don't know what task you want to solve, but it seems like you want to train a model on your training dataset and then predict the targets of your test dataset (that's why you don't have those).
If you want to evaluate how good your model is doing in the training phase you can split your training data into a real training set and a validation set with test_train_split(X_train,y_train). If the validation accuracy is good enough you take your trained model and call model.predict(X_test) on it
For evaluating your model you could just split your training set into training and testing ( using 20% for testing ) and use cross validation.
Your test set is useless for evaluation if it doesn't contain target variable. I'm thinking that this is an assignment or a competition ur taking ? Because they always give you a test set with keeping the targets for themselves for evaluating you

Machine learning: training model from test data

I was wondering if a model trains itself from the test data as well while evaluating it multiple times, leading to a over-fitting scenario. Normally we split the training data into train-test splits and I noticed some people split it into 3 sets of data - train, test and eval. eval is for final evaluation of the model. I might be wrong but my point is that if the above mentioned scenario is not true, then there is no need for an eval data set.
Need some clarification.
The best way to evaluate how well a model will perform in the 'wild' is to evaluate its performance on a data set it has not seen (i.e., been trained on) -- assuming you have the labels in a supervised learning problem.
People split their data into train/test/eval and use the training data to estimate/learn the model parameters and the test set to tune the model (e.g., by trying different hyperparameter combinations). A model is usually selected based on the hyperparameter combination that optimizes a test metric (regression - MSE, R^2, etc.; classification - AUC, accuracy, etc.). Then the selected model is usually retrained on the combined train + test data set. After retraining, the model is evaluated based on its performance on the eval data set (assuming you have some ground truth labels to evaluate your predictions). The eval metric is what you report as the generalization metric -- that is, how well your model performs on novel data.
Does this help?
Consider you have train and test datasets. Train dataset is the one in which you know the output and you train your model on train dataset and you try to predict the output of Test dataset.
Most people split train dataset into train and validation. So first you run your model on train data and evaluate it on validation set. Then again you run the model on test dataset.
Now you are wondering how this will help and of any use?
This helps you to understand your model performance on seen data(validation data) and unseen data(your test data).
Here comes bias-variance trade-off into picture.
https://machinelearningmastery.com/gentle-introduction-to-the-bias-variance-trade-off-in-machine-learning/
Let's consider a binary classification example where a student's previous semester grades, Sports achievements, Extracurriculars etc are used to predict whether or not he will pass the final semester.
Let's say we have around 10000 samples (data of 10000 students).
Now we split them:
Training set - 6000 samples
Validation set - 2000 samples
Test set - 1000 samples
The training data is generally split into three (training set, validation set, and test set) for the following reasons:
1) Feature Selection: Let's assume you have trained the model using some algorithm. You calculate the training accuracy and validation accuracy. You plot the learning curves and find if the model is overfitting or underfitting and make changes (add or remove features, add more samples etc). Repeat until you have the best validation accuracy. Now test the model with the test set to get your final score.
2) Parameter Selection: When you use algorithms like KNN, And you need to find the best K value which fits the model properly. You can plot the accuracy of different K value and choose the best validation accuracy and use it for your test set. (same applies when you find n_estimators for Random forests etc)
3) Model Selection: Also you can train the model with different algorithms and choose the model which better fits the data by testing out the accuracy using validation set.
So basically the Validation set helps you evaluate your model's performance how you must fine-tune it for best accuracy.
Hope you find this helpful.

Training Data Vs. Test Data

This might sound like an elementary question but I am having a major confusion regarding Training Set and Test.
When we use Supervised learning techniques such as Classification to predict something a common practice is to split the dataset into two parts training and test set. The training set will have a predictor variable, we train the model on the dataset and "predict" things.
Let's take an example. We are going to predict loan defaulters in a bank and we have the German credit data set where we are predicting defaulters and non- defaulters but there is already a definition column which says whether a customer is a defaulter or Non-defaulter.
I understand the logic of prediction on UNSEEN data, like the Titanic survival data but what is the point of prediction where a class is already mentioned, such as German credit lending data.
As you said, the idea is to come up a model that you can predict UNSEEN data. The test data is only used to measure the performance of your model created through training data. You want to make sure the model you comes up does not "overfit" your training data. That's why the testing data is important. Eventually, you will use the model to predict whether a new loaner is going to default or not, thus making a business decision whether to approve the loan application.
The reason why they include the defaulted values is so that you can verify that the model is working as expected and predicting the correct results. Without which there is no way for anyone to be confident that their model is working as expected.
The ultimate purpose of training a model is to apply it to what you call UNSEEN data.
Even in your German credit lending example, at the end of the day you will have a trained model that you could use to predict if new - unseen - credit applications will default or not. And you should be able to use it in the future for any new credit application, as long as you are able to represent the new credit data in the same format you used to train your model.
On the other hand, the test set is just a formalism used to estimate how good the model is. You cannot know for sure how accurate your model it is going to be with future credit applications, but what you can do is to save a small part of your training data, and use it only to check the model's performance after it has been built. That's what you would call the test set (or more precisely, a validation set).

Resources