Концептуальный обзор и обзор кода систем рекомендаций специалистом по данным.

Вероятно, неудивительно, что в основе алгоритма TikTok лежит неизменно популярная и мощная система рекомендаций. Подобно Netflix и YouTube, алгоритм TikTok работает на вас. Он может предоставить вам только контурные рекомендации, если вы используете приложение, взаимодействуя с ним каким-либо образом.

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

Цель алгоритма - персонализировать ваш канал, особенно канал Для вас. Что касается алгоритмов, TikTok кажется довольно простым. Имейте в виду, что алгоритм действительно должен называться «модель» - алгоритм - это особый тип процесса машинного обучения, например случайный лес или деревья решений. Модель - это то, что сохраняется и уникально для ваших данных и кода.

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

Концепции

В частности, TikTok разделяет следующие факторы, которые применяются в их алгоритме.

  • взаимодействия с пользователем
  • информация о видео
  • настройки устройства и учетной записи

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

Вы:

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

Видео:

Информация о видео - это подробный отчет о видео, такой как хэштеги, аудио и подписи.

Настройки устройства и учетной записи в некоторой степени уникальны для TikTok. В нем описаны настройки и предпочтения вашего приложения, которые менее значимы, чем указанные выше факторы (язык или страна).

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

Совместная фильтрация:

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

  • Пример:

Если человек A лайкает и комментирует видео 1, 2, 3, 4 и 5, а человек B лайкает и комментирует видео 1, 2 и 3, ему, как правило, нравятся видео 4 и 5. Другой способ визуализировать это. пример следующий (X - рекомендованное видео, подобное 4 и 5 сверху):

Человек A: 1, 2, 3, 4, 5

Человек B: 1, 2, 3, X, X

Фильтрация на основе содержания:

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

  • Вот концептуальный пример:

Прошлое видео:

duration — 30 seconds long
hashtags — #coaster #rollercoaster #themepark #disneyworld

Рекомендуемое видео:

duration — 28 seconds long
hashtags — #rollercoaters #ride #florida #universalstudios

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

Теперь, когда мы рассмотрели два популярных типа рекомендательных систем, вы можете увидеть, как их можно применить к TikTok.

Collaborative-Filtering = Взаимодействие с пользователем

Фильтрация на основе содержания = информация о видео

(и несколько «Настройки устройства и учетной записи»)

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

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

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

Код

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

Совместная фильтрация ( от вас к другим пользователям ) →

Вот код, использующий Apache Spark, который используется для c совместной фильтрации . Вы хотите начать с импорта основных библиотек из PySpark. Затем вы загружаете данные и создаете фрейм данных. Затем вы разделяете свои данные на разделение поездов и тестов. Затем вы будете соответствовать своей модели ALS (метод наименьших квадратов с чередованием). Затем вы создадите прогнозы и оцените свою модель на основе заданной метрики; в данном случае это была RMSE. Наконец, вы можете распечатать рекомендации по видео на основе столбцов или функций, которые вы выбрали для включения в свой набор данных в отношении взаимодействий пользователей.

# import libraries
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql import Row
lines = spark.read.text("TEXT_FILE.txt").rdd
parts = lines.map(lambda row: row.value.split("::"))
liked_data = parts.map(lambda p: Row(COLUMN_1, COLUMN_2, like=like)
liked_df = spark.createDataFrame(liked_data)
(training, test) = liked_df.randomSplit([0.75, 0.25])
als = ALS(maxIter=4, regParam=0.05, users="COLUMN_1", items="COLUMN_2", ratingCol="like",
          coldStartStrategy="drop")
model = als.fit(training)
predictions = model.transform(test)
evaluator = RegressionEvaluator(metricName="rmse", labelCol="like",
                                predictionCol="prediction")
                       
rmse = evaluator.evaluate(predictions)
print("RMSE = " + str(rmse))
videoRecs = model.recommendForUsers(20)

Для полного примера вы можете обратиться к документации Apache Spark здесь.

Фильтрация на основе содержания ( предыдущее видео к рекомендованным ) →

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

#import libraries
from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd

data = pd.read_csv("DATA.csv")
# computing the cosine similarity
alg = cosine_similarity(data)

Последние мысли

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

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

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

использованная литература

TikTok, Как TikTok рекомендует видео #ForYou, (2020 г.)

Apache Spark, Совместная фильтрация, (2020 г.)

разработчик scikit-learn, sklearn.metrics.pairwise.cosine_similarity, (2007-2020)