#はじめに
この記事はプログラミング初心者の筆者が機械学習をすすめる上で、参考になったことを備忘録がてら記すものです。
素人目線で参考になった情報などを記載していきます。
#機械学習のために参考になったサイトの紹介
何かとトレンドの機械学習を私も試してみたくなり、いちから挑戦しています。
###機械学習とはなんぞや
まず機械学習とは何かを簡単に学べるサービスの紹介です。
####其の一、aidemy
無料の会員登録が必要だが、動画で機械学習の入門を学べます。
無料のコンテンツはそこまで多くないが、まず概要をサクッとさらいたい人はよいかも。
Pythonの初心者コースもあるので、プログラムを触ったことがない人でもとっつきやすいかも。
####其の二、codexa
https://www.codexa.net/
同じく無料の会員登録が必要だが、こちらは線形代数や統計など機械学習に必須となる部分も無料で学べます。
(めちゃくちゃ助かりました)
#実際に手を動かすにあたって行ったこと
inputを上から行い、次はoutputということで実際にものを作ってみたいと思います。
今回サンプルとして作るのは**「おすすめ機能」**です。
amazonとかでもあるアレです。
参考にしたのは、以下のサイトです。
初心者向けで丁寧に記載されており、とてもわかりやすかったです。
https://www.codexa.net/collaborative-filtering-k-nearest-neighbor/
####やってみてハマった2つのことを紹介
上の記事を参考にすればほぼコピペでいけると思うのですが、少しハマった部分もあったので書き留めておきます。
-
(そもそも)Atomでのautocomplete-pythonが作動しない
環境を作るにあたりエディターはAtomを使用したのですが、其の際にインストールしたautocomplete-pythonが作動せず…
ググったところ、
「C:\Users\username.atom\packages\autocomplete-python\lib\jedi\parser」
においてあるgrammarX.X.txt(Xはpythonのver)というファイルのverが自分の環境のPyhtonのVerと合っていないとだめでした。(StackOverFlowにそれらしき投稿があり、そちらを参考にしました。) -
MemoryErrorの罠
チュートリアルの記事通り進め、はじめは順調だったものの
出ましたMemoryError: Unable to allocate …
大量のデータを扱うので、この手のエラーは機械学習にはつきもののようですね。
試した解決方法は以下の2つです。
-
daskを使う
メモリに乗り切らないような大容量データを扱う際のライブラリだそうです。
今回MemoryErrorが起きたのはpivotの処理でした。
其の部分だけを分散して処理するような書き方を試行錯誤したのですが、うまくいかずあきらめました…
(誰か教えてほしい…) -
gc.collect() で手動でメモリを解放する
初歩的なことですが、たぶんあんまり意味なかった。 -
データの件数そのものを減らす
今回はチュートリアル的な意味合いで始めたこともあり、さくっとこちらで解消させました。
具体的には、「members (当該のアニメのグループに所属しているユーザー数)が10,000以下のデータを足切り」という処理があるのですが、其の数字を徐々に増やしただけです。
##実行結果
上記の様にごまかしながらですが、ひとまずチュートリアルを終える事ができました。
※個人的に好きな灼眼のシャナで実施してみましたが、まぁわかるようなおすすめラインナップです。
##まとめ
機械学習の初歩として、基本的な関数の使い方、データの考察・加工の仕方などがわかり個人的には満足です。
引き続き実務に使えるようなものを作成できるよう精進していきます