Почему конечная точность является проблемой в машинном обучении?

Ответы:

4

Конечная точность - это десятичное представление числа, которое было округлено или усечено. Есть много случаев, когда это может быть необходимо или целесообразно. Например, 1/3 и трансцендентные числа и имеют бесконечное десятичное представление. В языке программирования C двойное значение составляет 8 бит и имеет точность приблизительно до 16 цифр. Посмотреть здесь.еπ

http://www.learncpp.com/cpp-tutorial/25-floating-point-numbers/

Чтобы конкретно представить одно из этих чисел на (конечном) компьютере, должен быть какой-то компромисс. Мы могли бы написать от 1/3 до 9 цифр как .333333333, что меньше 1/3.

Эти компромиссы дополняются арифметическими операциями. Нестабильные алгоритмы подвержены арифметическим ошибкам. Вот почему SVD часто используется для вычисления PCA (нестабильность ковариационной матрицы).

http://www.sandia.gov/~smartin/presentations/SMartin_Stability.pdf

https://en.wikipedia.org/wiki/Numerical_stability

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

https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Multinomial_naive_Bayes


источник
Спасибо. Можете ли вы объяснить, как svd решает проблему в PCA и как сбор суммы логов уменьшает проблему? Где эта сумма бревен используется в наивном байесовском классификаторе?
GeorgeOfTheRF
Это более глубокие вопросы, но я могу дать некоторые советы. это "решает" это, потому что вы можете получить PCA от SVD. Смотрите здесь для отличной статьи: arxiv.org/pdf/1404.1100.pdf . SVD является предпочтительным из-за отсутствия ковариационной матрицы в ее вычислениях. Сумма бревен в наивном Байесе: blog.datumbox.com/...