Perform a classification task on the given dataset.
Using the features given, you will train a XGBoost decision tree model to predict a given person's salary (the WAGP
column) - which will be categorized into multiple bins.
Remember: when in doubt, read the documentation first. It's always helpful to search for the class that you're trying to work with, e.g. pyspark.sql.DataFrame.
Pandas API documentation: https://pandas.pydata.org/pandas-docs/stable/reference/index.html
Amazon Sagemaker API documentation: https://sagemaker.readthedocs.io/en/stable/
Amazon Sagemaker Tutorials: https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html
import os, sagemaker
from sagemaker import get_execution_role
from sklearn.model_selection import train_test_split
"""You don't need to change any code in this cell."""
# Define IAM role- this will be necessary when defining your model
iam_role = get_execution_role()
# Set SageMaker session handle
sess = sagemaker.Session()
# set the region of the instance and get a reference to the client
region = sess.boto_session.region_name
bucket = sess.default_bucket() # this could also be a hard-coded bucket name
print('Using bucket ' + bucket)
print("Success - the SageMaker instance is in the " + region + " region")
Using bucket sagemaker-us-west-2-235208541956 Success - the SageMaker instance is in the us-west-2 region
The dataset has been shared in the following S3 path: s3://rsm-emr01/week10/person_records_merged.csv
We'll use this path to read the data from S3 directly.
"""
Look at the below code to see how the data is read and see a few samples of how the data looks like.
You don't need to change any code in this cell.
"""
import pandas as pd
import pickle
# Read data from the S3 bucket
file_path = "s3://week10-mgta495/person_records_merged.csv"
df = pd.read_csv(file_path)
df.head()
SERIALNO | SPORDER | PUMA | ST | ADJINC | AGEP | CIT | CITWP | COW | DDRS | ... | RACWHT | RC | SFN | SFR | SOCP | VPS | WAOB | FHINS3C | FHINS4C | FHINS5C | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 84 | 1 | 2600 | 1 | 1007549 | 19 | 1 | NaN | NaN | 2.0 | ... | 1 | 0 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN |
1 | 154 | 1 | 2500 | 1 | 1007549 | 55 | 1 | NaN | 1.0 | 2.0 | ... | 0 | 0 | NaN | NaN | 411011 | NaN | 1 | NaN | NaN | NaN |
2 | 154 | 2 | 2500 | 1 | 1007549 | 56 | 1 | NaN | 6.0 | 2.0 | ... | 0 | 0 | NaN | NaN | 493050 | NaN | 1 | NaN | NaN | NaN |
3 | 154 | 3 | 2500 | 1 | 1007549 | 21 | 1 | NaN | NaN | 2.0 | ... | 0 | 0 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN |
4 | 154 | 4 | 2500 | 1 | 1007549 | 21 | 1 | NaN | NaN | 1.0 | ... | 0 | 0 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN |
5 rows × 127 columns
There are lots of columns in the original dataset. However, we'll only use the following columns whose descriptions are given below.
AGEP - Age
COW - Class of worker
WAGP - Wages or salary income past 12 months
JWMNP - Travel time to work
JWTR - Means of transportation to work
MAR - Marital status
PERNP - Total person's earnings
NWAV - Available for work
NWLA - On layoff from work
NWLK - Looking for work
NWAB - Temporary absence from work
SCHL - Educational attainment
WKW - Weeks worked during past 12 months
"""
Select the given column names below.
You don't need to change any code in this cell.
"""
colNames = ['AGEP', 'COW', 'WAGP', 'JWMNP', 'JWTR', 'MAR', 'PERNP', 'NWAV',
'NWLA', 'NWLK', 'NWAB', 'SCHL', 'WKW']
df = df[colNames]
df.head()
AGEP | COW | WAGP | JWMNP | JWTR | MAR | PERNP | NWAV | NWLA | NWLK | NWAB | SCHL | WKW | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 19 | NaN | 0.0 | NaN | NaN | 5 | 0.0 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
1 | 55 | 1.0 | 52000.0 | 30.0 | 1.0 | 1 | 52000.0 | 5.0 | 3.0 | 3.0 | 3.0 | 20.0 | 1.0 |
2 | 56 | 6.0 | 0.0 | NaN | 11.0 | 1 | 99000.0 | 5.0 | 3.0 | 3.0 | 3.0 | 16.0 | 1.0 |
3 | 21 | NaN | 0.0 | NaN | NaN | 5 | 0.0 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
4 | 21 | NaN | 0.0 | NaN | NaN | 5 | 0.0 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
Find the correlation of the WAGP value with all other features. You can use the following technique for finding correlation between two columns:
df['col_1'].corr(df['col_2'])
gives you the correlation between col_1 and col_2.
Your task is to find the correlation between WAGP and all other columns.
"""
Find the correlation of each of the features with the target variable WAGP
"""
import numpy as np
result = pd.DataFrame({"Variables":colNames,"corr": np.arange(len(colNames))})
for i in colNames:
result.loc[result.Variables == i, "corr"] = df.WAGP.corr(df[i])
print('Correlations with WAGP:')
result
# YOUR CODE HERE
Correlations with WAGP:
Variables | corr | |
---|---|---|
0 | AGEP | -0.034028 |
1 | COW | -0.062779 |
2 | WAGP | 1.000000 |
3 | JWMNP | 0.105639 |
4 | JWTR | -0.026631 |
5 | MAR | -0.167817 |
6 | PERNP | 0.950729 |
7 | NWAV | 0.110071 |
8 | NWLA | 0.334439 |
9 | NWLK | 0.325355 |
10 | NWAB | 0.323822 |
11 | SCHL | 0.291967 |
12 | WKW | -0.303953 |
"""From the results of the above cell, you should see that PERNP is highly correlated with WAGP.
Since PERNP is highly correlated with WAGP, we'll remove that column from the dataset.
You don't need to change any code in this cell.
"""
colNames = ['AGEP', 'COW', 'WAGP', 'JWMNP', 'JWTR', 'MAR', 'NWAV', 'NWLA', 'NWLK', 'NWAB', 'SCHL', 'WKW']
df = df[colNames]
df.head()
AGEP | COW | WAGP | JWMNP | JWTR | MAR | NWAV | NWLA | NWLK | NWAB | SCHL | WKW | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 19 | NaN | 0.0 | NaN | NaN | 5 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
1 | 55 | 1.0 | 52000.0 | 30.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 20.0 | 1.0 |
2 | 56 | 6.0 | 0.0 | NaN | 11.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 16.0 | 1.0 |
3 | 21 | NaN | 0.0 | NaN | NaN | 5 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
4 | 21 | NaN | 0.0 | NaN | NaN | 5 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
"""See the statistics of the target variable.
Use the .describe() method to see the statistics of the WAGP column.
"""
print("WAGP statistics:")
df.WAGP.describe()
# YOUR CODE HERE
WAGP statistics:
count 2.582042e+06 mean 2.565256e+04 std 4.736001e+04 min 0.000000e+00 25% 0.000000e+00 50% 6.000000e+03 75% 3.600000e+04 max 6.600000e+05 Name: WAGP, dtype: float64
Remove outlier rows based on values in the WAGP
column. This will be an important step that impacts our model's predictive performance in the classification step below.
Based on the statistics above, we need an upper limit to filter out significant outliers. We'll filter out all the data points for which WAGP is more than the mean + 3 standard deviations.
Your tasks:
Expected Output:
"""Select the number of standard deviations you want to set as the upper limit"""
nStddevs = 3
"""Find the mean and standard deviations of the WAGP column. """
nSamples = len(df)
colName = 'WAGP'
mu = df.WAGP.mean()
sigma = df.WAGP.std()
print('\n{} -- mean:\t{}\n\tstddev:\t{}'.format(colName, mu, sigma))
"""Calculate the value of your WAGP upper limit using the calculated mean and standard deviation"""
upperLim = mu + nStddevs*sigma
print('Removing rows with {} above {}'.format(colName, upperLim))
"""Select rows using the WAGP upper limit you have just calculated"""
df_filtered = df[df[colName] < upperLim]
print (nSamples - len(df_filtered), 'rows removed\n')
"""print the first 5 rows of the filtered dataframe"""
df_filtered.head(5)
WAGP -- mean: 25652.55809239354 stddev: 47360.01051275194 Removing rows with WAGP above 167732.58963064937 588315 rows removed
AGEP | COW | WAGP | JWMNP | JWTR | MAR | NWAV | NWLA | NWLK | NWAB | SCHL | WKW | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 19 | NaN | 0.0 | NaN | NaN | 5 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
1 | 55 | 1.0 | 52000.0 | 30.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 20.0 | 1.0 |
2 | 56 | 6.0 | 0.0 | NaN | 11.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 16.0 | 1.0 |
3 | 21 | NaN | 0.0 | NaN | NaN | 5 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
4 | 21 | NaN | 0.0 | NaN | NaN | 5 | 5.0 | 2.0 | 2.0 | 2.0 | 19.0 | NaN |
Drop rows with any nulls in any of the columns.
Print the resulting DataFrame's row count.
Note: The more features you choose, the more rows with nulls you will drop. This may be desirable if you are running into memory problems
Your tasks:
Expected Output:
"""Remove all rows which have any of the variables as NaN.
You don't need to change any code in this cell."""
labelCol = 'WAGP'
""""These are the features that we'll use - this does not include WAGP."""
featureCols = ['AGEP', 'COW', 'JWMNP', 'JWTR', 'MAR', 'NWAV', 'NWLA', 'NWLK', 'NWAB', 'SCHL', 'WKW']
df_cleaned = df_filtered[[labelCol] + featureCols].dropna(how='any')
print("Num rows left: ", len(df_cleaned))
Num rows left: 1282781
We want to convert the WAGP column, which contains continuous values, into a column with discrete labels so that we can use it as the label column for our classification problem. We're essentially turning a regression problem into a classification problem. Instead of predicting a person's exact salary, we're predicting the range in which that person's salary lies.
Note that labels are integers and should start from 0.
XGBoost expects that the Label column (WAGP_CAT) is the first column in the dataset.
Your tasks:
WAGP_CAT
Expected Output:
"""Categorize the labels into multiple bins - 5 bins in this case
Look up the pd.cut() function to see how the WAGP column is converted to different bins
"""
import matplotlib.pyplot as plt
df_cleaned['WAGP_CAT'] = pd.cut(df_cleaned['WAGP'], bins=5, labels=[0,1,2,3,4]).astype('category')
# Plot a histogram of the WAGP_CAT column
plt.hist(df_cleaned.WAGP_CAT)
plt.xlim([-0.5,4.5])
plt.show()
# YOUR CODE HERE
df_cleaned.head(5)
WAGP | AGEP | COW | JWMNP | JWTR | MAR | NWAV | NWLA | NWLK | NWAB | SCHL | WKW | WAGP_CAT | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 52000.0 | 55 | 1.0 | 30.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 20.0 | 1.0 | 1 |
5 | 39000.0 | 63 | 3.0 | 15.0 | 1.0 | 3 | 5.0 | 3.0 | 3.0 | 3.0 | 21.0 | 1.0 | 1 |
11 | 90000.0 | 59 | 1.0 | 10.0 | 1.0 | 1 | 1.0 | 2.0 | 2.0 | 2.0 | 16.0 | 1.0 | 2 |
12 | 46000.0 | 56 | 1.0 | 45.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 18.0 | 1.0 | 1 |
16 | 20000.0 | 72 | 4.0 | 5.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 21.0 | 1.0 | 0 |
""" Rearranging the colums so that the WAGP_CAT column is the first column
And drop WAGP (will make problem trivial otherwise)
XGBoost expects labels to be in the first column.
You don't need to change any code in this cell."""
cols = df_cleaned.columns.tolist()
df_cleaned2 = df_cleaned[cols[-1:] + cols[:-1]].drop('WAGP', axis=1)
df_cleaned2.head()
WAGP_CAT | AGEP | COW | JWMNP | JWTR | MAR | NWAV | NWLA | NWLK | NWAB | SCHL | WKW | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 55 | 1.0 | 30.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 20.0 | 1.0 |
5 | 1 | 63 | 3.0 | 15.0 | 1.0 | 3 | 5.0 | 3.0 | 3.0 | 3.0 | 21.0 | 1.0 |
11 | 2 | 59 | 1.0 | 10.0 | 1.0 | 1 | 1.0 | 2.0 | 2.0 | 2.0 | 16.0 | 1.0 |
12 | 1 | 56 | 1.0 | 45.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 18.0 | 1.0 |
16 | 0 | 72 | 4.0 | 5.0 | 1.0 | 1 | 5.0 | 3.0 | 3.0 | 3.0 | 21.0 | 1.0 |
""" Split the dataset into train, validation, and test sets using sklearn's train_test_split.
Look up the API definition of train_test_split to see what values you need to pass.
First, we'll split the df_cleaned2 dataframe into two parts - train_data and val_data with an 80:20 ratio, and then
we'll split the train_data into train_data and test_data in a 90:10 ratio.
Use the following parameters for train_test_split:
random_state = 42
shuffle = True
train_size = 0.8, test_size = 0.2 for the first split
train_size = 0.9, test_size = 0.1 for the second split"""
train_data, val_data = train_test_split(df_cleaned2, train_size = 0.8, test_size = 0.2)
train_data, test_data = train_test_split(train_data, train_size = 0.9, test_size = 0.1)
len(train_data), len(val_data), len(test_data)
(923601, 256557, 102623)
"""Write prepared data to files.
Refer to the demo to write the train_data, val_data, and test_data to csv files using the .to_csv() method
Use index = False and header = False as the parameters."""
# YOUR CODE HERE
train_data.to_csv('train_data.csv', index = False, header = False)
val_data.to_csv('val_data.csv', index = False, header = False)
test_data.to_csv('test_data.csv', index = False, header = False)
This step is needed for using XGBoost with Amazon Sagemaker. We have provided this code for you, but you should look through them to see what they do.
"""Send data to S3. SageMaker will read training data from S3.
You don't need to change any code in this cell."""
prefix = "classification-person"
key_prefix = prefix + "/model_data"
trainpath = sess.upload_data(
path='train_data.csv', bucket=bucket,
key_prefix=key_prefix)
valpath = sess.upload_data(
path='val_data.csv', bucket=bucket,
key_prefix=key_prefix)
testpath = sess.upload_data(
path='test_data.csv', bucket=bucket,
key_prefix=key_prefix)
trainpath, valpath, testpath
('s3://sagemaker-us-west-2-235208541956/classification-person/model_data/train_data.csv', 's3://sagemaker-us-west-2-235208541956/classification-person/model_data/val_data.csv', 's3://sagemaker-us-west-2-235208541956/classification-person/model_data/test_data.csv')
"""Set up data channels for the training, validation, and test data as shown in the demo.
You'll have to use the TrainingInput function and pass the s3_data and content_type parameters.
"""
s3_input_train = sagemaker.inputs.TrainingInput(s3_data = trainpath, content_type = 'csv')
s3_input_val = sagemaker.inputs.TrainingInput(s3_data = valpath, content_type = 'csv')
s3_input_test = sagemaker.inputs.TrainingInput(s3_data = testpath, content_type = 'csv')
"""Set model output location as shown in the demo.
You don't need to change any code in this cell."""
output_location = "s3://{}/{}/model".format(bucket,prefix)
print('Training artifacts will be uploaded to: {}'.format(output_location))
Training artifacts will be uploaded to: s3://sagemaker-us-west-2-235208541956/classification-person/model
"""We'll create the XGBoost model, and set its hyperparameters.
You don't need to change any code in this cell."""
from sagemaker.amazon.amazon_estimator import image_uris
xgb_image = image_uris.retrieve(framework="xgboost", region=region, version='latest')
"""Create an Estimator using sagemaker.estimator.Estimator.
You'll need to pass the xgb_image and the iam_role parameters.
Use the following values for other parameters:
instance_count = 1
instance_type = ml.m5.xlarge
output_path = output_location
sagemaker_session = sess
"""
xgb = sagemaker.estimator.Estimator(xgb_image,iam_role, instance_count =1, instance_type = 'ml.m5.xlarge',
output_path = output_location, sagemaker_session = sess)
"""Set the hyperparameters for the model. You'll have to use the set_hyperparameters() method.
Refer to the demo for how it's done.
Read the below references for more information:
https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost_hyperparameters.html
https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst#learning-task-parameters
Use the following values for the parameters:
num_class = 5,
max_depth = 2,
min_child_weight = 2,
early_stopping_rounds=5,
objective='multi:softmax',
num_round=100
"""
xgb.set_hyperparameters(num_class = 5,
max_depth = 2,
min_child_weight = 2,
early_stopping_rounds=5,
objective='multi:softmax',
num_round=100)
%%time
"""Use the .fit() method to fit the model using the training and validation data channels.
Execute the XGBoost training job.
NOTE: This step may take several minutes"""
# YOUR CODE HERE
xgb.fit({'train': s3_input_train, 'validation': s3_input_val})
2021-03-16 07:09:24 Starting - Starting the training job... 2021-03-16 07:09:27 Starting - Launching requested ML instancesProfilerReport-1615878564: InProgress ...... 2021-03-16 07:10:52 Starting - Preparing the instances for training... 2021-03-16 07:11:19 Downloading - Downloading input data... 2021-03-16 07:11:52 Training - Training image download completed. Training in progress..Arguments: train [2021-03-16:07:11:49:INFO] Running standalone xgboost training. [2021-03-16:07:11:49:INFO] File size need to be processed in the node: 50.53mb. Available memory size in the node: 7922.14mb [2021-03-16:07:11:49:INFO] Determined delimiter of CSV input is ',' [07:11:49] S3DistributionType set as FullyReplicated [07:11:50] 923601x11 matrix with 10159611 entries loaded from /opt/ml/input/data/train?format=csv&label_column=0&delimiter=, [2021-03-16:07:11:50:INFO] Determined delimiter of CSV input is ',' [07:11:50] S3DistributionType set as FullyReplicated [07:11:50] 256557x11 matrix with 2822127 entries loaded from /opt/ml/input/data/validation?format=csv&label_column=0&delimiter=, [07:11:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [0]#011train-merror:0.434376#011validation-merror:0.434021 Multiple eval metrics have been passed: 'validation-merror' will be used for early stopping. Will train until validation-merror hasn't improved in 5 rounds. [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [1]#011train-merror:0.427299#011validation-merror:0.426151 [07:11:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [2]#011train-merror:0.436585#011validation-merror:0.435521 [07:11:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [3]#011train-merror:0.42727#011validation-merror:0.426128 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [4]#011train-merror:0.427077#011validation-merror:0.425898 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [5]#011train-merror:0.418512#011validation-merror:0.418137 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [6]#011train-merror:0.418722#011validation-merror:0.418301 [07:11:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [7]#011train-merror:0.418301#011validation-merror:0.417895 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [8]#011train-merror:0.418621#011validation-merror:0.418355 [07:11:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [9]#011train-merror:0.41807#011validation-merror:0.417595 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [10]#011train-merror:0.418207#011validation-merror:0.417689 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:58] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [11]#011train-merror:0.418423#011validation-merror:0.417981 [07:11:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:11:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [12]#011train-merror:0.41668#011validation-merror:0.416488 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [13]#011train-merror:0.416329#011validation-merror:0.416067 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [14]#011train-merror:0.411237#011validation-merror:0.411569 [07:12:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [15]#011train-merror:0.411011#011validation-merror:0.411636 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [16]#011train-merror:0.409916#011validation-merror:0.410595 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:02] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [17]#011train-merror:0.408999#011validation-merror:0.40948 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:03] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [18]#011train-merror:0.408908#011validation-merror:0.409379 [07:12:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [19]#011train-merror:0.406369#011validation-merror:0.407071 [07:12:05] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:05] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:05] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:05] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:05] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [20]#011train-merror:0.406109#011validation-merror:0.406791 [07:12:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [21]#011train-merror:0.404927#011validation-merror:0.404986 [07:12:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [22]#011train-merror:0.402881#011validation-merror:0.403509 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:07] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [23]#011train-merror:0.402509#011validation-merror:0.40294 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [24]#011train-merror:0.402359#011validation-merror:0.402682 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:08] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [25]#011train-merror:0.402168#011validation-merror:0.402538 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:09] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [26]#011train-merror:0.40158#011validation-merror:0.401369 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [27]#011train-merror:0.401325#011validation-merror:0.401092 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:10] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [28]#011train-merror:0.401174#011validation-merror:0.400921 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:11] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [29]#011train-merror:0.400976#011validation-merror:0.400753 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [30]#011train-merror:0.400735#011validation-merror:0.400336 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:12] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [31]#011train-merror:0.39998#011validation-merror:0.399475 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [32]#011train-merror:0.399743#011validation-merror:0.399237 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [33]#011train-merror:0.399603#011validation-merror:0.398921 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:14] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:15] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [34]#011train-merror:0.399353#011validation-merror:0.398804 [07:12:15] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:15] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:15] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:15] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:15] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [35]#011train-merror:0.399151#011validation-merror:0.398722 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [36]#011train-merror:0.398506#011validation-merror:0.39804 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:16] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [37]#011train-merror:0.39846#011validation-merror:0.397912 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [38]#011train-merror:0.39829#011validation-merror:0.397732 [07:12:17] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [39]#011train-merror:0.398215#011validation-merror:0.397549 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:18] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [40]#011train-merror:0.398008#011validation-merror:0.397179 [07:12:19] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:19] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:19] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:19] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:19] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [41]#011train-merror:0.397672#011validation-merror:0.396789 [07:12:19] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [42]#011train-merror:0.397514#011validation-merror:0.396653 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [43]#011train-merror:0.397227#011validation-merror:0.39643 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [44]#011train-merror:0.397159#011validation-merror:0.396372 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:21] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [45]#011train-merror:0.396417#011validation-merror:0.395666 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [46]#011train-merror:0.39639#011validation-merror:0.395729 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [47]#011train-merror:0.396184#011validation-merror:0.395569 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:23] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [48]#011train-merror:0.395996#011validation-merror:0.39532 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:24] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [49]#011train-merror:0.395864#011validation-merror:0.395175 [07:12:25] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:25] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:25] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:25] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:25] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [50]#011train-merror:0.395816#011validation-merror:0.395016 [07:12:25] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [51]#011train-merror:0.395575#011validation-merror:0.394762 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:26] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [52]#011train-merror:0.395572#011validation-merror:0.39468 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [53]#011train-merror:0.395499#011validation-merror:0.394544 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [54]#011train-merror:0.395235#011validation-merror:0.394466 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [55]#011train-merror:0.394977#011validation-merror:0.394209 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [56]#011train-merror:0.394816#011validation-merror:0.394006 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:29] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [57]#011train-merror:0.394777#011validation-merror:0.394002 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [58]#011train-merror:0.394588#011validation-merror:0.393905 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [59]#011train-merror:0.394626#011validation-merror:0.393788 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [60]#011train-merror:0.394602#011validation-merror:0.393811 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [61]#011train-merror:0.394327#011validation-merror:0.393515 [07:12:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [62]#011train-merror:0.394154#011validation-merror:0.39346 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [63]#011train-merror:0.394062#011validation-merror:0.393449 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [64]#011train-merror:0.393995#011validation-merror:0.39325 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:34] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [65]#011train-merror:0.3939#011validation-merror:0.393141 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [66]#011train-merror:0.393882#011validation-merror:0.393074 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [67]#011train-merror:0.393686#011validation-merror:0.392856 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [68]#011train-merror:0.393122#011validation-merror:0.392038 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:37] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [69]#011train-merror:0.393013#011validation-merror:0.39189 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [70]#011train-merror:0.392948#011validation-merror:0.391901 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [71]#011train-merror:0.392887#011validation-merror:0.392408 [07:12:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [72]#011train-merror:0.393251#011validation-merror:0.392607 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [73]#011train-merror:0.392295#011validation-merror:0.391582 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:40] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [74]#011train-merror:0.392208#011validation-merror:0.39143 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [75]#011train-merror:0.392188#011validation-merror:0.39134 [07:12:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [76]#011train-merror:0.392125#011validation-merror:0.391359 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:42] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [77]#011train-merror:0.391915#011validation-merror:0.391246 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [78]#011train-merror:0.391902#011validation-merror:0.391219 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [79]#011train-merror:0.391881#011validation-merror:0.391219 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:44] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [80]#011train-merror:0.391878#011validation-merror:0.391219 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [81]#011train-merror:0.391684#011validation-merror:0.391102 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:45] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [82]#011train-merror:0.391662#011validation-merror:0.391087 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [83]#011train-merror:0.391607#011validation-merror:0.39109 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [84]#011train-merror:0.391501#011validation-merror:0.391098 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [85]#011train-merror:0.391503#011validation-merror:0.391016 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [86]#011train-merror:0.391455#011validation-merror:0.390962 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [87]#011train-merror:0.391377#011validation-merror:0.390962 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:49] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [88]#011train-merror:0.391306#011validation-merror:0.390942 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [89]#011train-merror:0.391225#011validation-merror:0.390786 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [90]#011train-merror:0.391346#011validation-merror:0.390673 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:51] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [91]#011train-merror:0.391331#011validation-merror:0.390658 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [92]#011train-merror:0.391254#011validation-merror:0.390673 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:52] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [93]#011train-merror:0.391189#011validation-merror:0.390619 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [94]#011train-merror:0.391096#011validation-merror:0.390666 [07:12:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [95]#011train-merror:0.391068#011validation-merror:0.390564 [07:12:54] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [96]#011train-merror:0.390947#011validation-merror:0.390369 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [97]#011train-merror:0.390919#011validation-merror:0.390369 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [98]#011train-merror:0.390785#011validation-merror:0.390443 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:56] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [07:12:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2 [99]#011train-merror:0.390777#011validation-merror:0.390451 2021-03-16 07:13:12 Uploading - Uploading generated training model 2021-03-16 07:13:12 Completed - Training job completed Training seconds: 111 Billable seconds: 111 CPU times: user 478 ms, sys: 62.9 ms, total: 541 ms Wall time: 4min 12s
%%time
"""Deploy the model so that it can be used for inference.
Use the .deploy() method to deploy your model.
Use the following values for the parameters:
initial_instance_count = 1,
instance_type = 'ml.t2.medium',
serializer = sagemaker.serializers.CSVSerializer(),
"""
xgb_predictor = xgb.deploy(initial_instance_count = 1,
instance_type = 'ml.t2.medium',
serializer = sagemaker.serializers.CSVSerializer())
-----------------!CPU times: user 242 ms, sys: 18.2 ms, total: 261 ms Wall time: 8min 32s
The code has been given for you. Read through and see what it is doing.
"""You don't need to change any code in this cell."""
import numpy as np
test_data_array = test_data.drop(['WAGP_CAT'], axis=1).values #load the data into an array
test_data.head(1)
predictions = xgb_predictor.predict(data=test_data_array).decode('utf-8') # predict!
predictions_array = np.fromstring(predictions[1:-1], sep=',') # and turn the prediction into an array
print(predictions_array.shape)
y_true = np.array(test_data['WAGP_CAT'].values)
y_pred = predictions_array
(102623,)
The code for this is given to you. Read and see how the functions are being used.
from sklearn.metrics import confusion_matrix, classification_report
""" Use the confusion_matrix and the classification_report methods to see how your model performs on the test set.
You don't need to change any code in this cell.
"""
print(confusion_matrix(y_true, y_pred))
print(classification_report(y_true, y_pred))
[[43326 9643 458 4 1] [12601 17585 969 2 2] [ 2687 8398 1474 5 4] [ 526 2258 906 2 2] [ 261 902 595 10 2]] precision recall f1-score support 0 0.73 0.81 0.77 53432 1 0.45 0.56 0.50 31159 2 0.33 0.12 0.17 12568 3 0.09 0.00 0.00 3694 4 0.18 0.00 0.00 1770 accuracy 0.61 102623 macro avg 0.36 0.30 0.29 102623 weighted avg 0.56 0.61 0.57 102623
"""Delete the endpoint once it has served its purpose.
You don't need to change any code in this cell."""
xgb_predictor.delete_endpoint()
We'll use do hyperparameter tuning on two hyperparameters:
We'll use a Random
search strategy since that's more effective than searching all possible combinations of hyperparameters.
Tasks:
"""We use the Hyperparameter Tuner
Read through the following links for more information:
https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html
https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-automatic-model-tuning-now-supports-random-search-and-hyperparameter-scaling/
"""
from sagemaker.tuner import IntegerParameter
# Define exploration boundaries
hyperparameter_ranges = {'min_child_weight': IntegerParameter(1,10), 'max_depth':IntegerParameter(1,10)}
# create Optimizer
Optimizer = sagemaker.tuner.HyperparameterTuner(
estimator=xgb,
hyperparameter_ranges=hyperparameter_ranges,
base_tuning_job_name='XGBoost-Tuner',
objective_type='Minimize',
objective_metric_name='validation:merror',
max_jobs=5,
max_parallel_jobs=5,
strategy='Random')
%%time
"""Now that we have created the Optimizer. We need to call .fit() on it to start the tuning job.
Refer to the demo and see how to call fit() and pass the appropriate data channels.
"""
# YOUR CODE HERE
Optimizer.fit({'train':s3_input_train, 'validation':s3_input_val})
...................................................................! CPU times: user 290 ms, sys: 41.4 ms, total: 332 ms Wall time: 5min 38s
The code is given to you for getting the results of the tuning job in a dataframe.
"""Get the tuner results in a dataframe.
You don't need to change any code in this cell."""
results = Optimizer.analytics().dataframe()
results
max_depth | min_child_weight | TrainingJobName | TrainingJobStatus | FinalObjectiveValue | TrainingStartTime | TrainingEndTime | TrainingElapsedTimeSeconds | |
---|---|---|---|---|---|---|---|---|
0 | 6.0 | 5.0 | XGBoost-Tuner-210316-0723-005-2aebcf90 | Completed | 0.387430 | 2021-03-16 07:25:47+00:00 | 2021-03-16 07:28:04+00:00 | 137.0 |
1 | 8.0 | 9.0 | XGBoost-Tuner-210316-0723-004-660e69e6 | Completed | 0.387041 | 2021-03-16 07:26:10+00:00 | 2021-03-16 07:28:33+00:00 | 143.0 |
2 | 4.0 | 6.0 | XGBoost-Tuner-210316-0723-003-37995e37 | Completed | 0.388966 | 2021-03-16 07:26:09+00:00 | 2021-03-16 07:28:03+00:00 | 114.0 |
3 | 5.0 | 7.0 | XGBoost-Tuner-210316-0723-002-9397f9f1 | Completed | 0.387684 | 2021-03-16 07:26:00+00:00 | 2021-03-16 07:28:25+00:00 | 145.0 |
4 | 1.0 | 2.0 | XGBoost-Tuner-210316-0723-001-4a2fb388 | Completed | 0.427258 | 2021-03-16 07:25:43+00:00 | 2021-03-16 07:26:37+00:00 | 54.0 |
""" See the best hyperparameters found by the optimizer.
You don't need to change any code in this cell."""
Optimizer.best_estimator().hyperparameters()
2021-03-16 07:28:33 Starting - Preparing the instances for training 2021-03-16 07:28:33 Downloading - Downloading input data 2021-03-16 07:28:33 Training - Training image download completed. Training in progress. 2021-03-16 07:28:33 Uploading - Uploading generated training model 2021-03-16 07:28:33 Completed - Training job completed
{'_tuning_objective_metric': 'validation:merror', 'early_stopping_rounds': '5', 'max_depth': '8', 'min_child_weight': '9', 'num_class': '5', 'num_round': '100', 'objective': 'multi:softmax'}
"""Use the .deploy() method to deploy the best model found by the Optimizer.
If you call Optimizer.deploy() method, it will deploy the best model it found.
Use these parameters when calling deploy:
initial_instance_count=1,
instance_type= 'ml.t2.medium',
serializer = sagemaker.serializers.CSVSerializer().
Refer to the demo if you are unsure of what to do."""
tuned_model_predictor = Optimizer.deploy(initial_instance_count = 1, instance_type = 'ml.t2.medium', serializer = sagemaker.serializers.CSVSerializer())
2021-03-16 07:28:33 Starting - Preparing the instances for training 2021-03-16 07:28:33 Downloading - Downloading input data 2021-03-16 07:28:33 Training - Training image download completed. Training in progress. 2021-03-16 07:28:33 Uploading - Uploading generated training model 2021-03-16 07:28:33 Completed - Training job completed ---------------!
We've given the code for testing the tuned model.
"""You don't need to change any code in this cell."""
predictions_tuned = tuned_model_predictor.predict(data=test_data_array).decode('utf-8') # predict!
predictions_array_tuned = np.fromstring(predictions_tuned[1:-1], sep=',') # and turn the prediction into an array
print(predictions_array_tuned.shape)
y_true = np.array(test_data['WAGP_CAT'].values)
y_pred = predictions_array_tuned
# Print the confusion matrix to compare with the initial model.
print(confusion_matrix(y_true, y_pred))
print(classification_report(y_true, y_pred))
"""You should see that the tuned model gives you better performance in the f1-score for each (or most) of
the classses.
If not, then you're probably doing something wrong."""
(102623,) [[42776 10090 564 2 0] [11862 17796 1496 3 2] [ 2434 8021 2086 23 4] [ 487 1965 1204 31 7] [ 244 803 694 22 7]] precision recall f1-score support 0 0.74 0.80 0.77 53432 1 0.46 0.57 0.51 31159 2 0.35 0.17 0.22 12568 3 0.38 0.01 0.02 3694 4 0.35 0.00 0.01 1770 accuracy 0.61 102623 macro avg 0.46 0.31 0.31 102623 weighted avg 0.59 0.61 0.58 102623
"You should see that the tuned model gives you better performance in the f1-score for each (or most) of \nthe classses.\nIf not, then you're probably doing something wrong."
"""You don't need to change any code in this cell."""
tuned_model_predictor.delete_endpoint()
You need to submit a screenshot of terminated endpoints and notebook instances once you are done with the assignment. Nothing should be in green in this screenshot since all running instances are shown in green.
You can take the screenshot of the Dashboard once you go to Amazon SageMaker.