逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
【連続系】MATLAB、Pythonで株価予測 その68【フーリエ変換⑤】
フーリエ変換のプログラム化の前に数式レベルでいろいろ解決。 積分をΣで解決する。(リーマン積分) 関数をベクトルと解釈する。 畳み込み積分は内積で解決。 ベクトルのそれぞれの要素数をNで切りそろえているのでそれほど複雑にはならないはず。
【連続系】MATLAB、Pythonで株価予測 その67【フーリエ変換④】
前回、打ち出した方針を再掲。 要素数Nが重要。 関数、変数のベクトル要素数がNできり揃う。 これにより、逆変換も苦にならない想定。 文章で表現したものを数式で表現。 ベクトルになる箇所を明確にした。 プログラム化はやってみないとわからん。 なんとか辻褄合わせができるよう頑張る。
【連続系】MATLAB、Pythonで株価予測 その66【フーリエ変換③】
フーリエ変換、逆フーリエ変換を再確認。 問題点は無限の解釈の仕方。 無限の範囲に於いての「関数同士の内積」。 「関数同士の内積」も無限要素のベクトルと解釈する必要がある。 有限数を便宜上、無限に近いものとすれば、ある程度成立する可能性はある。
【連続系】MATLAB、Pythonで株価予測 その65【フーリエ変換②】
細かい周波数特性の取り方としてフーリエ変換を利用することとした。 フーリエ変換とDFT,FFTは別物。 目的が一緒なので、本来は気にしなくても良いが、今回に限っては別物扱いせざるを得ない。 フーリエ変換の連続的、範囲が∞であることがプログラム化に対しての大きな課題。 そもそも出来るのかもわからん。
【連続系】MATLAB、Pythonで株価予測 その64【フーリエ変換①】
さらに適切な周波数を特定できないか検討。 10[Hz]じゃなくて9.7[Hz]が実はより適切だったかも。とか。 入力サンプリング期間を延ばせば、見た目の周波数より細かい周波数特性は出せる。 問題は期間の伸ばし方。 0埋めで伸ばす場合、0埋めがあまり多すぎると元データと乖離する。 サンプリング間の補間もまぁまぁメンドイ。
【個別株】MATLAB、Pythonで株価予測 その63【シミュレーション③】
10[Hz]に於ける売買タイミングと株価を再掲。 個別株に対して収支シミュレーション実施。 20万越えの利益。 途中、5万円の損失が出てるが、これはうまい損切。 これのおかげで次の売買で大きく利益を上げられている。
【個別株】MATLAB、Pythonで株価予測 その62【シミュレーション②】
10[Hz]に於ける売買タイミングと株価を確認。 10回の売買が発生する。 収支シミュレーションを行う上でのパラメータ決め。 VTIの時の差分は以下。 売買手数料は0円。 売買単位は10株 買付余力は75万。 100万以下の売買を前提として売買手数料を0円にしているため。
【個別株】MATLAB、Pythonで株価予測 その61【シミュレーション①】
分析予測対象の個別株を選んできた。 大企業株のため、VTIの特性に似てはいるが、細かい上下が見て取れる。 とりあえず周波数解析実施。 10[Hz]あたりが突出している。 9~11[Hz]の範囲だけを残してIFFT実施。 筋が良さそうなのでこれをベースに掘り下げる予定。
【収支】MATLAB、Pythonで株価予測 その60【シミュレーション⑫】
前回の収支シミュレーションの考察を実施。明らかに損がでる売買も行っている。しかし、そこで売買しないと買付余力がなくなり、機会損失になる場合もある。買付余力があれば、損が出る売買は見送れるので買付余力を如何に残せているかも重要にはなってくる。同じシミュレーションを個別株で行えないか?基本ロジックは一緒なので可能。
【収支】MATLAB、Pythonで株価予測 その59【シミュレーション⑪】
ついに収支シミュレーション実施。 収益としては11万円弱。 イマイチな結果にも見えるが、最大単価時の一回の売買よりも収益は出ている状態。 たまたまの可能性は高い。
【収支】MATLAB、Pythonで株価予測 その58【シミュレーション⑩】
収支シミュレーションの方針を確認。 買付手数料:買付金額の0%。 売却手数料:売却金額の0.45%。 税金:利益の20%。 売買単位:1口。 買付余力:100万円。 VTIなど海外ETFは1口から売買可能。 というか100口、100株が売買単位なのは日本特有の文化。
【収支】MATLAB、Pythonで株価予測 その57【シミュレーション⑨】
Python版の売却、買付タイミング時のVTI単価特定コードを実行。 グラフはOK。 VTI単価出力もOK。 極大値、極小値のインデックスがMATLABで実施した時と異なるが、これはオリジンのせい。 MATLABは1オリジン、Pythonは0オリジン。
【収支】MATLAB、Pythonで株価予測 その56【シミュレーション⑧】
売却、買付タイミング時のVTI単価特定コードのPython版を作成。 MATLABの時に実施した論理インデックス検索のやり方を修正。 このために複素共役を負の周波数側に持ってきた。(忘れてたけど)
【収支】MATLAB、Pythonで株価予測 その55【シミュレーション⑦】
売却、買付タイミング時のVTI単価特定コード(MATLAB版)の実行結果を確認。 グラフで確認。 拡大グラフで確認。 コマンドウィンドウ出力を確認。 一部を除いて利益が出そうな数値にはなっている。
【収支】MATLAB、Pythonで株価予測 その54【シミュレーション⑥】
売却、買付タイミング時のVTI単価特定コード(MATLAB版)を作成。 ついでにバンドパスフィルタの部分をちょい改修。 Python(Numpy)側のコードも似たような感じで改修予定。
【収支】MATLAB、Pythonで株価予測 その53【シミュレーション⑤】
極大値と極小値の特定するコードのPython(Numpy)版を作成。 動作としては反転波形も含めてMATLABと同一。 実際にはこれらコードにく分けて以下が必要だが、本番コード作成時に盛り込む。 各プロット時の値の取得。 ドルから円へ変換。 $1=¥127で計算する予定。
【収支】MATLAB、Pythonで株価予測 その52【シミュレーション④】
極大値と極小値の特定のMATLABコードを作成。 上記コードの動作確認。 極大値に赤丸、極小値に青丸を置いてる。 一部問題点あり。 最初に極小値が来ることを想定している。 しかし、最初に買付をする想定なので、むしろ今回のコードの方が都合が良い。
【収支】MATLAB、Pythonで株価予測 その51【シミュレーション③】
微分して0になれば極値。 極大値は、「微分値がプラス→0→マイナス」となるところ。 極小値は、「微分値がマイナス→0→プラス」となるところ。 「微分して0」でも極値にならないパターンもある。 3次関数とかが代表的。
【収支】MATLAB、Pythonで株価予測 その50【シミュレーション②】
いままではExcelで終値から平均値を引いた値と算出したものをcsvにしていたが、MATLAB、Pythonで終値を取り込んでから平均値を引く方式に変更。 MATLAB、Pythonともにmeanという関数/メソッドで平均値算出可能。 Pythonはaverageという加重平均を算出するメソッドが存在。
【収支】MATLAB、Pythonで株価予測 その49【シミュレーション①】
収支シミュレーションをする上で、今後の方針を決めた。 基本的にはプログラム的に算出するが、実際の売買時の計算は手動で。 気が向いたら自動演算化するかも。 極大値、極小値を特定する必要があるが、これはそれほど難しくはない。(つもり)
【VTI】MATLAB、Pythonで株価予測 その48【周波数解析⑫】
新VTIチャートからの抽出周波数を1個ではなく、複数にすることで筋の良さそうな特性が出てくる。 しかし増やせば良いというものではない。 増やせば増やすほど元の新VTIチャートに近づくだけ。 単にローパスフィルタを掛けただけになることも。 何パターンか出してみて自分自身が信用できそうなものを探すって流れになる。
【VTI】MATLAB、Pythonで株価予測 その47【周波数解析⑪】
新VTIチャートから各種周波数を抽出して比較。 3[Hz]が筋が良さそう。 ついで5[Hz]。 7[Hz]は細かい特性は掴んでいるが、ちょっとイマイチ。 今回の情報だけを見ると3[Hz]で売り買いすればOKということになるが・・・。
G検定対策のまとめ記事はこちら。はじめにG検定の強化学習についての勉強方法を聞かれたんで、とりあえず記事にしてみた。正直、G検定の強化学習関連は情報も少なく、かなり学習し難いカテゴリになる。法律/最近の動向系と比べるとややマシとは言えるが、
【VTI】MATLAB、Pythonで株価予測 その46【周波数解析⑩】
新VTIチャートの周波数特性を確認。 1[Hz]、3[Hz]、5[Hz]、7[Hz]あたりが突出している。 まずはお試しで3[Hz]を抽出して確認。 かなり特徴を表していることが分かる。 Python(Numpy)でも同様のことができることを確認。
【VTI】MATLAB、Pythonで株価予測 その45【周波数解析⑨】
新しく2021年6月から2022年5月のVTIチャートを取得。 MATLABでplotしてみた。 いい感じに乱高下している。 MATLABとPython(Numpy)のFFT、IFFTで元の波形に戻せるかを確認。 共に戻せることが確認できたので、周波数解析できそう。
【VTI】MATLAB、Pythonで株価予測 その44【周波数解析⑧】
VTIチャートとIFFTの結果に対して考察。 5Hzではさほど何かを示しているデータには見えない。 試しに13Hzを中心として12Hz~14Hzを抽出。 こちらは細かい山と谷を捕まえて居そう。 期間が短いことから値動きも小さい。 今後の方針としては2022年も含めたVTIチャートで試してみる。
【VTI】MATLAB、Pythonで株価予測 その43【周波数解析⑦】
前回MATLABで作ったVTIチャートから5Hzを抽出するコードのPython版を作成。 振幅調整も同じ処理で対応。 MATLABと同じ結果が得られたことは確認。 問題は、これから何を分析できるかと言う点だが、そこは次回。
【VTI】MATLAB、Pythonで株価予測 その42【周波数解析⑥】
IFFT後の波形の振幅の増幅は最大値を比較して、その比率を使用して増幅係数を決定。 一応5Hzの抽出はできたが・・・。 ここらへんの考察はPythonコードを作成した後に実施予定。
【VTI】MATLAB、Pythonで株価予測 その41【周波数解析⑤】
VTIチャートの周波数特性から5[Hz]と抽出してみる方針に。 抽出した5[Hz]は元のVTIチャートの振幅と比べると遥かに小さい可能性が高い。 よって、グラフで比較する際はIFFT側の結果を増幅してあげた方が良い。
【VTI】MATLAB、Pythonで株価予測 その40【周波数解析④】
今回使用するVTIチャートの問題について考察。 あまりにもシンプル過ぎて、分析し易い特徴が捕まえられない可能性あり。 一応5[Hz]が若干飛び出ているが、特徴になり得るかは疑問。 とりえあえず、現状のチャートでやってみて、分析が難しいようであれば再度方針検討。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。 おおよそ狙ったところに収束。
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
逆伝播を行った際の重みの動き方を確認するプログラムをJuiaで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをScilabで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。 おおよそ狙ったところに収束。
全体の位置づけと各偏導関数を確認。 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 逆伝播の確認用プログラムのフローを記載。
連鎖律に於ける誤差関数の位置づけと偏導関数を確認。 活性関数(シグモイド関数)のブロック図と連鎖律上の位置づけと偏導関数を確認。 入力層のブロック図と連鎖律上の位置づけと偏導関数を確認。 バイアスのブロック図と連鎖律上の位置づけと偏導関数を確認。
誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。 逆伝播を行う単純パーセプトロンの構成を確認。 一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。
逆伝播の確認用プログラムのフローを記載。 逆伝播の挙動を確認するため、重みの開始位置とバイアスは固定。 ベクトル、行列演算をプログラム都合に合わせて表現しなおし。
入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 誤差関数は二乗和誤差関数であり、本来であればΣが含まれる。 よって、連鎖律にもΣが含まれる形を取ると前回と同一の数式が得られる。
入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 上記の図示と数式を説明。
全体の位置づけ確認。 各偏導関数を再掲。 各偏導関数を連鎖律に則して結合。
バイアスのブロック図と連鎖律上の位置づけを確認。 バイアスの偏導関数を確認。 もとの式がシンプルな上、1次で係数もないので1になる。
入力層のブロック図と連鎖律上の位置づけを確認。 入力層の偏導関数を確認。 もとの式がシンプルなので偏導関数もシンプル。
活性化関数の微分について説明。 活性関数のブロック図と連鎖律上の位置づけを確認。 シグモイド関数の導関数を復習。 シグモイド関数の偏導関数を確認。
連鎖律に於ける誤差関数の位置づけを確認。 ブロック図的には一番後ろだが、連鎖律としては先頭。 誤差関数の確認。 誤差関数の偏導関数の確認。
合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。 詳細は後日。
一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 誤差関数、活性化関数、入力と重みの内積。
二次形式の多項式表現と行列表現の計算をScilabで実施。 基本的にはMATLABと一緒。 ただし、reshapeの代わりにmatrixを使う必要がある。
二次形式の多項式表現と行列表現の計算をPythonで実施。 3Dグラフを表示する際は、projection='3d'が必要。 plot_wireframeでワイヤーフレームでグラフ表示ができる。
二次形式の多項式表現と行列表現の計算をMATLABで実施。 meshgridにx軸とy軸を入力とすることで平面座標が得られる。 平面座標を元に2変数の演算を実施。 演算結果をmesh関数を使用して3Dグラフに表示。
二次形式の多項式表現と行列表現の計算をJuliaで実施。 3Dグラフを表示する際は、"projection" => "3d"が必要。 meshgridが無いので自作した。
二次形式の多項式表現と行列表現の計算をScilabで実施。 基本的にはMATLABと一緒。 ただし、reshapeの代わりにmatrixを使う必要がある。
二次形式の多項式表現と行列表現の計算をPythonで実施。 3Dグラフを表示する際は、projection='3d'が必要。 plot_wireframeでワイヤーフレームでグラフ表示ができる。
二次形式の多項式表現と行列表現の計算をMATLABで実施。 meshgridにx軸とy軸を入力とすることで平面座標が得られる。 平面座標を元に2変数の演算を実施。 演算結果をmesh関数を使用して3Dグラフに表示。
対称行列と二次形式について説明。 二次形式は多項式表現と行列表現ができる。 行列表現ができると計算がしやすくなる。 しかし、全座標を入れるにはfor文を使用する必要がある。 for文を削除するための仕掛けを入れておいた。
二次形式の行列表現をfor文を使用せずに一括計算するための仕掛けを考える。 内積を分解してアダマール積と定数関数との内積にする。 これにより、x^Tとxの直積的な結果を抑制。
二次形式の行列表現と多項式表現の関係性を示した。 行列Aが対称行列になることを制約とすると行列表現と多項式表現に可逆性を付加することができる。 これに伴い、等しいものとして扱うことが可能となる。 実際に行列表現と多項式表現が等しいかを各ツール、各言語で確認したいが、その前にベクトル、行列のまま演算する仕掛けを考える必要がある。
二次形式について確認。 すべての候の次数が2である多項式。 二次形式を一般化して行列表現。 行列表現できた方が計算しやすい。
対称行列について説明。 対角部を中心に対象となっている正方行列。 単位行列も対称行列の一種ではある。 厳密には対称行列の一種である対角行列の一種が単位行列。 対称行列は二次形式、二次形式の微分、グラム行列で使用する予定。
1次関数最小二乗法こと単回帰分析のあとは重回帰分析、多項式回帰分析にチャレンジ。 重回帰分析、多項式回帰分析を行うには正規方程式が必要。 正規方程式を導出するまでの因果関係を図示した。
1次関数最小二乗法こと単回帰分析のあとは重回帰分析、多項式回帰分析にチャレンジ。 重回帰分析、多項式回帰分析を行うには正規方程式が必要。 正規方程式を導出するまでの因果関係を図示した。
平均分散共分散を使用した一次関数最小二乗法をJuliaで記載。 covとvarを使用する。 covは共分散を返す。 MATLABのように分散共分散行列にはなっていない。 パラメータを2列に並べて渡すと分散共分散行列を返す。
平均分散共分散を使用した一次関数最小二乗法をScilabで記載。 covとmtlb_varを使用する。 分散取得用の関数にvarianceは不偏分散しか返さない。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をPython(Numpy)で記載。 covとvarを使用する。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をMATLABで記載。 covとvarを使用する。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をJuliaで記載。 covとvarを使用する。 covは共分散を返す。 MATLABのように分散共分散行列にはなっていない。 パラメータを2列に並べて渡すと分散共分散行列を返す。
平均分散共分散を使用した一次関数最小二乗法をScilabで記載。 covとmtlb_varを使用する。 分散取得用の関数にvarianceは不偏分散しか返さない。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。