KDD Cup 2019 Чемпион AutoML Track Команда DeepBlueAI Обмен технологиями | Открытый исходный код

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

Автор: Луо Чжипэн.

Подразделение 丨Shenlan Пекинский научно-исследовательский центр искусственного интеллекта

Недавно были опубликованы результаты конкурса AutoML Track KDD Cup 2019. Название этого конкурса — пятый вызов AutoML, организованный совместно Fourth Paradigm, ChaLearn и Microsoft и посвященный автоматическому машинному обучению данных, связанных с временными рядами.

В этом соревновании зарегистрировано около 800 команд, что является наибольшим количеством команд, участвовавших в последних соревнованиях AutoML.Зависит отКоманда DeepBlueAI из DeepBlue Technology Beijing AI R&D Center выиграла чемпионат, все члены команды закончили или учились в Пекинском университете. Команда NUS-Xtra-Lab из Национального университета Сингапура заняла второе место, а команда администраторов, состоящая из Alibaba Group и Технологического института Джорджии, заняла третье место. В первую десятку команд также входят университеты или институты, такие как Университет Цинхуа, Нанкинский университет, Microsoft Research Asia, Hikvision и Meituan Dianping.

В этой статье команда делится техническими деталями соревнований., ссылка на Github с открытым исходным кодом прикреплена в конце статьи.

Введение

ACM Sigkdd инициирован Комитетом специалистов по интеллектуальному анализу данных и знаний компьютерной ассоциации США, который является признанной международной научной конференцией с самым высоким академическим статусом в области интеллектуального анализа данных. KDD CUP — это крупнейшее международное мероприятие в области исследований в области интеллектуального анализа данных, проводимое организацией ACM по интеллектуальному анализу данных и обнаружению знаний (SIGKDD) с 1997 г. по настоящее время История.

Будучи самым влиятельным и высокоуровневым международным соревнованием в области интеллектуального анализа данных, KDD Cup ежегодно привлекает лучших экспертов, ученых и инженеров в области интеллектуального анализа данных со всего мира, поэтому он также известен как «Олимпиада больших данных». В этом году 25-я конференция ACM SIGKDD прошла на Аляске, США, с 4 по 8 августа 2019 года.

Командное достижение

В AutoML Track KDD Cup 2019 команда DeepBlueAI на этапе обратной связи4 первых, 1 пункт секунда1 место в среднем классе; этап AutoML с1 место по 3 предметам, средний показатель на 0,3 опережает 2 местоПо результатам выиграли чемпионат с абсолютным преимуществом.Удельный рейтинг выглядит следующим образом:

▲ Рисунок 1. Финальный список AutoML Track KDD Cup 2019 и адрес с открытым исходным кодом

 

▲ Рисунок 2. Рейтинг этапа слепого тестирования AutoML Track KDD Cup 2019

▲ Рис. 3. Ранжирование этапов обратной связи AutoML Track KDD Cup 2019

 

Награды участников команды

Введение в конкурс

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

  • Основная таблица содержит экземпляры с метками выборки, частичными признаками и метками временных рядов для бинарной классификации;

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

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

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

Чтобы участники могли лучше разрабатывать и оценивать свои предложения, организатор предоставляет 10 реляционных наборов данных временных рядов, в том числе 5 общедоступных наборов данных и 5 частных наборов данных.

соревновательный этап

Стадия обратной связи

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

Этап проверки 

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

Этап автомлирования

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

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

время гонки

1 апреля 2019 г .: начало конкурса, выпуск общедоступного набора данных. Участники могут начать отправлять код и мгновенно получать отзывы в таблице лидеров. 

27 июня 2019 г.: этап обратной связи заканчивается, и код на этапе обратной связи автоматически переносится на этап тестирования. 

7 июля 2019 г.: фаза проверки заканчивается, и спонсор начинает проверку кода. 

11 июля 2019 г.: Крайний срок подачи отчетов. 

16 июля 2019 г.: этап AutoML завершается и начинается процесс проверки. 

20 июля 2019 г .: Объявлен победитель Кубка KDD. 

4 августа 2019 г .: Церемония награждения в KDD.

Показатели оценки

В этом соревновании в качестве индикатора подсчета очков используется AUC. В правилах ранжирования официальная базовая оценка auc_base принимается в качестве эталона в 0 баллов, а наивысший балл всех игроков auc_max — в качестве полного балла в 1 балл. Согласно формуле, относительный балл получается, и, наконец, вычисляются пять наборов данных.Среднее значение делится на окончательный балл, и чем выше балл, тем лучше производительность модели. Формула расчета баллов выглядит следующим образом:

Особенности темы

В этом соревновании основные трудности заключаются в следующем:

1. Эффективные функции майнинга

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

2. Данные вопроса связаны с временными рядами

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

3. Данные конкурсных вопросов приведены в нескольких таблицах.

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

4. Строгие ограничения по времени и памяти

Среда запуска кода соревнования представляет собой среду докера с 4-ядерным процессором и памятью 16 ГБ.Для наборов данных неизвестного размера некоторые операции в процессе выполнения кода могут легко привести к тому, что пиковый объем памяти превысит 16 ГБ, что приведет к сбою программы. Поэтому игроки должны строго оптимизировать те или иные операции, либо использовать сэмплирование и другие методы для выполнения задач. Кроме того, участники конкурса строго ограничивают время выполнения кода для каждого набора данных, и небольшая небрежность приведет к истечению времени выполнения и сбою.

решение

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

предварительная обработка данных

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

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

# 识别user 与 sessiondef recognize_user_col(self,data,key_cols):    user_col = None    nunique = -1    for col in key_cols:        nnum = data[col].nunique()        if nnum > nunique:            user_col = col            nunique = nnum    return user_coldef recognize_session_col(self,data,cat_cols,user_col):    if user_col is None:        return []    user_nunique = data[user_col].nunique()    session_cols = []    def func(df,user_nunique):        cat_col = df.columns[0]        user_col = df.columns[1]        cat_nunique = df[cat_col].nunique()        if (cat_nunique <= user_nunique) or (cat_nunique >= df.shape[0]-10):            return False        if (df.groupby(cat_col)[user_col].nunique()>1).sum()>10:            return False        return True    res = Parallel(n_jobs=CONSTANT.JOBS,require='sharedmem')(delayed(func)(data[[col,user_col]],user_nunique) for col in cat_cols)    for col,is_session in zip(cat_cols,res):        if is_session:            session_cols.append(col)    return session_colsскопировать код

Объединение нескольких таблиц

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

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

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

Конкретную операцию можно увидеть на рисунке Данные в столбце n_1 элемента данных с ключом 147714011 равны 3,6, что связано со всеми элементами данных, соответствующими 147714011 в основной таблице.

На рисунке показан метод соединения типа 2. В этом примере операция среднего агрегирования выполняется для столбца n_1.Элемент данных, ключ которого равен 147714011, имеет среднее значение 2,3 для столбца n_1, а затем данные соответствующим образом объединяются. в основную таблицу.

выборка

Поскольку размер набора данных, указанный в конкурсе Automl, неизвестен, сначала определите, может ли текущая среда поддерживать весь набор данных для участия в разработке функций и процессе обучения модели, прежде чем операция будет обработана. Мы сделали суждение перед чтением данных в предварительной обработке, то есть общая выборка, необходимая для обучающего набора и тестового набора, не превышает определенного порога. Если общее количество обучающих наборов и тестовых наборов слишком велико, мы рассматриваем их выборку.При текущих условиях памяти 16G мы были оценены, и 4 миллиона данных — лучший порог.

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

Автоматическая разработка функций

def main_init(self):    self.order1s = [                PreMcToNumpy,McCatRank,                OriginSession,                ApartCatRecognize,\                KeysCountDIY,UserKeyCntDIY,SessionKeyCntDIY,\                KeysTimeDiffAndFuture,                KeysNuniqueDIY, KeysCntDivNuniqueDIY,                KeysCumCntRateAndReverse,UserKeyCumCntRateAndReverse,                KeyTimeDate,KeyTimeBin,KeysBinCntDIY,                CatCountDIY,                LGBFeatureSelection,            ]    self.keys_order2s = [                KeysNumMeanOrder2MinusSelfNew,                KeysNumMaxMinOrder2MinusSelfNew,                KeysNumStd,                KeysCatCntOrder2New,                LGBFeatureSelectionWait,            ]        self.all_order2s = [                BinsCatCntOrder2DIYNew,                BinsNumMeanOrder2DIYNew,                CatNumMeanOrder2DIYNew,                CatCntOrder2DIYNew,                LGBFeatureSelectionWait            ]        self.post_order1s = [                TimeNum,            ]        self.merge_order1s = [                CatSegCtrOrigin,                CatMeanEncoding,                LGBFeatureSelectionLast,            ]скопировать код

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

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

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

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

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

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

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

▲ Рисунок 4. Наиболее важные функции после скрининга

 

Автоматический выбор функций

 

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

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

▲ Рисунок 5. Механизм выбора признаков

проблема дисбаланса классов

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

Модель слияния

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

Если времени достаточно, подсчитайте, сколько моделей можно объединить в соответствии с текущим оставшимся временем. Чтобы убедиться, что код проходит, мы используем консервативный метод оценки, то есть на основе расчета количества слияний моделей мы выбираем слияние на одну модель меньше.

start_time = time.time()temp = X.iloc[:100000]temp = temp.astype(np.float32)gc.collect()temp = temp.valuesgc.collect()model.predict(temp)end_time = time.time()model_test_use_time = (end_time-start_time)# 估算预测10万条数据所需的时间model_test_use_time = len_test/temp.shape[0] * model_test_use_time# 得到预测测试集数据所需的时间model_use_time = model_use_time + model_test_use_time# 总时间 = 训练时间 + 测试时间del temp,modelrest_time = config.budget/10*9-(end_time-config.start_time)# 使用给定时间的90%做保守估计,计算剩余可用时间if rest_time <= 0:    rest_model_num = 0else:    rest_model_num = int(rest_time / model_use_time)if rest_model_num >= 50:    rest_model_num = 50 if rest_model_num >= 1:    rest_model_num -= 1# 根据剩余时间计算出可融合模型的数量,在此基础上少融合一个模型скопировать код

оптимизация времени выполнения

Наш контроль времени отражается в каждом процессе. 

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

Например, есть часть данных. data : [ 2137 , (134,2137,576,816) ] , первое 2137 находится на второй позиции последнего. Таким образом, особенность этих данных 2. Если нет, установите 0. Для этой функции, если мы используем интерфейс применения, предоставленный пандами для реализации, в среде этого соревнования создание функции этого типа занимает около нескольких часов.

Учитывая, что DataFrame не подходит для обхода и потери производительности, вызванной обобщением интерфейса. Мы используем Numpy для обхода, чтобы реализовать эту функцию, что может привести к тому, что генерация функций достигнет минутного уровня. Время и память этого соревнования строго контролируются, а класс функций, генерация которых занимает более 10 секунд, требует очень много времени.

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

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

В процессе тестирования этой оптимизации чистый код Python оптимизируется Cython, и эффективность может достигать порядка 60 секунд. После этой оптимизации ее очень легко достичь в течение 10 секунд (на этот раз тестовая среда в основном основана на нашем компьютере, а онлайн-среда займет больше времени). 

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

▲ Сравнение до и после оптимизации времени

Запустить оптимизацию памяти

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

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

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

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

▲ Рисунок 6. Сравнение до и после оптимизации памяти

 

Тест системы

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

  • Для случая, когда все значения разных типов данных пусты;

  • Для случая, когда структура таблицы представляет собой одну таблицу или сложную многотаблицу. 

и ряд других предельных состояний.Для производительности системы мы протестировали следующее:
  • Увеличьте ввод данных Что касается 5 наборов данных в этом соревновании, мы можем расширить ввод данных каждого набора данных в 2 раза, 3 раза и 6 раз, и все они могут работать без сбоев в течение указанного времени и памяти. 

  • Расширив количество полей данных, аналогично, мы увеличили количество полей 5 наборов данных в 2 раза и все заработало без сбоев. 

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

  • Ограничивая допустимое время работы набора данных, мы корректируем допустимое время работы набора данных, чтобы наблюдать, может ли наша система адаптивно регулировать свое собственное время работы. Мы скорректировали ограниченный по времени набор данных A и набор данных B с большим объемом данных в этом соревновании и изменили допустимое время работы на 1/2, 1/3 или даже 1/4 исходного. Все наши системы работают безотказно.

Суммировать

Это соревнование KDD Cup AutoML было дополнительно улучшено с точки зрения системы соревнований. По сравнению с конкурсом AutoML NeurIPS 2018 количество заявок на этапе AutoML было увеличено, чтобы участники могли успешно пройти через данные списка B как можно больше. По сравнению с улучшенным механизмом подсчета очков конкурса PAKDD 2019 AutoML на окончательный результат влияет только наивысший балл за каждое задание. Усовершенствованный механизм соревнований позволяет участникам получить лучший соревновательный опыт и технические показатели.Спасибо организаторам за их нелегкий труд. 

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

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

об авторе

Луо Чжипэн, глава Пекинского научно-исследовательского центра искусственного интеллекта DeepBlue, специалист по машинному обучению Deep Blue.

Окончил Пекинский университет со степенью магистра, выиграл первенство ведущих конкурсов конференций, таких как PAKDD, KDD, NeurIPS, CIKM, CVPR, SIGIR, опубликовал статью о KDD Oral с одной работой, вместе работал над частью WWW, и многолетний практический опыт машинного обучения.

ссылка с открытым исходным кодом

https://github.com/DeepBlueAI/AutoSmart

Нажмите на заголовки ниже, чтобы просмотреть больше прошлых выпусков: 

# Канал вклада#

Пусть вашу газету увидит больше людей

Как мы можем сделать так, чтобы более качественный контент достигал читателей по более короткому пути и снизить затраты читателей, ищущих высококачественный контент?Ответ: люди, которых вы не знаете.

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

PaperWeekly поощряет университетские лаборатории или отдельных лиц делиться на нашей платформе всевозможным высококачественным контентом, который может бытьИнтерпретация последних работ,так же может бытьопыт обученияилиТехнические галантереи. У нас есть только одна цель — сделать так, чтобы знание действительно текло.

?Критерии участия:

• Рукописи действительно личныеОригинальные работы, в рукописи должны быть указаны персональные данные автора (ФИО + школа/подразделение + образование/должность + научное направление)

• Если статья не публикуется впервые, напомните и включите все опубликованные ссылки при отправке.

• По умолчанию каждая статья на PaperWeekly публикуется первой, и к ней добавляется пометка «оригинал».

? Электронная почта для отправки:

• Электронная почта для отправки: hr@paperweekly.site.

• Все статьи с картинками просьба присылать отдельно во вложении

• Пожалуйста, оставьте мгновенную контактную информацию (WeChat или мобильный телефон), чтобы мы могли связаться с автором, когда редактор опубликует.

?

сейчас на"Знаю почти"найди нас тоже

Войдите на домашнюю страницу Zhihu для поиска"Бумажный еженедельник"

нажмите"обрати внимание на"Подпишитесь на нашу рубрику

О PaperWeekly

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

▽ Нажмите | Прочитать оригинальную статью | Получить последнюю рекомендацию по бумаге