No.24 Небольшой разговор о больших данных и алгоритмах

машинное обучение искусственный интеллект глубокое обучение алгоритм

0x00 Предисловие

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

Есть много причин для написания этого блога, но в целом они таковы:

  1. Я был в неведении на пути к алгоритму, и теперь у меня есть небольшая подсказка, и я быстро делаю запись.
  2. После того, как вы разберетесь со своими собственными идеями, в последующем будет составлен план обучения алгоритму на один-два года.
  3. Когда дело доходит до алгоритмов, все думают только о классических алгоритмах и машинных алгоритмах.Кроме того, есть много интересных алгоритмов, особенно алгоритмов для решения задач с большими объемами данных.Их легко игнорировать, но я думаю, что это считается большой проблемой. , Алгоритмы данных.

0x01 Когнитивный процесс

1. Алгоритмы бесполезны

Когда я впервые попал в яму, я всегда думал, что большие дата-инженеры просто установили Hadoop, написали MR-программы, эксплуатировали и обслуживали кластер.Хотя алгоритм очень важен, в работе нет ощущения.

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

2. Очарование классических алгоритмов

После работы с большими данными и обслуживания в течение определенного периода времени я получил задание оптимизировать систему планирования и работал со старым драйвером Gim над разработкой плана реконструкции системы планирования. точки знаний, связанные с теорией графов.Я очень заинтересовался алгоритмом и вышел из-под контроля.Затем я заново изучил содержание, связанное с деревьями, и реализовал структуры данных, такие как 2-3 дерева, деревья avl и красно-черные деревья с помощью сам.

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

3. Машинное обучение — это все

Затем вдруг стало популярным машинное обучение, и в мире осталось всего два алгоритма: алгоритмы машинного обучения и алгоритмы немашинного обучения. Друзья и одноклассники вокруг меня, имеющие отношение к разработке данных, все говорят, что хотят перейти на машинное обучение. Автор не стал освобождаться от обычаев и стал готовиться к следованию за волной. Однако сцены нет, а второе, что мне это неинтересно.Когда в один прекрасный день я вдруг понял, что хочу поиграть в линукс, чтобы расслабиться, когда мне надоело изучать машинное обучение, я временно отказался от идеи превратить к машинному обучению. Я буду использовать его в будущем, возможно, глубоко, но я не буду обращаться к нему всем сердцем прямо сейчас.

После машинного обучения 2017 год ознаменовался волной глубокого обучения.

4. Глубокое обучение — еще одна волна

Самое глубокое чувство заключается в том, что в мае 2017 года я увидел запрос на набор.Название набора - архитектор платформы искусственного интеллекта.Конкретные требования заключаются в том, что в дополнение к требованиям платформы данных добавляются некоторые вещи платформы глубокого обучения.

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

5. Есть много интересных алгоритмов

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

Эти алгоритмы существовали всегда, но они по-прежнему могут играть большую роль в современных сценариях работы с большими данными.

6. Распределенные алгоритмы

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

По мере углубления обучения обнаруживается, что вода в этом произведении все еще достаточно глубока.Мы называем эти распределенные алгоритмы, которые содержат много контента:

2PC, Gossip, куча протоколов, DHT, Paxo, Raft, куча алгоритмов и какие-то запутанные принципы.

Это исследование все еще очень грубое, и позже будет подробный план исследования.

7. Что такое алгоритм больших данных?

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

Помимо классических алгоритмов, алгоритмы сжатия и шифрования существовали всегда.

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

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

Затем мы подумаем, что не так со сценарием больших данных?

Проблемы со сценариями больших данных

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

Количество различных элементов в коллекции, например статистика уникального посетителя (Unique Visitor, UV для краткости), если она написана на Sql, то это count (undistant user_id). быть рассчитаны очень быстро.Можно допустить небольшую неточность, как мы это делаем?

То есть во многих сценариях мы будем быстро вычислять результат, допуская некоторую жертву точностью. Эти алгоритмы имеют отличные сценарии применения.Например, Redis будет использовать Hyperloglog для статистики кардинальности.

Такой пакет алгоритмов, я думаю, является частью алгоритма больших данных, с большим количеством контента, есть специальные блоги для его расширения, такие как Bitmap, Roaring Bitmap, Hyperloglog и т.д.

0x02 Список навыков алгоритма

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

Приоритеты обучения?

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

  • Базовые структуры данных и алгоритмы ни о чем не говорят, это базовые навыки и ими надо владеть.
  • Шифрование, сжатие, планирование и другие алгоритмы в других алгоритмах, если вам не нужно делать это глубоко, вам не нужно спешить, чтобы изучить это подробно, вы можете понять это, когда будете его использовать.
  • Распределенные алгоритмы и алгоритмы больших данных рекомендуются инженерно-ориентированной детской обуви для скорейшего освоения, не беда, если вы не используете программу на работе, да и в раннем обучении нет ничего плохого. Эти алгоритмы лежат в основе многих компонентов больших данных.
  • Алгоритмы, связанные с интеллектуальным анализом данных, должны быть изучены для детской обуви интеллектуального анализа данных.Для детской обуви, которая переводит разработку данных в интеллектуальный анализ данных, если у них есть более четкий план смены карьеры, они начнут углубленно учиться.Если они находятся в ожидании-и -см. состояние, они могут играть с некоторыми алгоритмами, которые тесно связаны с работой в первую очередь, и вы можете быстро приступить к работе, если у вас есть возможности для проекта.

0XFF Резюме

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