Подготовьтесь к следующему собеседованию по машинному обучению

  1. Объясните, пожалуйста, разницу между машинным обучением, глубоким обучением и ИИ.
    Искусственный интеллект (ИИ) — это когда машина может эмулировать поведение разумного человека для выполнения какой-либо задачи. Каждый раз, когда компьютер использует алгоритм для решения проблемы, это можно назвать ИИ. Но мы обычно резервируем термин ИИ для случаев, когда машина может выполнять задачу более эффективно и продуктивно, чем человек.
    Машинное обучение (МО) — это особый тип ИИ. Идея состоит в том, чтобы избежать необходимости в том, чтобы человек обучал компьютер каждому шагу решения. Вместо этого компьютер должен улучшать свою производительность, учась на собственном опыте.
    В рамках машинного обучения существуют различные подразделения. Во-первых, это неконтролируемое обучение. Именно здесь машина самостоятельно распознает закономерности в данных. Цель может состоять в том, чтобы разделить элементы на отдельные группы; или определить наиболее важные функции и, таким образом, уменьшить число переменных, которые необходимо решить.
    Во-вторых, контролируемое обучение. Здесь вы сами сообщаете машине, как должна быть идентифицирована группа примеров элементов. Это можно сделать двумя способами. Либо по классификации, которая разбивает элементы на отдельные категории; или с помощью регрессии, где значение метки может быть любым числом в непрерывном диапазоне. После обучения модели машинного обучения для изучения структуры известных выборочных данных вы можете затем применить модель к новым неизвестным элементам, которые модель попытается правильно идентифицировать на основе заданных функций.
    Глубокое обучение (ГО) — это определенный тип машинного обучения. Цель DL состоит в том, чтобы компьютер обучался без того, чтобы человеку даже приходилось его обучать. DL делает это, используя искусственные нейронные сети (ИНС). ИНС содержит несколько «слоев», которые используются для распознавания различных функций в данных. Первый слой распознает самые простые признаки. Последовательные слои определяют более тонкие особенности. В отличие от большинства обычных ML, в которых человек должен конкретно выбирать функции, в DL модель выбирает их абстрактно сама по себе. Преимущество DL заключается в том, что его прогнозы намного точнее, чем у типичного ML. Однако, к сожалению, алгоритм ГО требует больше данных и времени для обучения, чем обычный МО.
  2. Выберите один из следующих алгоритмов: XGBoost, SVM, логистическая регрессия, случайный лес и напишите следующее.
    Краткое описание алгоритма и того, как он работает
    Случайный Алгоритм леса основан на деревьях решений. Дерево решений последовательно разбивает ваши данные на отдельные категории. Этот процесс повторяется до тех пор, пока все элементы не будут аккуратно отсортированы в окончательные подгруппы, называемые «листьями». В идеале все элементы в листе будут иметь одну и ту же метку.
    Дерево делает это ветвление наиболее эффективным способом. Как? Потому что особенности, на которых основано каждое разделение, тщательно подобраны, чтобы свести к минимуму любой беспорядок. Это приводит к быстрой и аккуратной категоризации.
    Теперь ваше дерево может брать новый элемент, который еще не помечен, и передавать его функции через «ветви» дерева, пытаясь угадать правильную метку.
    К сожалению, единственное дерево решений не очень хорошо идентифицирует элементы, которых нет в его тренировочном наборе! Случайный лес помогает решить эту проблему. Как же так? Случайный лес создает коллекцию деревьев. Каждое дерево основано на случайных выборках ваших обучающих данных. Затем каждое дерево пытается пометить ваш новый загадочный предмет. Затем случайные леса сообщают вам ответ, за который проголосовало большинство деревьев. Это дает вам довольно точный ответ.
    Приятным преимуществом случайных лесов является эффективный способ их тестирования. Другие типичные алгоритмы должны быть проверены и протестированы на части элементов, извлеченных из обучающих данных. Это не только требует дополнительных вычислений, но и эффективно уменьшает количество данных, которые у вас есть для обучения. Однако случайные леса, если вы хотите, могут исключить части ваших данных уже тогда, когда они случайным образом создали все эти деревья решений. Это позволяет легко оценить, насколько хорошо деревья идентифицируют исключенные данные, и определить, какая ошибка размера будет ожидаться в будущих примерах.
    Обзор параметров алгоритма и описание лучших из них
    У Random Forest есть несколько параметров. Я перечислю и кратко определю их все. Но самые важные из них, которые появятся вверху моего списка, я опишу чуть подробнее.
    1. n_estimators — общее количество деревьев. Наличие большего количества деревьев — это хорошо, потому что это сделает вашу модель более согласованной (то есть уменьшит дисперсию). И наличие большего количества деревьев не приведет к переоснащению. Обратной стороной является то, что большее количество деревьев требует больше вычислений и, следовательно, требует больше времени и, следовательно, денег. Лучше выбрать несколько сотен. Затем постепенно добавляйте деревья в модель, пока производительность не достигнет плато.
    2. max_depth определяет, сколько раз каждое дерево будет разделяться. Наличие большего дерева позволит вам подобрать более сложные шаблоны. С другой стороны, существует большая опасность переподгонки вашей модели под шум тренировочного набора. Настройте размер дерева для повышения производительности. Вы хотите балансировать между чрезмерным и недостаточным подбором.
    3. max_features — это количество функций, которые следует учитывать, когда вы хотите сделать наилучшее разделение. Если вы примете во внимание больше функций, у вас больше шансов добиться более качественного разделения. С другой стороны, это также сделает вашу модель очень зависимой от конкретного используемого тренировочного набора. Это плохо, потому что это приводит к тому, что ваша модель имеет непостоянный уровень точности (т.е. высокую дисперсию). Рекомендуется установить значение квадратного корня из общего количества функций. (Это для классификации. Для регрессии используйте 1/3 от общего числа.) Ручная настройка может повысить производительность.
    4. min_samples_leaf — это количество элементов, которые должны существовать в конечном узле, т. е. оставаться на каждой стороне разделения. Другими словами, сколько элементов должно быть минимально в каждом конечном узле.
    5. oob_score — хотите ли вы оценить точность, используя элементы, пропущенные в начальной загрузке.
    6. max_leaf_nodes — сколько вы хотите до предела общего количества листьев на деревьях.
    7. min_samples_split — количество элементов, необходимое для запуска следующего разделения.
    8. min_weight_fraction_leaf — это минимально взвешенная доля суммы весов (всех входных выборок), которая должна быть на листе узел. [Я пока не понимаю эту идею.]
    9. min_impurity_decrease — это то, насколько вы хотите, чтобы каждое разделение уменьшало беспорядок.
    10. min_impurity_split определяет, насколько несортированным должен быть узел, чтобы впоследствии снова разбить его.
    11. bootstrap определяет, хотите ли вы создавать деревья на основе только части или всех элементов в наборе образцов.
    12. n_jobs — это количество задач, которые вы хотите запустить параллельно для подбора и прогнозирования.
    13. random_state — это способ генерации произвольных чисел для последовательного разделения ваших данных.
    14. verbose – это то, сколько активности в журнале вы хотите, чтобы компьютер сообщал во время подбора и прогнозирования.
    15. warm_start используется, если вы хотите повторно применить алгоритм, основанный на старом лесу, но теперь с новая расширенная версия, т.е. больше деревьев.
    16. критерий — это функция, с помощью которой вы хотите измерить качество разделения, например, Джини.
    17. class_weight — если вы хотите, чтобы элементы одной категории оказали большее влияние, чем другие.

Как использовать алгоритм (найдите библиотеку с открытым исходным кодом и опишите шаги по ее использованию)
Вы можете использовать случайный лес в соответствии со следующими шагами. (Я был бы рад включить все строки кода, но я не верил, что вы хотите, чтобы я это сделал.)
1. Выберите столбец вашего фрейма данных, который содержит свойство, которое вы хотите предсказать. Это ваша «цель». Мы будем называть его у.
2. Выберите столбец вашего фрейма данных, который содержит входные функции или «независимые переменные». Мы называем это X.
3. Используйте train_test_split, чтобы разделить ваши данные на обучающие и проверочные данные для X и y. Сделайте это случайным образом с помощью генератора чисел. Используйте семя, чтобы каждый раз получать одно и то же деление. Теперь у вас должны быть train_X, val_X, train_y, val_y.
4. Теперь используйте модель — RandomForestRegressor или Classifier, в зависимости от вашего случая — чтобы соответствовать вашим обучающим данным.
5. Генерируйте прогнозы после проверки set (val_X).
6. Используйте mean_absolute_error, чтобы показать разницу между фактическими значениями вашего проверочного набора (val_y) и только что сделанными вами прогнозами.