Современное машинное обучение основано на поиске "наилучшего" решение среди заданного класса моделей. Алгоритм машинного обучения -- путь поиска того самого "наилучший" решения.
На практике это проще, чем задача "автоматически выдвигать гипотезу". Все машинное обучение сводится к поиску минимума или максимума заранее заданной функции (функции ошибок или функции качества соответственно).
Как это происходит?
1. Разработчик определяет функцию ошибок L, которую алгоритм машинного обучения должен оптимизировать. Например, в предсказании времени движения по маршруту на картах это может быть отклонение предсказанного времени в пути от его реального значения.
2. Выбирает класс моделей. Например, это может быть линейная функция, то есть y = w' * x + b (= w1 * x1 + w2 * x2 + ... + wN * xN + b), где y - предсказанное значение (время в пути), x = (x1, x2, ..., xN) - вектор признаков (например, время суток, среднее значение загруженности по маршруту, длина маршрута и прочее), (w, b) = (w1, w2, ..., wN, b) - вектор параметров модели.
3. Собирает обучающую выборку. В простом случае при обучении "с учителем" она состоит из значений признаков x и реальных значений целевого значения y.
4. Находит "наилучшие" значения параметров модели с точки зрения функции ошибок, то есть те значения (w, b), которые минимизируют функцию ошибок на обучающей выборке.