>> [音楽再生]
>> 脳SCASSELLATI：ようこそ CS50のAIシリーズへ。
私の名前はScassで、今日はつもりです 推薦システムについて話をします。
今推薦システムの音 奇数名の一種のように。
それは多分それが必要のように聞こえます 推薦システムとすることが、
私は種類のあなたに同意。
しかし、これらは役立つシステムです いつでも同じような物事を選択
あなたがオンラインで何かを選択します。
ネットフリックスは、例えば他の提案します あなたが見たいと思うかもしれない映画。
または、パンドラは異なる提案します 聴きたい曲かもしれません。
Amazonはどのような種類のを提案します 他の製品は、あなたが購入することをお勧めします。
Facebookはあっても提案します 他の友人の何人か
あなたが追加したいかもしれません。
これらのシステムの各々は、使用して動作します アルゴリズムの同じ基本的な種類、
それは私たちがしているものです 今日の話に行きます。
>> 現在、これらのアルゴリズムは、 驚くほど大きなビジネス。
数年前ではNetflix 2009 $ 1M（100万ドル）を提供しました
賞品あなたはそれらを改善することができれば わずか10％の推薦システム。
その10％が、しかし、表し 事業のかなりの量。
見積もりはしにくいです で来るが、多くの人々
これらの推奨事項と考えています オンライン購入のためのシステム
どこかにアマゾンリードのようなシステム 10％〜25％の収益を増加させました。
だから、想像することができます あなたがしているボリュームの種類
我々が考えるときの話 でもこれらのほとんどのアルゴリズム。
>> それでは、いくつかの例を取得してみましょう。
それは、これらのことをどのように システムは、本当に仕事？
基本的な2があります。 そのアルゴリズムの種類
我々はについて話すときのプレイであります 推奨を生成します。
最初のものが呼び出され コンテンツベースフィルタリング。
そして、コンテンツベースフィルタリングは依存しています アイテム間の類似性に
それ自体、それは、二つの映画の間にあります または2曲または2購入したアイテム。
私たちは映画を使用するつもりです 例として、この
いずれのタイプに、本当に、適用することができます 我々が探しているオブジェクトの。
>> だから私はいくつかを考える場合 昨年から映画、
私はインサイドアウトました 私の子供たちは、彼らはそれを愛しました。
しかし、我々はまた、選択肢を持っていました。
私たちは、手先を見に行っている可能性 我々はULTRONの時代を見たことができ、
または私たちが見ている可能性が 劇場でのAntの男。
>> これらのいずれかのために 映画は、我々が想像できます
機能のリストを生成しますか、 これらの異なる映画についての資質。
したがって、たとえば、私が検討することもでき それらの映画のどのアニメーション化されます。
まあ、両方のインサイドアウト そして、手下をアニメーション化されます。
ULTRONの時代どちらも Antの男がアニメーション映画です。
そして、私は建物を想像することができ 構造、テーブルアップ
これらの各プロパティを示しています。
彼らはアニメーションやいませんか？
私は、より多くを追加することができます この表の特徴
この構造体に複数の行を追加します。
私が求めることができるかどうか 彼らはマーベル映画だありません。
まあ、インサイドアウトと手先 マーベル映画で​​はありません、
ULTRONとAnt男の年齢は確かにありま​​す。
>> そして、私は、任意の種類を求めることができます 異なる性質
私が望んでいたことを、特徴の任意の種類 それは私にとって重要であるかもしれません。
彼らは超悪役を持っていますか？
まあ、内部には超悪役はありません アウトが、手下でものがあります
そして、で、明らかに、 2スーパーヒーロー映画。
>> 私も、よく、のようなものを求めることができます 彼らはBechdel試験に合格するのですか？
名前の2つがあります 女性キャラクター誰
いくつかのかなりの量を過ごします 時間会話をしています
キャストの男性を必要としませんか？
さて、この場合には、インサイドアウトは合格 ULTRONのテスト、手下が失敗し、年齢
テストに合格し、Antの人が失敗します。
これらの特徴のいずれか 私は考えることができ
何人かの人々のために重要であるとして。
>> 私はまた、アールのようなものを求めることができます そこに、これらの映画の中で任意の人々
のは言わせてから卒業生、公園とは レクリエーション、私のお気に入りの番組の一つ。
まあ、インサイドアウトは、エイミーがあります ポーラーは、それが卒業生です。
それがカウントされます。
ジョン・ハムは手下にありました。
ポール・ラッドは、Antの男であったが、誰も ULTRONの時代に公園や必須でした
同様に。
だから私はこのリストを構築することができます 機能、そして、彼らは本当にできました
映画について何もします。
彼らは約何ができますか アスペクト比は、それらがで撮影されました、
それは彼らがどのように多くの議席かもしれません そのオープニングの週末で販売。
私がしたいすべての機能 私はこのテーブルに置くことができます生成されます。
>> さて、このケースでは、私が構築しました 地金値のすべての並べ替え、
yesまたはno、合否、 しかし、彼らは何でもかまいません。
彼らは、任意の値である可能性があります。
コンテンツベースフィルタリングについては、 私たちがやろうとしています
我々が検討するつもりされています この表の2列
彼らがどの程度似ているかを参照してください。
例えば、もしだから私 インサイドアウトを見に行きました、
私は他の映画は何、頼むかもしれません 私が見に行くことをいとわないかもしれないという。
それは、どのように意思があります 見に行くために私のお金を費やしています。
そして私はちょうど取ることによって、これを比較することができます 2列、インサイドアウトから1
とのいずれかから1を 他の映画、とだけ見て
どのように多くの彼らの特徴の試合の。
だから私はインサイドアウトを比較した場合 手下で、よく、あります
ここに三つのことに一致。
これらは両方とも、それらのどちらもアニメ化しています マーベル映画があり、それらの両方
公園や必須卒業生を持っています。
だから私はどのようにカウントアップができました 多くの試合がありました
この場合、3があると思います。
>> 私は、インサイドアウトを比較すると 聞かせてのは、ULTRONの年齢を言います
私はリストを下に見ることができます よく、そこだ、と言います
そこに一致した一つだけ。
彼らは両方のように、ベクテルテストに合格 それは、一つのスコアになるだろう。
そして、インサイドアウトの間 Ant男、再び私は
どのように多くの行ごとに比較することができます 物事はそれらのうちの2つの間に一致します。
まあ、自分のアニメーション、1ではありません。
一つは、一つではありません、マーベルの映画です。
一つのスーパー悪役を持って、 他にはありません。
一つは、ベクテルを渡します テストでは、人はそれを失敗し、
しかし、彼らの両方が、公園や必須卒業生を持っています そう、再び、それは1のスコアを取得します。
>> だから私は映画を探していた場合 それは、インサイドアウトと同様でした
私は映画のためになります このコンテンツ内の最高スコア
フィルタリング方式。
私は、このケースでそう 手下を検討します
近づくとよりなるように 何かである可能性が高いです
私が見るためにお金を使うだろうと ULTRONまたはAnt人間の年齢よりも。
>> これらのコンテンツベース フィルタリングシステムは、単に頼ります
の特性に 映画、私
ちょうど知ることによって、これらを構築​​することができます 製品について何か
私が持っていること。
私は、任意の種類を使用することができます 私が好きな機能、
私はより多くを構築することができます 複雑な機能その
より複雑なテストを必要とします 私が一緒に行くような品質の。
実は、私もこのテーブルを表示することができます ない1静的オブジェクトであるとして、
むしろ寸法であるとして 大きな状態空間内。
そして、私はについて話し始めることができます 別の映画の間の距離。
これらは、すべてのものです 私たちはどのように知っています
データ構造の種類を用いて行います 我々はすでにCS50で見てきたこと。
だから私は建物を想像することができ 映画のためのデータ構造。
私がきた構造があります 構築という映画、
そして、それはそれで5ブールのエントリがあります。
それがアニメーション化され、それは驚異です 映画は、それが超悪役を持っていません、
それはBechdel試験に合格しないと、 公園や録音の卒業生は、その中にあるのですか？
これらの各々は 私のデータ構造
その特定の映画のために占有することができます。
>> その後2かどうかを計算 同様のかそうでない映画、
そのスコアが何であるか、私は可能性 擬似コードのセットを書き出すこと
同じ関数を生成します。
それは私がすることができ、いくつかの映画M1与え、あります それに最も類似動画を検索
擬似コードを以下によります。
私は、最適な検討します 私が見つけた得点システム、
私が見つけた最高の比較。
他のすべての映画のために 私は、通過するつもりです
私は0に等しいマッチスコアを設定します。
そして、私はそれを通って行きますよ 映画、M1、映画
私がチェックします、で開始 一人ひとりの特徴
彼らが見ていること 一致がある場合は。
マッチがあれば、私はよ 試合のスコアを増加させます。
そして、その末尾にマッチスコアの場合 私は現在のベストよりも優れています
その後、私はよ、スコア その最高のスコアを覚えて、
これは私が持っているベストマッチです。
最後には、どのような映画 ベストマッチに座っています、
それは近いです 私は来ることができました。
したがって、これらの内容は、ベース フィルタリングシステム、
それらはすべて、この基本的な構造を有しています。
彼らは、アイテムに依存しています 質問と何もで
ユーザーの好みのいずれかについて。
>> 私たちが使用する他のメカニズム 推薦システムを構築するため
協調フィルタリングと呼ばれています。
協調フィルタリングはに依存しています オブジェクト自体のない資質、
しかし、どのように人々、他の 彼らがきたか、あるユーザー
これらの同じオブジェクトに反応しました。
だから私の映画の例を続行し、 私は私の友人の束がかかる場合があります
そしてかどうかについてのそれらを調査 彼らは、特定の映画が好きではありません。
今、別の場所に生成されます。 さまざまな方法でこのデータ。
あなたは直接調査することができます ユーザー、またはあなただけの可能性
彼らがあれば選択内容を確認 あなたは、例えばNetflixのために、です。
彼らは、どの映画を見たのですか？
>> 私は自分の一部に疑問かもしれません ここで友人と見つけます
ジェイソンは、すべての映画を気に入っていること 彼はそこに驚くべきことではない、見ました。
アンディは、手下とおばさん男が好きでした。
サラはインサイドアウトが好きで、 アベンジャーズ、アンディの反対。
そして、サムは、よく、サムは言っています スーパーヒーロー映画のすべて、
しかし、アニメーション映画のどれも。
>> 私は、いくつかの新しいを照会することができ 個々の、私のようないくつかの他のユーザー
私が好きならと、よく、頼みます これらの映画の一つ、
あなたはについての予測を行うことができます これは私が好むかもしれない他の映画。
私は内部好きならつまり、 アウト、これは他の映画
私も見たいしそうです 同じような人が何をしたかに基づいて？
つまり、私が通って行きますよ 私はこのリストをフィルタリングします
ちょうど見つけます また、気に入った人
私の好みにマッチしたアウト、インサイド。
まあ、それはつまり、アンディと サムは、彼らが、インサイドアウト好きではなかったです
私はそれらを考慮するつもりはありません。
私は彼らを取り除くつもりです この比較のためのデータ。
>> 私は、どのようなジェイソンで見ることができます そして、サラは考えて、タリー
彼らが見た映画のどのアップ 私は、彼らが彼らが好きかどうか、しなかったこと
か否か。
私はちょうどのが票を言わせて、カウントアップ可能性があります。
手下ので、例えば1を持っている可能性があります ジェイソンはそれが好きので、それに投票。
ジェイソンとサラの両方がアベンジャーズを気に入って、 ので、2票を持っているでしょう。
そして唯一のジェイソンは、Antの男が好き それは、一票になるだろう。
だから私は、お勧めしていた場合 これらの映画の自分れます
私はでしょう、見て最も可能性が高いかもしれません アベンジャーズ2を選択する必要があります。
>> これらのいずれかのためにそう 今私が使用しているシステムでは、
ではありません生成されたデータ 映画そのものではなく、環境設定について
他のユーザから。
これは、もちろん、いくつかの困難を有しています。
あなたが他のユーザーを持っていない場合はどう？
まあ、それは起動時の問題と呼ばれています。
あなたはいくつかを持っている必要があります データの量、あなたがしている前に、
作り始めることができます これらの推奨事項。
それのフリップ側は一回です あなたは、データの収集を開始します
あなたはより多くを収集することができる場合 そして、より多くのデータ、
あなたは良くなるでしょう より良い提言。
>> 今、私たちは翻訳することができ コー​​ドにこれも同様に。
我々は、さまざまなを定義することができます 構造の種類、
このケースでは、ユーザーにそれを呼ぶことにします。
そして、それはについての特徴を持っています これは映画のこのユーザーが好きでした。
彼らはインサイドアウトが好きでした、 手下、アベンジャーズ、とAntマン。
それから、生成することができます 従うべきいくつかの擬似コード
私が前に使用したのと同じ手順。
すなわち、特定の与えられ ユーザX、の映画をお勧めしてみましょう
そのxが好むかもしれません。
我々は通過して行くことができます 映画のすべてのために、
我々はスコアを初期化することができます その映画0であるために。
そして、我々はすべてを見つけることができます 他のユーザーの誰
xと同じ嗜好を持っています。
そしてすべてのための 彼らは言っています映画、
私たちは、その映画のスコアをインクリメントします。
でどちらの映画 最後は最高のスコアを持っています、
それは私がお勧めする必要があります一つです。
>> これのどれも本当にあいまいではありません。
これはいずれも困難でありません。
これらは、すべての基本的なアルゴリズムであり、 あなたは今日実装できること。
>> これからが本当の推薦システムと、 あなたはいくつかの問題に遭遇します。
どのような誰もがない場合は誰 正確にあなたの好みにマッチしますか？
ユーザーは何がある場合は誰 あなたの好みは正確であり、
しかし、その後、急激にずれます あなたが好きなものから？
私は古典的なゴジラが好き 映画、私の妻はしていません。
私は、それらを見るのが好き Netflixのアカウントには、それらが含まれています。
彼女のにはありません。
私たちが起動したときに何が起こります このようなデータを混合？
これらは、すべての課題です あなたが克服することができ、
彼らはわずかに取ります より複雑なアルゴリズム。
>> 今現実の世界では、これ 実際に動作しています、
私たちは、コンテンツベースフィルタリングを使用するのですか 我々は協調フィルタリングを使用していますか？
そして、その答えは、我々はそれらの両方を使用しています。
ほぼすべての主要なユーザーの この場合、アマゾン、フェイスブック、ネットフリックス、
パンドラ、それらはすべての組み合わせを使用 これらの異なる推薦システム。
そして、我々はから選択を結合する場合 それぞれ、我々はハイブリッドシステムにそれらを呼び出します。
彼らは何らかの形で依存します オブジェクト自体の特徴、
そして、いくつかの点で彼らが依存します 他のユーザの嗜好。
これらのハイブリッドシステム、 彼らはビッグビジネスです、
彼らは今日現在何です。
>> 私を結合するための非常に感謝しそう。
私はあなたが少しを得ている願っています 何の理解のビット
これらのシステムが動作させます。
あなたがオンラインしている次回は、それを覚えています あなたはあなたの選択に影響を与えるだけでなく、
しかし、潜在的に、誰も他の人のようにも。
再度、感謝します。