Часть 1. Стандартное отклонение и важность функции

Сегодня мы обсудим техники интерпретации, некоторые известные, некоторые новые. Методы интерпретации помогают нам лучше понять наш набор данных и, следовательно, лучше обучить модель. Эти методы более удобны и полезны, когда вы не уверены в своих результатах и, возможно, когда хотите занять первое место в таблице лидеров kaggle. В этом посте я расскажу о двух методах интерпретации. Давайте начнем. Я использую библиотеку fastai. Я также рекомендую читателям просмотреть мой предыдущий пост, чтобы лучше понять нижеследующий пост.

Вы уверены в своих прогнозах?

Как правило, если у нас есть десять оценщиков и для каждой отдельной строки нашего набора данных проверки, мы прогнозируем результат всех оценщиков, берем среднее значение всех прогнозов и сравниваем его с тем, которое у нас уже есть. Но что, если мы хотим знать, насколько мы уверены в каждой оценке?
Вот очень интересные идеи стандартного отклонения. Вместо того, чтобы просто брать среднее значение прогнозов, мы должны также сосредоточиться на стандартном отклонении прогнозов. Если стандартное отклонение оказывается значительным, это означает, что все прогнозы сильно отличаются друг от друга. Таким образом, каждый оценщик сильно отличается от другого. Следовательно, нам нужно снова рассмотреть наши гиперпараметры, прежде чем мы сможем передать нашу модель в производство - это не относится к среднему среднему прогнозу. Если наше стандартное отклонение окажется меньше, то мы также уверены в наших оценках. Таким образом, стандартное отклонение прогнозов по деревьям дает нам, по крайней мере, относительное понимание того, насколько мы уверены в этом прогнозе. Это не то, что существует в научно-образовательных программах, поэтому мы должны это создать.

Вычислить стандартное отклонение прогнозов несложно.

m = RandomForestRegressor(n_estimators=40, min_samples_leaf=3, 
 max_features=0.5, n_jobs=-1, oob_score=True)
preds = np.stack([t.predict(validation_dataset) for t in m.estimators_]) 
(validation dataset is the dataset without dependent variable.)
np.std(preds[:,0])

Вычислить стандартное отклонение удобнее, когда у нас меньше набора данных для определенного типа. В этом случае отклонение значений может иметь огромное значение, и поэтому мы можем быть не уверены в своих решениях.

Хвалит! Теперь вы, несомненно, смелее относитесь к своему набору данных.

Какие функции более важны, а какие нет?

Теперь мы собираемся обсудить самое важное при обучении вашей модели, а именно: ВАЖНОСТЬ ФУНКЦИЙ. Это так очевидно и в реальной жизни, что мы сосредотачиваемся только на вещах, которые действительно имеют значение или которые имеют большее влияние, чем другие, по-разному. То же самое и с нашей моделью. Разве не было бы лучше, если бы мы могли узнать о более важных функциях в нашем наборе данных, а затем сосредоточиться только на этих параметрах, а не на всей совокупности параметров? ДА, это так лучше и меньше нагрузки на нашу модель. Итак, давайте подробно рассмотрим этот термин.

Библиотека Fastai предоставляет удобный метод для расчета важности функции, то есть rf_feat_importance. Он возвращает фрейм данных pandas со столбцами и их важностью, отсортированными в порядке убывания.

Теперь, когда на вашей стороне есть важные функции, вы можете тренировать свою модель с помощью той, которая имеет значение. Действительно, прогноз вашей модели не ухудшится из-за важности функции. Он либо останется прежним, либо может поправиться на любую величину. Если в непредвиденном сценарии ситуация ухудшится, это означает, что функции независимы друг от друга и вообще не являются избыточными. В этом случае вы должны учитывать все особенности. Неудача!
Вообще говоря, если ваша оценка валидации ухудшается после разработки функции, то это может быть вызвано двумя причинами.

  • Переобучение: если вы переобучаете, это означает, что вы используете значительный набор данных с небольшим set_rf_samples и применили разработку функций, соответствующую этому небольшому объему данных. Вы не приняли во внимание варианты, которые могут быть полезны для обучения вашего набора данных. Вы, безусловно, должны быть отличным практиком, чтобы решать такие проблемы.
  • Неожиданные условия. Вторая причина, по которой ваш результат проверки может ухудшиться. Если вы не переобучаете, это означает, что вы делаете что-то правильно в обучающем наборе, но не точно в проверочном наборе. Таким образом, это может произойти только в том случае, если ваш набор для проверки не является случайной выборкой.

Насколько мощна любая характеристика?

  1. Мы традиционно обучаем нашу модель.
  2. Теперь, если мы хотим подсчитать, насколько важна наша функция, есть два способа.
    a. Удалите соответствующую независимую переменную из набора данных и обучите свою модель. Затем сравните результат, который может быть RMSE, R² или любой другой метрикой в ​​зависимости от TnC соревнования kaggle.
    b. Перемешайте значения столбца независимых переменных, а затем обучите свою модель.
  3. Если вы удалите столбец, а затем сравните результаты, у этого подхода есть определенные недостатки.
    a. Во-первых, это займет очень много времени.
    б. Во-вторых, вы недооцениваете взаимодействия между переменными.
  4. Таким образом, перетасовка ценностей, вероятно, является интеллектуальным подходом. Если мы их перемешаем, это добавит случайности, и мы сможем фиксировать взаимодействия и важность функции.
  5. Таким образом, вы знаете о жизненно важных столбах.

Что такое утечка данных?
Утечка данных - это проблема, при которой мы обучаем нашу модель информации, которая не имеет большого значения, или информации, которая не требуется в противном случае, чтобы наша модель предсказывала что-то трудно переварить. Эта информация может поступать извне.

Утечка данных - проблема в основном в сложных наборах данных. Один из способов узнать об этом - иметь правильный набор для проверки, чтобы прогнозируемые значения значительно отличались в наборе данных для обучения и проверки.

Я расскажу о других техниках интерпретации во втором сезоне.