ゼロから始める機械学習シストレ

プログラミングは一切やったことない方に向けて、ゼロから機械学習のシステムトレードを作成するまでの道のりを解説します。

プログラミングで重要な”3つ”の概念

1.変数

数学の変数と同じような感じ
プログラミングでの=は、代入を意味する。←みたいなほうが感覚的に近いかも。
a=3
b=2
c=a+b
cは5になる

2.型

そして、プログラミングと数学で1番大きく違うのが、変数は数字以外にもなれるということ

3.関数

関数の入力に使う変数を引き数という
関数の出力に使う変数を戻り値という
関数は世の中の頭のいい偉い人がいろんな関数を作ってくれています。
Time.sleep(1)
これはTimeというpythonファイルの中に記載されているsleepという関数を使うよ。という意味です
1はこの関数が必要な”引き数”です。
下記の呪文によって、1秒間処理を進めず何もしない、という処理が実行されます。
こんなのも自分で作るとなったら非常に大変ですが、偉い人が作ってくれてるので、我々は感謝をしながら使わせてもらうだけです。
ちなみにTimeというライブラリはpythonが標準で付いてきているものです。
標準の関数としては、print などもよく使いますね。
そして標準以外のライブラリも当然あります。
例えばGoogleが作ったTensorflowなどなど
このライブラリは、インストールをして、import OOという呪文でこのライブラリを使うことを宣言すれば、ライブラリ内の関数を同じように使えることができるのです。
ちなみに自分でも関数を自作することも出来ます。Def OO()と(DefはDefineの略でしょう)書けば良いです。引き数、戻り値も定義できます。

プログラムの流れとは

詰まるところ、プログラムとは、関数という便利グッズを使って、変数をこねくり回して欲しいデータにする事です。
変数を引き数として使い、生み出された戻り値をまた新たな変数として使い、それをまた引き数として使い、、、というような具合です。
この際引き数が求める”型”とマッチしていないと、エラーが出るので、我々は変数の型を意識しながら関数に放り込んでいく必要があります。
例えば、print(“文字列”)は処理可能ですが、time.sleep(“文字列”)は絶対処理できないですよね。
これをifで分岐したり、forでn回処理させたり、whileで永遠に繰り返したりするんです。

プログラミング学習で一番重要な事

プログラミング学習で一番重要な事はなんだと思いますか?
世の中に星の数ほどあるライブラリの関数一つ一つを暗記する事でしょうか?
違います。そんなものは毎度検索すれば良いので。
自分が何を作りたいか明確にする事です。
これ無しに習得は不可能です。
0から創り上げる経験を一回すると、もうあとは調べさえすれば何でも出来る気がしてくるものです。
既存のプログラムを書き写すような学習方法を昔しましたが、ちっとも”創れる”ようになった気がしませんでした。

機械学習の学習方法

機械学習と聞くと、少し難しい印象を覚えるかもしれませんが、実際はさほど難しくもありません。
Tensorflowなどは結構特殊というか、クセがありますが、Sklearnは機械学習ライブラリの中で一番簡単、シンプル、使いやすいです
私のおすすめの機械学習ライブラリは、Scikit learningです。(通称Sklearn)
あと、ユーザーも多いので情報量も多いです。
そして何より、様々なアルゴリズムを使い回すことができます。
例えば、Tensorflowは機械学習の内、ディープラーニングに特化したライブラリです
LightGBMならGradientBoostinngTreeのみに特化したライブラリです。
それぞれ有名なライブラリですが、
それぞれクセがあるので初学者が初めて手をつけるのにはお勧めしません。
Sklearnならディープラーニングも、勾配ブースティング決定木も出来ます。他にも色々出来ます。
あとは我々がやろうとしている学習は、比較的低負荷のため、Sklearnでも大した計算時間にならないため、Sklearn以外の恩恵を受けることが少ないです。

おすすめの本

コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~
がおススメです。
本を読んでも、プログラミングというツールは使いこなせるようにはなりません。
システムトレードの本も読みましたが、あんまり参考になった本は無いですね。

開発環境

Google colabがおすすめ。
まずは.ipython のファイルをコピーしてクリック。するとGoogle colabが開く
自分で開発環境を作らなくてもいいので非常に便利

コメント

タイトルとURLをコピーしました