Как ребенок в кондитерской, я рад сообщить, что я прошел курс профессора Эндрю Нга Введение в машинное обучение на Coursera. На этом 11-недельном курсе я стремился объединить свои статистические знания и опыт в области прогнозной аналитики с искусственным интеллектом и машинным обучением (AI / ML). Проведя более 11 недель, я могу сказать, что это хороший начальный курс по AI / ML, и хотел бы поделиться своими мыслями о начале работы с такими курсами машинного обучения, как эти:

  • Полезны (хотя и не обязательны) вводная статистика и немного математических знаний. По мере того, как в курсе рассматриваются градиенты и ошибки в квадрате суммы, это помогает понять, почему градиенты являются производными и почему мы используем ошибки в квадрате суммы, чтобы вычислить функцию стоимости. Конечно, пройти курс можно, но это может быть не так просто, не понимая лежащих в основе математических концепций.
  • Если бы у меня было больше опыта в программировании, я думаю, было бы немного легче начать работу. Я начал с более ограниченным опытом программирования, но выполнение заданий бросило мне вызов не только по статистике, но и по реализации разработки. В частности, у меня изначально была инерция, когда я приступал к заданиям, потому что я не знал, с чего начать. Теперь мне намного удобнее не только читать код, но и заниматься функциональным программированием. В результате я оценил внимание, которое мы начали с использования версии MATLAB с открытым исходным кодом, называемой Octave.
  • Используйте ресурсы, сообщество и учебные пособия, поскольку они могут быть чрезвычайно полезны для завершения курса. Необязательно решать задания, строго следуя советам и рекомендациям. Попробуйте векторизацию и даже свой собственный подход.
  • В конце курса я понял, как продвигаться по нему быстрее. Например, я работал над заданием для 9-й недели и одновременно смотрел видео с лекциями для 10-й недели. Поразмыслив, я смог удвоить свою недельную скорость работы. Кроме того, я смотрел видео со скоростью 1,5–2 раза. Записи тоже действительно помогают.

Сравнивая свой опыт в области прогнозной аналитики с тем, что я изучил в этом курсе, я могу определенно сказать, что в области статистики существует немало концептуальных совпадений. Мой опыт был в контексте линейной / многомерной / логистической регрессии, деревьев решений и K-средних с использованием приложений типа Excel. Например, мой контекст был связан с поддержкой принятия решений о покупке клиентами, такими как просмотр набора демографических или исторических данных клиентов, чтобы предсказать их вероятность покупки в будущем.

Подобно концепциям машинного обучения, набор данных будет разделен на наборы данных для обучения и проверки. Набор данных для обучения - это набор данных, который имеет независимые входные переменные и фактические результаты результата (например, 1 для покупки или 0 для нет). Основываясь на наборе обучающих данных, алгоритм с бета-версиями (или называемый Thetas) будет «обучен» с помощью различных подходов, таких как различные регрессии. Выбирая лучший подход и затем применяя их к набору данных «слепой» проверки, применяются данные из набора проверки, чтобы увидеть, были ли результаты столь же эффективными.

Помимо моего опыта в области прогнозной аналитики, этот курс машинного обучения научил меня многим ключевым концепциям и советам:

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

  • Регуляризация (лямбда) может использоваться для уменьшения переобучения.
  • F-Score (2 * Precision * Recall) / (Precision + Recall) позволяет вычислить эффективность алгоритма, а не просто смотреть на точность или отзыв отдельно.
  • Как визуальный ученик, я могу оценить, что три измерения дают возможность строить и визуализировать набор данных. Однако в машинном обучении возможностей (и измерений) гораздо больше, чем может постичь человеческий разум. Следовательно, анализ главных компонентов (PCA) позволяет уменьшить размеры до плоскости или линии поверхности. Что еще более важно, это действительно сделано для повышения производительности алгоритма обучения при уменьшении размерности.

  • Когда у вас самый большой набор данных, вычисление градиентного спуска может занять много времени и очень дорого, если вы используете пакетный метод, который суммирует всю частную производную функции стоимости обучающего набора. Введите такие методы, как стохастический и мини-пакетный, который либо берет один пример перед обновлением тета, либо гибрид пакетного и стохастического.

«Побеждает не тот, у кого лучший алгоритм, а тот, у кого больше всего данных». - Эндрю Нг

Хотя этот курс был вводным, он пробудил во мне интерес к продолжению изучения сокращения карты, Python и глубокого обучения. Сокращение карты используется для ускорения выполнения алгоритма обучения за счет разделения работы на несколько машин. Python кажется наиболее практичным и распространенным местом для работы в машинном обучении, поскольку я разговаривал с коллегами, поэтому я расширяю свой опыт работы с Python, работая с курсом Хосе Портиллы, который охватывает диапазон от numpy и анализа данных до визуализации данных. в пандах и тому подобное.