Это и здесь и там

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

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

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

Новая норма — это, грубо говоря, оказаться запертым в своей квартире по большей части 24 часа в сутки и 7 дней в неделю. И это продолжается уже несколько месяцев. Это неприемлемо.

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

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

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

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

Новая норма — это живые музыканты, делегированные онлайн-видеостримерам, кофейни, делегированные автосервисам, рестораны, делегированные кухням доставки, университеты, делегированные МООК, и, благослови Бог учителей K-12, которые могут быть вынуждены вести бизнес в обычном режиме. возможно, с несколькими слоями СИЗ между ними и болезнью.

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

Каждый день на повторе.

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

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

Один из способов думать о библиотеке Automunge состоит в том, что это платформа для табличных данных, то есть данных, заполненных в столбцах набора функций и собранных примерных строках, которые должны быть подготовлены для машинного обучения, например, посредством числового кодирования, нормализации, разработки функций. , уменьшение размерности и/или заполнение отсутствующих данных. Это все есть. В более общем плане Automunge — это платформа для применения преобразований данных, таких как преобразования, которые могут быть «подогнаны» к свойствам столбцов в назначенном наборе обучающих данных, которые затем могут применяться для последовательного кодирования потоков данных для логического вывода.

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

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

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

Существует небольшой компромисс с операцией на месте. Если в предыдущей форме копирования каждый возвращаемый столбец последовательно добавлялся в правую часть существующего набора, в результате возвращаемый набор автоматически сохранял согласованность группировки для столбцов, возвращаемых из одного и того же исходного столбца. Теперь с inplace для наборов с несколькими преобразованиями некоторые столбцы могут быть добавлены справа, а некоторые могут остаться на месте, поэтому в результате набор столбцов, возвращаемый из одного и того же исходного столбца, не может быть найден смежным в возвращаемом наборе, что ставит под угрозу было дизайнерским решением из соображений задержки. Существует два обходных пути для повторного захвата групп столбцов. Один из них заключается в том, что если сохраненные группы представляют интерес (учитывая, что это нерелевантное свойство для машинного обучения), к ним можно получить доступ, отключив операции на месте с глобальным назначением параметров как assignparam = {‘global_assignparm’ : {‘inplace’ : False}}. В качестве альтернативы предпочтительный способ доступа к возвращаемой группе столбцов — это карта столбцов, хранящаяся в возвращенном словаре как postprocess_dict[‘column_map’][‘(source column)’].

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

Чтобы узнать больше, ознакомьтесь с разделами Оглавление, Рекомендации по книгам и Рекомендации по музыке. Подробнее об Automunge: automunge.com