[Играет музыка] МОЗГ SCASSELLATI: Добро пожаловать в серии CS50 AI. Меня зовут Scass, и сегодня мы собираемся говорить о рекомендательных систем. Теперь рекомендательные системы звуки как своего рода странное имя. Это звучит, как, может быть, он должен быть системы рекомендации, и я вроде согласны с вами. Но эти системы, которые помогают выберите из подобных вещей всякий раз, когда выбрать что-то в Интернете. Netflix, например предложит другой фильмы, которые вы, возможно, захотите смотреть. Или Пандора предложит разные Песни, которые вы, возможно, хотят, чтобы слушать. Amazon будет предлагать какие виды другие продукты вы можете купить. Facebook даже предположить, некоторые из других друзей что вы, возможно, захотите добавить. Каждая из этих систем работают с использованием тот же основной тип алгоритма, и это то, что мы поговорим сегодня. Теперь эти алгоритмы Неудивительно большой бизнес. Netflix несколько лет назад в 2 009 предложил $ 1 млн Приз, если вы могли бы улучшить их Рекомендация система только на 10%. Это на 10%, хотя, представляет собой Значительное количество из бизнеса. Оценки трудно прийти, но многие люди считают, что эти рекомендации системы для интернет-покупки Система, как Amazon, приводят к куда между 10% и 25% увеличения доходов. Таким образом, вы можете себе представить, вид объема, что вы речь, когда мы думаем о даже эти маленькие алгоритмы. Итак, давайте примеры. Как это, что они Системы действительно работает? Есть два основных виды алгоритмов, при игре, когда мы говорим о генерирующие рекомендации. Первые называются Содержание фильтрация. И фильтрация на основе содержания основывается на сходстве между пунктов Сами, то есть между двумя фильмами или две песни или два приобретенных товаров. Мы собираемся использовать фильмы В качестве примера, но это может применяться, в самом деле, любой тип из возразить, что мы ищем. Так что, если я думаю о некоторых фильмы с прошлого года, Я видел наизнанку с мои дети, они любили его. Но мы также имели выбор. Мы могли бы пойти, чтобы увидеть прислужников, мы могли бы увидеть Возраст Альтрона, или мы могли бы видели Ant Человек в театрах. Для любого из них фильмы, мы могли бы себе представить, создания списка функций или качества о тех различных фильмов. Так, например, я мог бы рассмотреть какой из этих фильмов анимированы. Ну, как Inside Out и Миньоны анимированы. Ни возраст, ни Альтрона Ant Man являются анимационных фильмов. И я мог бы себе представить здание до структуры, стол, что список каждого из этих свойств. Они анимированные или нет? Я мог бы добавить еще Особенности этой таблице добавив несколько строк в этой структуре. Я мог бы спросить, есть ли или не они Marvel фильмы. Ну, Inside Out и Миньоны не Marvel фильмы, Возраст Ultron и Ant Man, безусловно, есть. И я мог бы задать любые виды из различных качеств что я хотел, любые виды функций что может быть важно для меня. Есть ли у них супер злодея? Ну, нет супер злодей в Inside , Но есть те, в Миньоны и в, очевидно, два супергероя фильмов. Я мог бы также спросить вещи, как, ну, они проходят тест Bechdel? Существуют два имени женские персонажи, которые потратить некоторое значительное количество Время разговора: что не привлекают мужчин в броском? Ну, в данном случае, Inside Out проходит тест, Миньоны не удается, возраст Ultron проходит испытание, и Муравей человек не. Любой из этих функций Я мог думать только о как важно для некоторых людей. Я мог бы также спросить, как вещи являются Есть ли люди в этих фильмах, которые являются выпускниками из скажем, Парки и Отдых, один из моих любимых шоу. Ну, Inside Out имеет Эми Поехлер, это выпускником. Это приравнивается. Джон Хэмм был в Миньоны. Пол Радд был в Ant парня, но никто не в эпоху Ultron был в парки и Req также. Так что я могу создать этот список особенности и они могли действительно быть что-нибудь о кино. Они могут быть о том, что соотношение их расстреляли в, это может быть, сколько мест они продается на их первый уик-энд. Любой признак, что я хочу, чтобы генерировать я могу поставить в этой таблице. Теперь, в этом случае, я построил все вроде значений Bullion, да или нет, передать или не, но они могут быть чем-нибудь. Они могут быть произвольные значения. Для фильтрации контента на основе, то, что мы собираемся сделать том, что мы будем рассматривать две колонки в этой таблице и посмотреть, насколько они похожи. Так, например, если пошел к Inside Out, Я мог бы спросить, каковы другие фильмы что я мог бы быть готов пойти посмотреть. То есть, чем готов тратить деньги, чтобы пойти посмотреть. И я могу сравнить это, просто принимая две колонки, одна из Inside Out и один из любой из другие фильмы, и просто увидеть сколько их особенности матче. Так что, если я сравниваю Inside Out с Миньоны, ну, там три вещи, которые здесь совпадают. Они оба анимированные, ни один из них являются Marvel фильмы, и оба из них есть парки и Req выпускников. Так что я мог рассчитывать на, как многие матчи были, и в этом случае было бы три. Итак, если я сравниваю Inside Out с, скажем, век Ultron, Я могу смотреть вниз список и сказать, ну, есть только одна вещь, которая соответствует есть. Они оба пройти тест Bechtel, так что будет оценка одного. А между Inside Out и муравей Человек, я снова Сравните построчно, сколько вещи совпадают между двумя из них. Ну, один анимационных, один не. Один это фильм Marvel, один нет. Один получил супер злодея, другой нет. Один проходит Bechtel Тест, не удается его, но они оба имеют Парки и Req выпускников, так что опять, он получает балл одного. Так что, если бы я искал для фильмов что были похожи на Inside Out, Я мог смотреть на фильмы, которые имеют высокая оценка в этом содержании Фильтрация схема. Таким образом, в этом случае, я рассмотрит прислужников чтобы быть ближе и скорее всего, что-то, чтобы быть что я бы потратить деньги, чтобы увидеть чем век Ultron или Ant парня. Они основаны содержание фильтрующие системы полагаются только от свойств фильмы, и поэтому я можно построить эти просто зная то о продуктах что у меня есть. Я могу использовать любые виды особенности, которые я хотел бы, и я могу построить более сложные функции, которые привлекать более комплексное тестирование такого качества, как я иду вперед. На самом деле, я даже можете просмотреть эту таблицу не как один статический объект, а как размеры в большей пространстве состояний. И я могу начать говорить о расстояния между различными фильмами. Все эти вещи, что мы знаем, как они сделать с помощью виды структур данных что мы уже видели в CS50. Так что я мог себе представить, здание структура данных для фильма. Там это структура, что я построен называется фильм, и имеет пять логических записей в нем. Это анимированные ли, это чудо фильм, у него есть супер злодея, это пройти тест Bechdel, и есть парки и Rec выпускники в этом? И каждый из них представляет собой Структура данных, что я может занимать для этого конкретного фильма. Затем вычислить ли два фильмы, подобные или нет, что их оценка, я мог выписать набор псевдокоде, что генерирует эту же функцию. То есть, учитывая некоторые фильмы М1, я могу найти наиболее похожий на него фильм следуя псевдокод. Я считаю, что является лучшим забив систему, что я нашел, лучший сравнение, которое я нашел. Для каждого другой фильм Я собираюсь пройти, Я установил счет матча равный 0. И я пройти через это фильм, с M1, фильм Я начал с того, что будем проверять каждый функция что они должны видеть если есть матч. Если есть матч, я буду увеличить счет матча. И если в конце матча счет, что Я лучше, чем нынешняя лучше забить, то я буду помните, что лучший результат, и это лучший матч, который у меня есть. В конце концов, все фильмы сидит в лучшем матче, это ближе Я был в состоянии прийти. Таким образом, эти содержание, основанное Системы фильтрации, все они имеют эту базовую структуру. Они полагаются на пункт в вопросе и ничего о любом из предпочтений пользователя. Другой механизм, который мы используем в чтобы построить рекомендательные системы называется совместная фильтрация. Совместное фильтрации полагается на не качества самого объекта, но, как люди, другие Пользователи, которые есть, как они ответили на эти же объекты. Таким образом, чтобы продолжить моем примере фильма, Я мог бы взять кучу моих друзей и обследовать их о том или они не понравились отдельные фильмы. Теперь разные места будет генерировать Эти данные по-разному. Вы можете прямо обследовать ваш пользователи, или вы могли бы просто видеть, что они выбирают, если Вы, например, Netflix. Какие фильмы они смотреть? Я мог бы вопрос некоторые из моих друзья здесь и узнать что Джейсон понравился каждый фильм он увидел, не удивительно, там. Энди любил только прислужников и тетю Человека. Сара понравилась Inside Out и Мстители, наоборот Энди. И Сэм, и Сэм любил все о супергероях фильмов, но ни один из анимационных фильмов. Я мог бы запросить некоторые новые индивидуальный, некоторые другой пользователь, как я, и спросить, хорошо, если мне понравилось один из этих фильмов, Вы можете сделать прогноз о какие другие фильмы я хотелось бы. То есть, если мне понравилось Внутри Отъезда, которые другие фильмы я, скорее всего, также хотим, чтобы на основе того, что сделал подобные люди? То есть, я пойду через Я фильтровать этот список и найти только лица, которые также понравились Inside Out, который согласованного мои предпочтения. Ну, это означает, что Энди и Сэм, что им не нравится наизнанку, так что я не собираюсь рассматривать их. Я собираюсь избавиться от их Данные для такого сравнения. Затем я могу смотреть на то, Джейсоном и подумала Сара и подсчет до которой из фильмов, которые они видели что я не сделал, понравилось ли они их или нет. Я мог бы просто подсчитать, скажем голосов. Так приспешников, например, может возникнуть одна голосовать за него, потому что Джейсон понравилось. И Джейсон и Сара понравилась Мстителей, так что будет иметь два голоса. И только Джейсон понравился Ant Man, так что было бы получить один голос. Так что, если я должен был затем рекомендовать для себя, какой из этих фильмов Я мог бы быть, скорее всего, смотреть, я бы нужно выбрать век Ultron: Мстители. Таким образом, для любого из них Системы, в настоящее время я использую Данные, который был сгенерирован не о сам фильм, но о предпочтениях от других пользователей. Это имеет некоторые трудности, конечно. Что делать, если у вас нет каких-либо других пользователей? Ну, что называется запуск проблема. Вы должны иметь некоторые количество данных, прежде чем вы возможность начать зарабатывать эти рекомендации. Оборотной стороной этого является один раз Вы начинаете сбор данных, если вы можете собрать больше и все больше и больше данных, Вы получите все лучше и лучше и лучше рекомендации. Теперь мы могли бы перевести это в коде, а также. Мы можем определить другое Такая структура, в этом случае мы будем называть его пользователь. И он получил функции о какие фильмы этого пользователя понравилось. Они хотели Inside Out, Миньонов, Мстители, и муравей Человек. Мы могли бы генерировать некоторые псевдокод следовать та же процедура, что я использовал раньше. То есть, учитывая особенности Пользователь х, давайте рекомендуем кино что х может понравиться. Мы можем пройти и для всех фильмов, мы можем инициализировать счет для этого кино, чтобы быть 0. И тогда мы можем найти все других пользователей, которые имеют те же предпочтения, как х. А потом каждый фильм, который им понравился, мы увеличиваем счет этого фильма. Какой бы фильм в конец имеет высокий балл, это тот, который я должен рекомендовать. Все это на самом деле неясно. Ничто из этого не является сложной задачей. Это все основные алгоритмы что вы могли бы реализовать сегодня. Теперь в режиме реального рекомендательных систем, Вы столкнуться с некоторыми проблемами. Что делать, если нет никого, кто точно соответствует вашим предпочтениям? Что делать, если есть пользователи, которые ровно ваши предпочтения, но потом резко отклоняться от того, что вы хотели? Мне нравится классический Годзилла фильмы, но моя жена не делает. Мне нравится смотреть на них, мой Счет Netflix содержит их. Ее нам не делает. Что происходит, когда мы начинаем смешивания данных, как это? Все эти проблемы что вы можете преодолеть, они просто занять немного более сложных алгоритмов. В настоящее время в реальном мире, который на самом деле работает, мы используем фильтрацию содержимого на основе или мы используем совместной фильтрации? И ответ мы используем оба. Почти все из главных пользователей этот случай, Amazon, Facebook, Netflix, Пандора, все они используют комбинацию эти различные системы рекомендаций. И когда мы объединяем выбор из каждый, мы называем их гибридные системы. Они каким-то образом зависеть от особенности самого объекта, и в некоторых отношениях они зависят от предпочтения других пользователей. Эти гибридные системы, они большие бизнес, и они то, что ток сегодня. Так что спасибо очень много для присоединиться ко мне. Я надеюсь, что вы получили немного немного понимания того, что делает эти работы системы. В следующий раз вы в Интернете, помните, что не только вы, влияющим ваш выбор, но потенциально все еще, как хорошо. Еще раз спасибо.