3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

レコメンド初心者の基本学習方法と結果・感想

Last updated at Posted at 2022-02-14

仕事でレコメンドに関わるので基本から学習しましした。その学習方法と記録、感想などです。
Udemyのレコメンドに関するコースRecommender Systems and Deep Learning in Pythonを受講しました。ちょうどブラックフライデーで1800円と格安でした。この値段で効率よく学習できたと思えば異常にコスパ良いです。1万円払ってもいいくらい。
レコメンドは他の機械学習分野と比べて癖があるので、基本を学べる機会ができて良かったと感じました。このコース中か、どこかのサイトでか「レコメンドは回帰や分類と違い、欠損値補完に近い」と書かれていて、その感覚が腑に落ちました。

後で気づいたのですが、Googleの以下のLearning良いですね。非常にわかりやすかったです。

サマリ

OptionalのLectureは結構飛ばしていて、RBMも完全に理解していません(Codingもしていない)。

項目 内容
目的 レコメンドの基本習得
期間 約2.5ヶ月
総時間(実績) 約45時間
方法 有償オンラインコース「Recommender Systems and Deep Learning in Python」
Repo(学習結果) https://github.com/YoheiFukuhara/recommender-system
Repo(学習元) https://github.com/lazyprogrammer/machine_learning_examples/tree/master/recommenders

学んだことサマリ

レコメンドの考え方における基礎、そして協調フィルタリングとMatrix Factorizationについて学べました。数式からコーディングも含めて覚えることができました。
私は基礎のみを覚えたかったので飛ばしましたが、RBM(制限ボルツマンマシン)およびSparkでの実装についてはスキップしています。

数学と機械学習の前提知識

数学と機械学習が入り混じっていますが、以下の勉強をしていた状態で臨みました。大学は文系卒で数学苦手です。ここにたどり着くまで長すぎ。英語は基本的に難しくないですし、字幕もあるので問題ありません。たまに数学・統計用語の英単語がわからず?となることがあり。

  1. 高校数学復習と大学基礎レベルの数学(微積・統計・線形代数)勉強
  2. 「統計学入門 (基礎統計学)」で統計基本を勉強
  3. 「Rによるやさしい統計学」でR言語を使いながら統計基本を勉強
  4. 「やさしく学ぶ 機械学習を理解するための数学のきほん」で機械学習と数学を勉強
  5. ディープラーニングを使った画像処理システムを仕事で構築
  6. Coursera機械学習入門オンライン講座で機械学習に入門
  7. 言語処理100本ノック 2015年版で言語処理の基礎をPythonで勉強
  8. 「はじめてのパターン認識」で機械学習基礎を勉強

「1. 高校数学と大学基礎レベルの数学」は絶対に必要ですね。詳しくは、記事「文系卒社会人が統計・機械学習を理解するための数学勉強方法【随時更新】」を参照ください。あと、「5. Coursera機械学習入門オンライン講座」は必須ではないですが、強くおすすめします。レコメンドに関しても9周目で学習します。

学習の進め方

動画を見て自分自身の理解が浅いと思ったことは、ネットで調べたり、コードを見たり書いたり、数式を書きながら理解を深めていきました。
こうして書いてみると特別なことはしていませんね。

Lecture 一覧

以下は Lecture 一覧で、「難易度」列は:star:が多いほど難しい。動画を1回見るだけでも12時間ほどかかります。

No Section 総動画時間 Lecture数 難易度 学んだことなど
1 Welcome 19分 4 :star: コース概要や注意点のみ
2 Simple Recommendation 2時間31分 20 :star::star: Associations, Lift, ExploreとExploitのジレンマ, 評価指標, ベイズアプローチ
3 Collaborative Filtering 1時間29分 8 :star::star: ユーザベース, アイテムベース
4 Beginner Q&A 14分 3 :star: Cold-Start問題
5 Matrix Factorization and Deep Learning 2時間6分 19 :star::star: MFとディープラーニング
6 Restricted Boltzmann Machines(RBM's) for Collaborative Filtering 1時間36分 13 :star::star::star: 制限ボルツマンマシン(RBM)
7 Big Data Matrix Factorization with Spark Cluster on AWS/EC2 47分 19 :star: SparkでのMF
8 Basics Review 36分 13 :star::star: Keras, 信頼区間, 共役事前分布
9 Setting Up Your Environment(FAQ by Student Request) 38分 2 :star: Anaconda, Python環境
10 Extra Help With Python Coding for Beginners(FAQ by Student Request) 42分 4 :star: コーディング関連Tips
11 Effective Learning Strategies for Machine Learning(FAQ by Student Request) 1時間 4 :star: 機械学習の勉強法
12 Appendix / FAQ Finale 8分 2 :star: 追加

内容

スキップしているLectureもあります。Section 1 だけ補足を書きます。他は流石に有償コースなので書けないです。

Section 1. Welcome

まずは簡単な概要。コードはGitHubでデータはkaggle|

Lecture 時間 内容
1. Introduction 3分 推薦使用例やコースで何を学ぶかの概要
2. Outline of the course 5分 コースの流れ
3. Where to get the code 5分 コードとデータの取得元
4. How to Succeed in this Course 6分 3つのTipsなど

3. Where to get the code

コード

取得元 Repository。 「コードは頻繁に変えるからForkするな、Cloneしろ」と言っていました。結局私はCloneもせずに、必要に応じてコピペして終わりました。

データ

データはKaggleからダウンロード。動画内にURLは書いてあるが、検索エンジンで検索しろと注意書きありました。たまにURL変わるのでしょうか。
ディレクトリは以下のように作るように指示がありましたが無視しています。rating.csvファイル以外は使いません。

Directory
root/
 ├─recommenders
 ├─large_files/movielens-20m-dataset/rating.csv
 └─...ohter folders...

4. How to Succeed in this Course

3つのTipsあり

  1. Use the Q&A
  2. Meet the prerequisites
  3. Code by yoruself

Udemyコース内だけでなく、以下のサイトもQAとしてある。

Section 2. Simple Recommendation Systems

レコメンドの基本。(パーソナライズではなく)ジェネラルなレコメンドを学びます(売上ベースなど)。取っ掛かりとして非常に良い内容。Bayesian Approachは学習しませんでした。

Lecture 時間 内容 短評
5. Section Introduction 4分 セクションの流れ
6. Perspective for this Section 4分 セクション概要
7. Basic Intuition 5分 基本的な概念
8. Associations 5分 組み合わせ
9. Hacker News - Will you be penalized for talking about the NSA? 7分 Hacker Newsの事例 人気のある記事と時間軸の考慮
10. Reddit - Should censorship based on politics be allowed? 9分 Redditの事例 ポリコレへの言及あり
11. Problem with Average Rating & Explore vs. Exploit(Part 1) 11分 Average Rating問題 信頼区間などの数式は深く理解しない
12. Problem with Average Rating & Explore vs. Exploit(Part 2) 8分 Average Rating問題とExploreとExploitのジレンマ
13. Bayesian Approach part0(Preparation) 12分 Bayesian Approachを理解するためのChecklist 任意のLecture
14. Bayesian Approach part1(Optional) 11分 先を急ぐためスキップ
15. Optional: Bayesian Approach part2(Sampling and Ranking) 6分 先を急ぐためスキップ
16. Optional: Bayesian Approach part3(Gaussian) 8分 先を急ぐためスキップ
17. Optional: Bayesian Approach part4(Code) 12分 先を急ぐためスキップ
18. Why don't we just use a library 6分 なぜライブラリを使うか
19. Demographics and Supervised Learning 7分 人の属性と教師あり学習
20. PageRank(part1) 11分 Page Rank 任意で先を急ぐためスキップ
21. PageRank(part2) 12分 任意で先を急ぐためスキップ
22. Evaluating a Ranking 5分 ランキングの評価
23. Section Conclusion 4分 セクションのまとめ
24. Suggestion Box 3分 このコースのフィードバック方法

以下の3つの記事を参考にしました。

Section 3. Collaborative Filtering

協調フィルタリング。数式とコードで学びます。

Lecture 時間 内容 短評
25. Collaborative Filtering Section Introduction 12分 前Section振り返りと本Section概要
26. User-User Collaborative Filtering 14分 User-User Collaborative Filtering タイトルのとおり
27. Collaborative Filtering Exercise Prep 10分 Exerciseの準備説明
28. Data Preprocessing 15分 データ前処理 コーディングに想像以上時間かかった
29. User-User Collaborative Filtering in Code 16分 レコメンド処理のコーディングExercise 処理時間長い・・・
30. Item-Item Collaborative Filtering 9分 ユーザベースと類似
31. Item-Item Collaborative Filtering in Code 7分 ユーザベースと類似
32. Collaborative Filtering Section Conclusion 6分 Sectionまとめ

Section 4. Beginner Q&A

ビギナーにありがちな質問への回答。基本的に「Common Senseに従え」と。ビギナーは経験が無いが故に迷いがちだが、論理的にシンプルに考えると答えに行き着く。

Lecture 時間 内容 短評
33. How do I Choose Which Model to Use? 4分 モデル選択のTips シンプルなケーススタディと頭の体操
34. How do I Solve the Cold-Start Problem? 4分 Cold-Start問題対処法
35. What if I Don't Like Math or Programming? 6分 数学とプログラミング苦手だった場合

Section 5. Matrix Factorization and Deep Learning

このコースのメインとなるトピック。数式からコーディングまでがっつりやりました。

Lecture 時間 内容
36. Matrix Factorization Section Introduction 4分 Sectionの導入
37. Matrix Factorization - First Steps 15分 MFの基本考え方
38. Matrix Factorization - Training 9分 MFの損失関数と微分による最適化
39. Matrix Factorization - Expanding Our Model 8分 バイアス項の導入
40. Matrix Factorization - Regularization 6分 正則化
41. Matrix Factorization - Exercise Prompt 1分 次のExercise注意点
42. Matrix Factorization in Code 6分 Exercise
43. Matrix Factorization in Code - Vectorized 10分 1つ前のコードを高速化
44. SVD (Singular Value Decomposition) 8分 SVD(Optional)
45. Probabilistic Matrix Factorization 6分 確率的MF
46. Bayesian Matrix Factorization 6分 MF + ベイズ
47. Matrix Factorization in Keras (Discussion) 8分 KerasでのMF実装(理論)
48. Matrix Factorization in Keras (Code) 7分 KerasでのMF実装(Code)
49. Deep Neural Network (Discussion) 3分 NNでのモデル実装(理論)
50. Deep Neural Network (Code) 3分 NNでのモデル実装(Code)
51. Residual Learning (Discussion) 2分 MFとNNのアンサンブル(理論)
52. Residual Learning (Code) 2分 MFとNNのアンサンブル(コード)
53. Autoencoders (AutoRec) Discussion 10分 Autoencoder(理論)
54. Autoencoders (AutoRec) Code 12分 Autoencoder(コード)

Section 6. Restricted Boltzmann Machines(RBM's) for Collaborative Filtering

難しい。前提知識にFree Energyなど物理の知識?が必要っぽく、勉強時間かかりそうなのでざっと流しました。概要レベルでは理解したつもり。コーディングもしていません。

Lecture 時間 内容
55. RBMs for Collaborative Filtering Section Introduction 2分 Sectionのイントロ
56. Intro to RBMs 8分 RBMの基本
57. Motivation Behind RBMs 7分 Boltzmann Machines概要
58. Intractability 3分 計算量の難しさ
59. Neural Network Equations 8分 ニューラルネットワークの計算式
60. Training an RBM (part 1) 12分 RBM訓練の数式
61. Training an RBM (part 2) 6分 RBM訓練の数式
62. Training an RBM (part 3) - Free Energy 7分 Free Energy解説
63. Categorical RBM for Recommender System Ratings 12分 カテゴリカル(ランキング)も含むRBM
64. RBM Code pt 1 7分 RBMコーディング
65. RBM Code pt 2 4分 RBMコーディング
66. RBM Code pt 3 12分 RBMコーディング
67. Speeding up the RBM Code 8分 RBM高速化

Section 7. Big Data Matrix Factorization with Spark Cluster on AWS/EC2

Matrix FactorizationをSparkで処理。Sparkを直近で使う予定もないので、動画を1回見ただけ。

Lecture 時間 内容
68. Big Data and Spark Section Introduction 7分 ビッグデータとSpark
69. Setting up Spark in your Local Environment 8分 Sparkのローカル環境構築
70. Matrix Factorization in Spark 10分 SparkでのMF
71. Spark Submit 6分 Sparckのサブミット
72. Setting up a Spark Cluster on AWS / EC2 13分 AWSでのSpark構築方法
73. Making Predictions in the Real World 3分 Sparkでの推論方法(遅いからバッチ処理しとく)

Section 8. Basics Review

Kerasとその他がごっちゃに詰まっている。「79. Gaussian Conjugate Prior」は軽く見ただけで理解していない。

Lecture 時間 内容
74. (Review) Keras Discussion 7分 Kerasの基本
75. (Review) Keras Neural Network in Code 7分 Kerasコーディング
76. (Review) Keras Functional API 4分 Keras Functional API解説
77. (Review) How to easily convert Keras into Tensorflow 2.0 code 2分 Pure Kerasをtf.kerasへ書換
78. (Review) Confidence Intervals 10分 信頼区間
79. (Review) Gaussian Conjugate Prior 6分 共役事前分布

Section 9. Setting Up Your Environment(FAQ by Student Request)

自分には十分かと思い見ていません。

Lecture 時間 内容
80. Anaconda Environment Setup 20分
81. How to How to install Numpy, Theano, Tensorflow, etc... 18分

Section 10. Extra Help With Python Coding for Beginners(FAQ by Student Request)

「85. Python 2 vs Python 3」はPython2をもう使わないでしょう、と思い見ていません。

Lecture 時間 内容
82. How to Code by Yourself (part 1) 16分 コードの重要性とアドバイス
83. How to Code by Yourself (part 2) 9分 82の続き。Summaryもあり。
84. Proof that using Jupyter Notebook is the same as not using it 12分 Jupyter Notebookについて
85. Python 2 vs Python 3 5分

Section 11. Effective Learning Strategies for Machine Learning(FAQ by Student Request)

ここに機械学習の学習単元ごとの依存性の説明あり。

Lecture 時間 内容
86. How to Succeed in this Course (Long Version) 10分 「6. How to Succeed in this Course」の長バージョン
87. Is this for Beginners or Experts? Academic or Practical? Fast or slow-paced? 22分 色々FAQ
88. Machine Learning and AI Prerequisite Roadmap (pt 1) 11分 機械学習を学ぶためのロードマップ
89. Machine Learning and AI Prerequisite Roadmap (pt 2) 16分 機械学習を学ぶためのロードマップ

Section 12. Appendix / FAQ Finale

少し見ただけです。機械学習を学ぶための内容ではありません。

Lecture 時間 内容
90. What is the Appendix? 3分
91. BONUS 6分
3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?