Машинное обучение

Ноу-хау для эффективного изучения алгоритмов машинного обучения

Хотел бы я знать это, когда начал самообучаться.

Фон:

Несколько дней назад мой друг посмеялся надо мной и сказал: «Почему вы так долго изучаете машинное обучение? Всего несколько моделей, я их выучила за неделю ». Это были его точные слова. Я просто улыбнулся ему и спросил, что он узнал. Он назвал несколько алгоритмов машинного обучения. Я спросил его, что именно он узнал, а затем последовал очевидный ответ - использование методов подбора и прогнозирования Склерна и краткий обзор того, как работает этот алгоритм.

Со злой улыбкой на лице я спросил его, что он сделает, чтобы получить лучшие параметры? Как модель узнает лучший вес? Что мы делаем, когда у нас требуется низкая задержка? Хотя это не какие-то сложные вопросы, Он сидел и молча смотрел мне в лицо, я смеялся последним.

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

Большинство из нас просто смотрят несколько видеороликов на YouTube и заявляют, что знакомы с машинным обучением, и довольно быстро осознают свою ошибку. Всем, кто занимается самообучением, просто помните, что сотни тысяч таких же людей, как вы и я, изучаем машинное обучение / науку о данных. Помните, что мы будем соревноваться с людьми, имеющими степень магистра / доктора философии. в областях, связанных с наукой о данных. Итак, чтобы быть конкурентоспособными с ними, нам нужно быть действительно сильными, используя наши основы.

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

Честно говоря, большинство этих курсов посредственные и не содержат всесторонних. Ну, есть несколько хороших курсов, но каждый из них предлагает разную учебную программу. Немногие из них подробно рассматривают математическую часть, немногие хороши в части кодирования и так далее. Так что сегодня я не буду упоминать какой-то конкретный курс. Я собираюсь поделиться подходом, который я использовал и предложил тому же другу в этой истории. Я считаю, что это также должно помочь вам в вашем путешествии по науке о данных.

Вступление:

Прежде чем мы перейдем к части алгоритмов, позвольте мне рассказать вам, где именно мы используем их в проекте машинного обучения. Завершение проекта машинного обучения состоит из множества этапов, и каждый из них одинаково важен.

Моделирование - это этап, на котором вступают в силу наши алгоритмы машинного обучения, и это лишь один из важных этапов жизненного цикла машинного обучения.

Хорошо, давайте погрузимся в нашу основную тему алгоритмов машинного обучения.

Для каждого алгоритма нам нужно знать несколько важных вещей.

1. Какая интуиция стоит за алгоритмом

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

После того, как вы закончите изучение алгоритма из любого курса по вашему выбору, откройте новую вкладку и начните поиск интуитивного понимания этого алгоритма. Поверьте, в Интернете можно найти множество интересных объяснений. Для начала лучше всего начать с Quora и Medium.

2. Как работает алгоритм?

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

На этом этапе поэкспериментируйте с множеством факторов и посмотрите, как алгоритмы работают, вы можете обратиться к легкодоступным алгоритмам из Scikit-Learn. Проверьте параметры алгоритма и попробуйте поиграть с ними и посмотрите, как они влияют на производительность модели.

3. Где его можно использовать / Где нельзя

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

Попробуйте поэкспериментировать и понять, как он работает с большими наборами данных, данными большого размера. Если он склонен к выбросам или несбалансированному набору данных.

В интервью самые сложные вопросы - не что и как, а почему. Предположим, что завтра вы создаете личный проект после изучения алгоритмов и использовали определенный алгоритм X для его решения, интервьюер, скорее всего, ответит почему алгоритм X, почему не Y? Давайте подумаем, что вы пришел к выводу, что причина - в точности, а затем возникает сложнейший вопрос: как вы думаете, почему он работает лучше остальных?

О, мальчик! Вот почему вы должны знать, где он работает, а где нет.

Например, вам нужно придумать ответ, например, поскольку наши данные были многомерными и нелинейными по своей природе, алгоритм X имеет тенденцию лучше работать с нелинейными данными, чем Y, по тем или иным причинам.

4. Почему важна интерпретируемость алгоритма

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

Например: если вы работаете над проектом в сфере здравоохранения, где ваша модель предсказывает заболевание человека на положительный или отрицательный результат. Это очень деликатная проблема, и они не могут позволить себе ошибаться, когда приходит интерпретируемость. Если ваша модель показывает вам причину (поскольку функция X (некоторые уровни в теле) больше, чем значение x или что-то в этом роде) для прогнозирования человек как положительный / отрицательный, это станет намного проще и имеет смысл.

5. Зачем изучать временную / пространственную сложность алгоритма?

Когда мы работаем в режиме реального времени, нам, возможно, придется иметь дело с огромными объемами данных, и если требуется низкая задержка, именно здесь Time and Space Complexity может помочь вам выбрать правильные алгоритмы.

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

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

6. Почему нам нужно понимать математику, лежащую в основе алгоритма?

Опять математика? Да, да, я понял. Мы можем использовать алгоритмы, даже не разбираясь в математике, просто импортировав из Scikit learn, но позвольте мне сказать, что в долгосрочной перспективе это совсем не рекомендуется. Что ж, независимо от того, принимаем мы это или нет, нам определенно нужна математика для лучшего понимания того, что на самом деле происходит под капотом. Это может разочаровать некоторых, но я получил хорошие новости: мы не можем избежать математики, но мы можем упростить ее и избежать строгой математики.

Проще говоря, большая часть работы алгоритмов машинного обучения состоит в том, чтобы минимизировать разницу (ПОТЕРЯ) между фактическим и прогнозируемым выходом.

алгоритм = минимизировать (убыток) + срок регуляризации

Например, мы должны минимизировать потери журнала для логистической регрессии и потери шарниров для SVM и т. Д.

Примечание. Это не относится ко всем алгоритмам машинного обучения, это работает только для некоторых алгоритмов.

Чтобы минимизировать эту потерю, внутри этих алгоритмов используются методы оптимизации, такие как Gradient Descent и другие его разновидности, которые включают небольшую математику. Так что, если вы не очень хорошо разбираетесь в математике, просто попытайтесь понять функции потерь и их градиентный спуск для каждого алгоритма, таким образом вы сможете избежать всех других строгих математических расчетов и остаться нетронутыми для достижения цели. как только вы освоитесь с этим, вы сможете глубже погрузиться в математику.

7. Зачем внедрять его с нуля (необязательно):

Если предположить, что вы изучаете гитару, вы сначала начнете с основ, а затем постепенно попытаетесь воспроизвести музыку, которая уже написана другими, и на этом этапе, если вы понимаете, как они смогли создать эту музыку и настроить, тогда следующий шаг - создание собственной музыки, верно?

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

Легче сказать, чем сделать, это займет у вас много времени, поэтому я пометил это как необязательное. По крайней мере, попробуйте реализовать один алгоритм, чтобы понять, как он на самом деле работает. Если вам сложно кодировать, разбейте алгоритм на части и сначала напишите псевдокод, позже попробуйте преобразовать его в реальный код.

Машинное обучение Python, написанное Себастьяном Рашкой - действительно хорошая книга, которая может помочь вам в разработке алгоритмов с нуля.

Заключение:

Не торопитесь, не торопитесь и изучите это наилучшим образом, вместо того, чтобы изучать половину и возвращаться несколько раз, чтобы каждый раз ссылаться на это. Помните, что цель - не совершенство, а прочный фундамент. Поверьте, мы никогда не сможем добиться совершенства. Цель всегда должна улучшаться с каждым днем. Если бы вы могли понять суть алгоритма и знать, как он работает, то в конечном итоге вы бы определенно поблагодарили себя.

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

Последний шаг: примените все свои знания к нескольким наборам данных с разными типами и размерами данных, чтобы получить реальное обучение. Практика - это все. Вы научитесь многому, делая, кроме простого чтения, так что будьте готовы испачкать руки.

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

Если у вас есть предложения или сомнения, дайте мне знать в комментариях, или вы можете связаться со мной в моем Linkedin.

Удачного кодирования! До скорого!!