Может кто-нибудь дать хорошее объяснение по математике / статистике относительно того, что параметр var_smoothing делает для GaussianNB в scikit learn? - PullRequest
0 голосов
/ 22 сентября 2019

Я знаю об этом параметре var_smoothing и о том, как его настроить, но мне хотелось бы получить объяснение с точки зрения математики / статистики, которое объясняет, что это на самом деле делает настройка - я не смог найти ни одного хорошего в Интернете.

1 Ответ

1 голос
/ 22 сентября 2019

Я просмотрел репозиторий Scikit-learn и нашел следующий код и оператор:

# If the ratio of data variance between dimensions is too small, it
# will cause numerical errors. To address this, we artificially
# boost the variance by epsilon, a small fraction of the standard
# deviation of the largest dimension.


self.epsilon_ = self.var_smoothing * np.var(X, axis=0).max()

In Stats , функция распределения вероятностей, такая как Gaussianзависит от сигмы ^ 2 (дисперсия);и чем больше дисперсия между двумя признаками, тем меньше корреляционная и лучшая оценка, так как наивный байесовский, как используемая модель, является iid (в основном, предполагается, что признак независим).

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

Теперь будет интересно выяснить, можем ли мы использовать это значение для дальнейшего контроля, например, для избежания чрезмерной подгонки.поскольку этот новый самоэпсилон добавляется в дисперсию (сигма ^ 2) или стандартные отклонения (сигма).

...