Эта статья подготовлена командой OPPO Internet Basic Technology Team, пожалуйста, укажите автора для перепечатки. В то же время приглашаем обратить внимание на нашу общедоступную учетную запись: OPPO_tech, чтобы поделиться с вами передовыми интернет-технологиями и деятельностью OPPO.
Некоторые люди могут вывести формулы алгоритма машинного обучения голыми руками, могут углубиться в исходный код, чтобы понять реализацию алгоритма, или получить хорошие рейтинги в соревнованиях Kaggle, но они «запинаются» в реальных проектах. Система обучения знаний несовершенна.
Например, в нашей системе создания тегов интересов пользователей необходимо учитывать следующие вопросы: как проводить проектирование признаков, как получать высококачественные положительные и отрицательные образцы, как работать с несбалансированными наборами данных, как определить, как оценить, какой алгоритм выбрать, как настроить Обратитесь и объясните модель.
Опыт, непосредственно связанный с алгоритмом, легче всего получить из книг или Интернета.Другие тесно связаны со своим бизнесом, и обмен, связанный с онлайн, меньше.Получить опыт и знания в этой области относительно сложно, и обычно накапливается в ходе проектной практики. К еще большему сожалению, эти труднодоступные эмпирические знания являются наиболее важными в проекте на данном этапе — по сравнению с выбором алгоритма и настройкой параметров оптимизация набора данных моделирования имеет гораздо больший выигрыш.
В этой статье мы поделимся некоторым практическим опытом в сочетании с проектом маркировки.Статья разделена на две части: первая часть знакомит с общими модулями, включая разработку функций, построение наборов оценок и определение методов оценки; вторая часть представляет модули, связанные с алгоритмами. , включая выбор алгоритма, обработку признаков, настройку параметров (платформы Spark и Sklearn), интерпретацию модели.
1. Особенности, проектирование образцов
1.1 Разработка функций
Разработка признаков в основном включает в себя:
Сценарии использования функций
Максимально извлекайте функции из соответствующих источников данных с учетом бизнеса и оценивайте доступность этих функций (покрытие, точность и т. д.).
Схема приобретения признаков
Основное внимание уделяется тому, как получить и сохранить функции.
Мониторинг функций
Отслеживайте важные функции, чтобы предотвратить ухудшение качества функций, влияющее на модель.
Обработка функций
Это основная часть разработки признаков, включая очистку признаков, преобразование признаков, выбор признаков и другие операции.
Видно, что проектирование признаков сложное, особенно в сценариях с большими данными, некоторые рутинные операции могут даже иметь проблемы с производительностью — срок подходит к концу, а я все еще застрял на инженерных проблемах, что невыносимо.
Так появилась на свет наша платформа фичеинжиниринга OFeature, призванная решить проблему согласованности фичеинжиниринга, простоты использования и производительности, полностью освободив пользователей от инженерного «болота», а процесс получения наборов данных для моделирования стал очень лаконичный.
На следующем рисунке интуитивно понятно, что высококачественные наборы данных моделирования в основном состоят из богатых наборов функций, соответствующей обработки функций и высококачественных меток. Обработка функций связана с выбранным алгоритмом. Эта статья будет представлена в главе алгоритма. Эта глава только вводит Получите некоторый опыт работы с функциями и метками.
Рис. 1. Процесс использования OFeature для получения наборов данных для моделирования
1.1.1 Коллекция функций
Какой именно набор функций тесно связан с отраслью и даже с проектом, ниже берется пример интернет-рекламы, а его особенности условно делятся на следующие категории:
Свойства пользователя
Возраст, пол, образование, профессия, регион и т. д.
поведенческие предпочтения
Как правило, он получается из статистических исторических данных о поведении (его также можно предсказать с помощью модели), таких как статистика платежей пользователя за последний месяц, чтобы определить его платежные предпочтения.
поведенческое намерение
Пользователь, который ранее не видел рекламу товаров для матерей и детей и не нажимал на нее, но недавно начал запрашивать в своем браузере материалы, связанные с матерями и детьми, скорее всего, будет целевой группой рекламодателей товаров для матерей и детей. Наши функции поведенческого намерения в основном делятся на две категории: «поведение кликов при показе содержимого информационного потока» и «запрос браузера».
модель поведения
Так называемый поведенческий паттерн относится к поведенческим характеристикам с определенным последовательным смыслом, который обобщается путем анализа взаимосвязи между потребительским поведением и временем и пространством, а также временной и пространственной последовательности отношений между сериями поведения [1]. ]. Как показано на рисунке ниже: предположим, у нас есть 3 типа приложений, а затем суммируем количество раз, когда пользователь USER1 платит за B (аналогично показу, клику, загрузке, регистрации), и, наконец, объединяем несколько недель и несколько приложений.
Рис. 2 Последовательность игрового поведения пользователя
1.1.2 Label
Приобретение лейбла связано со спецификой бизнеса:
Бизнес "Индивидуальная этикетка"
Разработчик модели может выбрать положительные и отрицательные образцы в соответствии с потребностями бизнеса.Например, преобразованная популяция определенного типа APP может использоваться в качестве положительной выборки, а экспонированная непреобразованная популяция может использоваться в качестве отрицательной выборки.
LookAlike
Поскольку исходный пакет (положительный образец) может быть предоставлен третьей стороной, а соответствующий отрицательный образец не может быть определен, это типичная проблема обучения PU (положительное и немаркированное обучение).В настоящее время различные наборы кандидатов (например, полные пользователи, активные пользователи в информационном потоке, активные пользователи в играх или пересечение между ними и т. д.) в качестве отрицательных образцов и использовать алгоритмы, связанные с обучением PU (такие как Spy Technique), для дальнейшего извлечения более качественных отрицательных образцов и, наконец, сравнить каждую схему для определения оптимальной отрицательной пробы.
Учитывая взаимосвязь между экспозицией и кликами (загрузка, регистрация, оплата), положительные и отрицательные выборки набора данных часто бывают крайне несбалансированными, в этом случае в тестовом наборе по-прежнему необходимо использовать реальное распределение (несбалансированные данные), а необходимо использовать тренировочный набор. Некоторые методы имеют дело с несбалансированными данными.
Например, когда положительных образцов достаточно, понизьте выборку отрицательных образцов. В противном случае вам нужно использовать технику удара для расширения положительных образцов. Также рекомендуется использовать истинное распределение для набора проверки, но это хлопотно сделать K-FOLD Поэтому, когда для проверочного набора используется истинное распределение, рекомендуется использовать раннюю остановку для настройки параметров.
Наконец, следует отметить, что некоторые функции представляют собой статистику исторических данных, поэтому время метки должно быть позади функции, чтобы предотвратить утечку функции.
1.2 Создание набора для оценки и определение показателей оценки
1.2.1 Оценочный набор
Для оценки влияния разработки признаков или настройки параметров алгоритма на модель необходимо найти несколько репрезентативных оценочных наборов.Если большинство показателей оценочного набора улучшится, мы будем считать, что модель была положительно оптимизирована. Репрезентативный набор оценок:
Классифицировано по бизнесу
Он делится на «бизнес тегов» и «LookAlike». В «бизнесе тегов» мы также разделяем игровые и неигровые оценочные наборы.
Классифицируется по величине
Обычно относится к начальному уровню LookAlike. Это связано с тем, что уровни пакетов, предоставляемые третьими сторонами, часто сильно различаются, поэтому мы должны выбрать некоторые репрезентативные наборы оценок начального уровня в соответствии с реальной ситуацией.
1.2.2 Показатели оценки
Упомянутые ниже проектирование признаков, выбор меток, коэффициент повторной выборки и настройка параметров алгоритма требуют единой оценки индикатора.
Во-первых, наиболее убедительными показателями, конечно же, являются онлайн-показатели, но из-за высокой стоимости онлайн-оценки невозможно тестировать онлайн каждое обновление, поэтому общая стратегия заключается в тестировании онлайн, когда офлайн-показатели значительно улучшились. В этой статье представлена только формулировка показателей автономной оценки.Показатели автономной оценки можно разделить на две категории, как показано на следующем рисунке.
Рис. 3. Показатели автономной оценки
Внутренние показатели модели
Такие показатели, как точность, полнота и F1, являются пороговыми значениями, которые сначала определяются, а затем рассчитываются из соответствующей матрицы путаницы. Индикаторам auc и aupr не нужно вручную определять порог: используйте каждую точку в качестве порога, и каждый порог соответствует точке координат, и, наконец, вычислите общую площадь графика. Короче говоря, его следует выбирать в соответствии с реальным бизнесом. Например, наша задача LookAlike часто фокусируется на ранжировании (то есть конверсия с прогнозируемой вероятностью впереди лучше, чем с вероятностью сзади). нам нужно использовать auc и aupr для оценки (для несбалансированных наборов данных рекомендуется использовать aupr).
Другим примером является то, что задача маркировки состоит в том, чтобы найти людей, которые действительно заинтересованы в «XX играх». Мы можем установить порог, чтобы определить, действительно ли пользователь заинтересован, поэтому значение вероятности предсказания модели для толпы становится важным. Кроме того, Этапы корректировки параметров также должны использовать logloss в качестве критерия ранней остановки.
Бизнес-показатели
-
Показатели пересечения:
Обычной практикой является пересечение исторически выставленных людей рекламы этикетки с пакетом этикетки, а затем сравнение исторических показателей и показателей пересечения.Например, модель предсказывает полное население исторического дня 20200101, а затем меняет направление это в соответствии с прогнозируемым счетом и принимает topK как пакет меток «XX. Game», а затем пересекает пакет меток с фактической экспозицией «XX Games» в день 20200101 и, наконец, подсчитывает индикаторы пересечения. Преимущество индикатора пересечения в том, что он интуитивно понятен и его можно сравнивать с историческими онлайн-индикаторами, а недостаток в том, что статистические индикаторы бессмысленны, когда величина пересечения мала.
-
Х@Н:
Другой индикатор мы называем X @ N, который произошел от P @ N. В отличие от пересечения, мы используем всех выставленных людей «игры XX» в день 20200101, сначала используем предсказанную вероятность инвертировать толпу, а затем Эта популяция делится на несколько сегментов по квантилю (N представляет собой узел квантиля), и, наконец, мы можем подсчитать экспозицию, клик, загрузку, регистрацию, оплату, ctr, dtr, коэффициент конверсии и другие показатели каждого сегмента (значение X), его направляющее значение состоит в том, что бизнес-показатели и прогнозные баллы должны иметь монотонно возрастающую связь, преимущество в том, что величина достаточна, а недостаток в том, что его нельзя сравнивать с историческими онлайн-показателями.
Помимо рассмотрения бизнес-сценариев, нам также необходимо учитывать ситуации, когда меняется распределение наборов данных. Например, когда меняется распределение меток (при попытке разных семян и отрицательных образцов), aupr часто не информативен, а X@N и индикаторы пересечения все же можно использовать, потому что данные, которые они используют, являются историческими онлайн-данными, это не будет изменять. Итак, на что нам нужно обратить внимание, так это на то, что сравнение внутренних показателей модели нужно проводить при условии, что распределение тестового набора остается неизменным, например, добавление или вычитание признаков, настройка параметров и настройка положительные и отрицательные отношения обучающей выборки.
2. Алгоритмы
Теорема «Нет бесплатных обедов» (No Free Lunch, NFL) указывает на то, что ни один алгоритм не подходит для всех ситуаций, и выбор того, какой алгоритм следует делать исходя из реальной ситуации [2], но NFL в основном говорит о «применимости» для всех ситуаций. «алгоритмический эффект». Когда речь идет о реальных проектах, мы должны говорить о «применимости», объединяя «алгоритм посадки» и «алгоритмический эффект».
Например, алгоритм очень хорошо работает на экспериментальной стадии, но его нельзя применить к процессу проекта на этой стадии (возможно, он не поддерживает кросс-платформенность или проблемы с производительностью). Например, A, B Оба алгоритма могут быть реализованы: A — простой и быстрый, B — сложный и трудоемкий, но выигрыш от B очень мал, в этом случае B также неприменим.
Таким образом, наш проект LookAlike решил использовать логистическую регрессию на этом этапе.Эффект LR приемлем, объем вычислений небольшой, накладные расходы на ресурсы небольшие, модель легко интерпретируется и легко распараллеливается, что подходит для больших данных и высокоразмерные сценарии. Далее в этой статье будут представлены некоторые вопросы, требующие внимания в практике LR.
2.1 Обработка функций
LR предъявляет высокие требования к разработке признаков, и есть ключевой этап в обработке признаков — дискретные непрерывные значения и горячее кодирование После того, как в проекте LookAlike используются дискретизация и горячее кодирование, накладные расходы на память данных признаков и время обучения Значительно снизился, аупр также значительно увеличился. Причины этого следующие:
- Одноразовые разреженные данные, разреженное хранилище экономит память, а разреженный векторный внутренний продукт работает быстрее.
- Дискретизация непрерывных значений снижает интерференцию выбросов и повышает надежность модели. Дальнейшее горячее кодирование дискретных данных связано с тем, что N дискретных значений одной переменной можно превратить в N-мерные признаки, и каждый признак имеет эксклюзивные веса для улучшения нелинейных возможностей модели.
2.2 Гиперпараметры
Гиперпараметров LR мало.Помимо рекомендации метода регуляризации вообще использовать elastic>L1>L2 («>» означает лучше), на самом деле нечего вводить, но когда мы используем LR sklearn и sparkML, мы обнаружили, что разные модели получаются с одними и теми же данными, поэтому в этом разделе основное внимание будет уделено различиям между некоторыми важными гиперпараметрами двух платформ и действиям, обеспечивающим согласованность моделей каждой платформы.
Установлено, что обе платформы используют регуляризацию L2, а оптимизатор выбирает L-BFGS.Автор разобрался в некоторых различиях между двумя платформами:
2.2.1 Разница в целевой функции
Как показано в формуле на рисунке ниже, целевая функция sklearn и spark представляет собой n-кратное отношение (n представляет количество выборок), поскольку n-кратное отношение целевой функции не влияет на результат оптимизации, поэтому мы сохраняем только отношение коэффициента регуляризации, поскольку λ = 1/(nC) в порядке.
2.2.2 Различия в нормализации данных
По умолчанию sklearn не стандартизирует данные, а spark по умолчанию стандартизирует данные внутри алгоритма, и даже есть небольшие различия в способах стандартизации.stackoverflowВ приведенном выше примере [3] проводятся расширенные эксперименты:
Питон:
import numpy as np
from sklearn.linear_model import LogisticRegression, Ridge
from sklearn.preprocessing import StandardScaler
X = np.array([
[-0.7306653538519616, 0.0],[0.6750417712898752, -0.4232874171873786],[0.1863463229359709, -0.8163423997075965],
[-0.6719842051493347, 0.0],[0.9699938346531928, 0.0],[0.22759406190283604, 0.0],[0.9688721028330911, 0.0],
[0.5993795346650845, 0.0], [0.9219423508390701, -0.8972778242305388], [0.7006904841584055, -0.5607635619919824]])
y = np.array([0.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0])
## sqrt(n-1)/sqrt(n) factor for getting the same standardization as spark
Xsc=StandardScaler().fit_transform(X)*3.0/np.sqrt(10.0)
l = 0.3
e = LogisticRegression(
fit_intercept=True,
penalty='l2',
C=1/l,
max_iter=100,
tol=1e-11,
solver='lbfgs',verbose=1)
e.fit(Xsc, y)
print e.coef_, e.intercept_
SparkML:
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.sql.SQLContext
import org.apache.spark.ml.feature.StandardScaler
val sparkTrainingData_orig = new SQLContext(sc).
createDataFrame(Seq(
(0.0, Vectors.dense(Array(-0.7306653538519616, 0.0))),
(1.0, Vectors.dense(Array(0.6750417712898752, -0.4232874171873786))),
(1.0, Vectors.dense(Array(0.1863463229359709, -0.8163423997075965))),
(0.0, Vectors.dense(Array(-0.6719842051493347, 0.0))),
(1.0, Vectors.dense(Array(0.9699938346531928, 0.0))),
(1.0, Vectors.dense(Array(0.22759406190283604, 0.0))),
(1.0, Vectors.dense(Array(0.9688721028330911, 0.0))),
(0.0, Vectors.dense(Array(0.5993795346650845, 0.0))),
(0.0, Vectors.dense(Array(0.9219423508390701, -0.8972778242305388))),
(0.0, Vectors.dense(Array(0.7006904841584055, -0.5607635619919824))))).
toDF("label", "features_orig")
val sparkTrainingData=new StandardScaler().
setWithMean(true).
setInputCol("features_orig").
setOutputCol("features").
fit(sparkTrainingData_orig).
transform(sparkTrainingData_orig)
//Make regularization 0.3/10=0.03
val logisticModel = new LogisticRegression().
setRegParam(0.03).
setLabelCol("label").
setFeaturesCol("features").
setTol(1e-12).
setMaxIter(100).
fit(sparkTrainingData)
println(s"Spark logistic model coefficients: ${logisticModel.coefficients} Intercept: ${logisticModel.intercept}")
Мы добавили перекрестный эксперимент по нормализации данных в приведенный выше пример, чтобы проверить, согласована ли каждая операция нормализации.
Как показано в следующей таблице: Когда обе стороны не стандартизируют, параметры и перехваты могут быть согласованными.Когда обе стороны проводят стандартизацию, а sparkML стандартизируется на этапе предварительной обработки, параметры обеих сторон будут согласованы (разные перехваты).
Примечание. Перехват учитывается на этапе обучения, и штрафной коэффициент L2 был преобразован. | sklearnНе используйстандартизация | sklearnиспользоватьстандартизация |
---|---|---|
sparkНе используйстандартизация | Равные параметры, равные пересечения | Неравные параметры, неравные перехваты |
предварительная обработка искрыиспользоватьСтандартизированный, алгоритм также внутреннийиспользовать | Неравные параметры, неравные перехваты | Равные параметры, неравные перехваты |
предварительная обработка искрыиспользоватьнормализовано, внутри алгоритмаНе используй | Неравные параметры, неравные перехваты | Равные параметры, неравные перехваты |
предварительная обработка искрыНе используйнормализовано, внутри алгоритмаиспользовать | Неравные параметры, неравные перехваты | Неравные параметры, неравные перехваты |
2.2.3 Различия в использовании tol и обратной матрицы Гессе в L-BFGS
tol используется как условие сходимости оптимизатора, В sklearn tol действует только на градиент, то есть он используется только для оценки того, сошелся ли градиент, а ftol, который оценивает, сходится ли целевая функция, использует значение по умолчанию, которое не может быть изменено пользователем, и инструмент в искре. Он управляет как градиентом, так и конвергенцией функции.
L-BFGS использует самые последние данные m для аппроксимации обратной матрицы Гессе.Значения m sklearn и spark разные, 10 и 7 соответственно, и этот параметр закрыт для пользователей.
Следовательно, нам нужно рассмотреть, будет ли разница между условиями сходимости и обратной матрицей Гессе иметь существенное влияние на модель.Из предыдущего примера она не влияет, но ведь предыдущий пример имеет простые данные набор и небольшое количество итераций (6 ~ 8 итераций)), а затем использовать несколько образцов criteo для тестирования: 3,6 миллиона образцов обучающего набора и 1 миллион размерных признаков, Согласно приведенным выше экспериментальным результатам, принята нестандартизированная стратегия .
Как показано в таблице ниже, мы перехватываем только первые 10-мерные параметры, и видно, что после 800 итераций нет существенной разницы в параметрах между двумя сторонами.
train_size: 3,6 миллиона X 1 миллион итераций: 800 | w1 | w2 | w3 | w4 | w5 | w6 |
---|---|---|---|---|---|---|
sklearn | 0.0000 | 0.0668 | 0.0123 | 0.1432 | 0.0000 | 0.0070 |
spark | 0.0000 | 0.0687 | 0.0131 | 0.1505 | 0.0000 | 0.0079 |
Таким образом, когда мы используем разные платформы для построения LR-моделей, мы должны понимать, что существуют различия в коэффициентах нормализации и штрафных коэффициентах.
2.3 Интерпретация модели
Модель LR легко интерпретируется.После инвертирования параметров модели важность признаков становится очевидной с первого взгляда. Однако, если охват этих соответствующих признаков также принимается во внимание в реальном проекте, обнаружится, что охват передних признаков часто невелик, что на самом деле является проблемой смещения небольшой выборки (смещения небольшой выборки), и проблема является результатом его оценки максимального правдоподобия [4].
Давайте возьмем крайний пример, чтобы понять вышеуказанную проблему, предполагая, что покрытие признака xj следующее:
После дискретного + горячего, все функции 01ized | xj=0 покрытие | xj=1 покрытие | общее количество образцов |
---|---|---|---|
Положительный образец (y=1) | 99 | 1 | 100 |
Отрицательный образец (y=-1) | 10000 | 0 | 10000 |
xj общее покрытие | 10099 | 1 |
Затем целевая функция строится с использованием максимального правдоподобия, а затем используется градиентный спуск для обновления параметров модели Формула выглядит следующим образом:
Подводя итог, мы можем получитьОн равен 1 только в положительной выборке, то есть y=1,=1, иначе=0. Таким образом, приведенное выше уравнение эквивалентно, то есть толькоВыборка =1 работает, и поскольку h(x) является сигмовидной функцией, ее диапазон значений |h(x)|Каждая итерация будет идти только в одном направлении, что в конечном итоге приведет к тому, что их веса будут относительно большими.
Следовательно, при интерпретации модели мы не можем просто смотреть на порядок параметров, но также должны учитывать охват функций.
3. Резюме
Начиная с реального проекта, в этой статье разбирается практический опыт машинного обучения, включая проектирование образцов, проектирование признаков, выбор показателей оценки, гиперпараметры и интерпретацию модели.Из-за ограниченного запаса знаний автора понимание некоторых вопросов может быть односторонним или даже если есть ошибка, пожалуйста, попросите читателя Haihan исправить ее.
4 ссылки
1.woohoo.brief.com/afraid/from7957AC16…