Концептуальный обзор и обзор кода систем рекомендаций специалистом по данным.
Вероятно, неудивительно, что в основе алгоритма 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)