Оценка алгоритма машинного обучения изменяется без каких-либо изменений в данных или шаге - PullRequest
0 голосов
/ 25 декабря 2018

Я новичок в машинном обучении и начинаю с проблемы Titanic на Kaggle.Я написал простой алгоритм для прогнозирования результата на тестовых данных.

Мой вопрос / путаница заключается в том, что каждый раз, когда я выполняю алгоритм с одним и тем же набором данных и одними и теми же шагами, значение оценки изменяется (последнее утверждение вкод).Я не могу понять это поведение?

Код:

# imports
import numpy as np
import pandas as pd

from sklearn.tree import DecisionTreeClassifier

# load data
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
results = pd.read_csv('gender_submission-orig.csv')

# prepare training and test dataset
y = train['Survived']
X = train.drop(['Survived', 'SibSp', 'Ticket', 'Cabin', 'Embarked', 'Name'], axis=1)
test = test.drop(['SibSp', 'Ticket', 'Cabin', 'Embarked', 'Name'], axis=1)
y_test = results['Survived']

X = pd.get_dummies(X)
test = pd.get_dummies(test)

# fill the missing values
age_median = X['Age'].median()
fare_median = X['Fare'].median()

X['Age'] = X['Age'].fillna(age_median)
test['Age'].fillna(age_median, inplace=True)
test['Fare'].fillna(fare_median, inplace=True)

# train the classifier and predict
clf = DecisionTreeClassifier()
clf.fit(X, y)
predict = clf.predict(test)

# This is the score which changes with execution.
print(round(clf.score(test, y_test) * 100, 2)) 

1 Ответ

0 голосов
/ 25 декабря 2018

Это обычное разочарование, с которым сталкиваются новички в этой области.Причина заключается в присущей этому алгоритму случайности, и простое и понятное решение, как уже было предложено в комментариях, заключается в явной установке состояния (начального числа) генератора случайных чисел, например:

clf = DecisionTreeClassifier(random_state=42) 

Но при разных значениях оценка также меняется.Так как же найти оптимальное или правильное значение?

Опять же, это ожидаемо и не может быть преодолено: этот тип случайности является фундаментальным и необратимым, за который вы просто не можете выйти.Установка случайного начального числа, как предложено выше, просто обеспечивает воспроизводимость конкретной модели / сценария, но найти любое «оптимальное» значение в том смысле, в каком вы здесь это подразумеваете (то есть относительно случайных частей), невозможно.Статистически говоря, результаты, полученные при различных значениях случайного начального числа, должны быть схожими (в статистическом смысле), но точное количественное определение этого сходства является упражнением в строгой статистике, выходящей далеко за рамки этого поста.

Случайность часто является неинтуитивной областью, и сами генераторы случайных чисел (ГСЧ) являются странными животными ... Как общее примечание, вам может быть интересно знать, что ГСЧ даже не "совместимы" на разных языках ирамки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...