ハムスの部屋

研究職のハムスターが調べたり体験したことを記録していきます。

【学習記録】通常最小二乗法での回帰【回帰の基本】

化学業界でも各社で機械学習の適用が進んでおり、私はその中でもマテリアルズインフォマティクス(MI)と呼ばれる手法に着目しています。

MIをざっくり説明すると、未知の物質の性能を原料や製造法、過去のデータベースなどの情報からから予測する方法です。

従来は研究者の経験と勘から良さそうだと思ったものについて実験することが多かったのですが、かなり時間がかかってしまいます。そのため、計算手法を用いることでより効率的に新規材料の開発を進めることが期待されています。

機械学習にはいくつか出来ることがありますが、当面は数値を予測する回帰手法の学習を進めます。

この知識が投資先の選定にも活用できれば良いな、とも思っています。

今回の記事では最も基本的な回帰手法の一つである、最小二乗法による回帰を紹介します。

必要に応じて式を載せたりもしますが、詳細な説明はしません。

概要と使い方に重きを置きます。

線形モデルについて

結果の解釈がしやすく計算量も少なめというメリットがあり、実用的に広く用いられる手法です。

入力特徴量 xの線形関数を用いて予測するものです。

一般的な予測式は
y = a_1 x_1 + a_2 x_2 + ・・・ + a_p x_p + b
となります。

各特徴量の線形結合で表せるようにaとbを調整するってことですね。

ちなみに変数が一つの場合は
y = ax + b
という見慣れた一次関数の式になります。

f:id:hamus_interest:20200323215952p:plain
一次元の線形回帰

最小二乗法とは

この手法は既にご存知の方も多いかもしれません。

機械学習の分野では線形回帰、または通常最小二乗法(Ordinary least squares: OSL)などと呼ばれます。

回帰式から予測したyの値と真のyの値との差を二乗したものの平均が最小となるようにaとbを調整します。より精度の高い予想が出来るようにチューニングするということですね。

通常最小二乗法(OLS)の特徴

とりあえず使う分には式の理解とかは雰囲気だけで良いと思います。大事なのはアルゴリズムの特徴です。

OLSのメリットは以下の2点と考えます。

  1. 計算が早い

  2. 解釈しやすい

1 についてはビッグデータを扱うような場合でデータ数が数十万などの場合は複雑な手法だと計算に時間がかかりすぎて適用が困難な場合があります。計算の早さは条件検討の早さにもつながりますし、意外と重要です。

2 ですが特徴量の線形結合で結果が出てくるので、係数の大きな特徴量は予測に大きな影響を与えることなどが容易に理解できます。実験条件の考察にも力を発揮できそうですね。また、係数がどうしてその大きさになっているかは解釈が難しい場合が多いです。

一方で、デメリットもあります。

  1. 予測精度が低め

  2. ハイパーパラメータが設定できない

1 は特徴量の線形結合で結果を予測しなければならないという強い制約があるので、仕方ない面もあります。  やはり精度だけ見るともっと高級な手法はいくつもあります。

2 は見落としがちですが、OLSには設定できるパラメータがありません。  主観的な情報が入らないメリットもありますが、予測モデルの複雑さを制御する手法がないことと同義にもなります。  一般的には説明変数が少ないと適合不足しやすく、多いと過剰適合しやすい傾向があります。

使い方

Pythonでのコードと合わせて使い方をみてみましょう。

データは身長と体重のデータを適当に作ったものを使いましょう。割と線形ぽくなるようにしています。

#データの作成と散布図
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

height = np.array([150, 152, 155, 155, 160, 161, 165, 177, 180, 185])
weight = np.array([40, 41, 40, 46, 50, 52, 55, 68, 77, 82])
df = pd.DataFrame({"身長": height, "体重": weight})

plt.scatter(df["身長"], df["体重"])

f:id:hamus_interest:20200323230629p:plain
身長と体重のプロット


y = ax + b
の形でよく表現できそうですね!

これをOLSで学習させてどんな式が得られたのか確認してみましょう!

from sklearn.linear_model import LinearRegression

X = np.array(df["身長"]).reshape(-1, 1)
y = np.array(df["体重"]).reshape(-1, 1)
lr = LinearRegression().fit(X, y)  #OLSで学習

#計算した係数(重み)
print(lr.coef_)  #array([[1.22740316]])

#計算した切片
print(lr.intercept_)  #array([-146.19411765])

上記のようにpython LinearRegression()で学習し、結果をpython lr.coef_python lr.intercept_で係数と切片を確認できます。

今回の場合は
y = 1.23x - 146
という感じの回帰直線が得られました。

未知の身長(X)に対して適用することで体重が予測できますね!

まとめ

今回は機械学習の中でも最も基本的な通常最小二乗方について説明しました。

かなり長くなってしまいましたが、他の手法や気を付けるべき点などについても記事を書いていきたいと思います。

実践的な内容もどんどん更新していきたいと思っています。

長文でしたが、ここまでお付き合いいただいてありがとうございました!

機械学習の勉強記録も残していこうかと思います【今後の方針】

このブログでは主に投資関連のことを書いてきましたが、今後は勉強したことの記録なんかもつけていこうかと思います。

 

理由としては

  • 自分の備忘録になる
  • 同じことを調べたい人の助けになるのではないか
  • ブログ記事を増やしたい

が主なところです。

3点目の記事数については、(今回のような)あまり読んでもためにならない記事は増やしたくはないという贅沢な願いも込めております。

 

記事にする内容として一つ浮かんだのが機械学習です。

最近、勉強を始めたばかりの初心者ですが、意外と知りたい情報を探すのに時間がかかることがあります。

学んでいく過程で得た知識をまとめて、これから勉強していきたい方の参考になれば幸に思います。

 

これだけで終わると微妙なので、今後ブログ記事になるかもしれない内容について簡単に整理して終わろうかと思います。

 

バックグラウンドと興味のあること

個人的な興味の方向について説明するために、私自身のバックグラウンドを簡単に示します。

 

私は20代で、修士卒で化学メーカーの研究職をやっております。専門は有機化学

勝手に業務で機会学習を導入しようかと考えていたりもします。

化学も好きですが、やはりお金が増えると嬉しいですね。

ビットコインブームに乗ってみたり、システムトレードをやっていた時期もあります。

 

ビットコインなんかの仮想通貨周りも面白い考え方に触れられて好きです。

ブロックチェーン技術は今後、社会でも組み込まれていくと楽しみに見ております。

一時期はマイニングも試していました。

株については勉強中ですので、これからもっと知識を深めていきたいと思っています。

 

新しいもの好きでもあり、色々手を出す時期もありますね。

3Dプリンタの値段が落ち着いてきたので、家に1台あります。

ちょっとした物を設計して、作れるのは楽しいです。

 

ざっくりとそんなところでしょうか。まとめると以下の通りですね。

  • 投資関連(特に株、米国株メイン)
  • 機械学習
  • 興味を持った事柄

そのうち、株式投資に生かせそうな技術なんかも記事としてまとめられたらと思います。

 

機械学習も勉強しはじめの段階なので、同じ初心者の方の目線で大事なことをまとめられるようにしていきたいです。

 

今回はただの宣言になってしまいましたが、今後は何かしらためになるような記事を書いていきたいと思いますので、よろしくお願いします。

コロナショック前の景気後退シグナルを振り返る【答え合わせ】

各国の金融政策にも関わらず、株価はあまり反応を見せませんね。
先物の動きを見ていると本日のNY市場も大きく下げそうな雰囲気を感じます。

 

コロナ流行は予測困難かと思いますが、暴落のきっかけにすぎないという説があります。
この大幅下落を予見する先行シグナルについて後学のために調べてみました。

 

景気後退の先行指標については色々な考察がなされていますが、代表的なものとして逆イールドの発生が挙げられます。

逆イールドとはどのようなものか、そしてなぜ景気後退の先行指標とされているかを説明します。

 

逆イールドとは何か?

逆イールド状態とは、3ヶ月(短期)米国債利回りが10年(長期)米国債利回りより高くなる状態を指します。

通常ならば、長期金利の方が資金の固定期間が長いので高金利になりますよね。

この現象は滅多に起こらず、最も最近だと2019年に逆イールド状態となりました。これは2007年(リーマンショック前年)以来、12年ぶりの現象です。

 

なぜ逆イールドが景気後退シグナルなのか?

米国では、上に書いた長短期の国債利回り差が景気の先行指標とされてきました。

これは、金融政策や投資家心理を表すためとされているためです。

 

さて、逆イールドが景気後退に先行するとされる理由は以下の3つが考えられます。

 

(1) 金融政策の引き締めを反映している

  →政策金利が高くなると、その影響を受けやすい短期金利が上昇幅が大きくなる。金融政策の引き締めは金融環境のタイト化に繋がり、これによって企業や家計が支出を抑制する可能性がある。

 

(2) 投資家の景気後退予想を反映している

  →投資家が将来の景気後退を予想すれば、中長期的な利下げが折り込まれて長期国債が買われて金利は低下する。こうした環境では投資家のリスク許容度が低下し、金融環境のタイト化につながる。

 

(3) 企業や家計の景気に対する懸念を強める

  →逆イールドが景気後退前に発生してきたという経験則があるため、景気悪化に対する懸念を強める。それによって投資や雇用、消費が抑えられる可能性がある。

 

本当に逆イールドは景気後退の先行指標になるのか?

 

上記のような懸念が発生するのは伝わったのではないでしょうか。

では、実際にこれまでは逆イールドが発生したらどのくらい景気後退が起こったのかを確認してみましょう。

f:id:hamus_interest:20200316223027p:plain

出典:日興アセットマネジメント

実際に、ここ100年で見てもイールドカーブの逆転(逆イールド)が起こってから1年程度の間に高い確率で景気後退が起こっていることがわかるかと思います。

あのリーマンショックの前年にも逆イールドが起こっていますね。

 

 

いかがでしたでしょうか。

思い返すと少し前に逆イールドになったと一部で話題になっていた気がします。

他にも予兆はどこかに出ていたかもしれませんね。

特殊な相場に立ち会えているので、今後に生かせるようにしたいところです。

【自動】米国株価のデータベース作成方法【Python】

本日は金曜日ということもあり、買い戻しがあって価格が上昇した形でしょうか。

FRBの1.5兆ドル供給により売り手としてはそろそろ手仕舞いを意識されるようになってきたと考えます。

とはいえ、まだまだ不安定な相場が続きそうですね。

 

今回も引き続き投資先の選定に必要なデータ収集についてです。

みなさんお馴染みの株価チャート、その元データを収集する方法です。

 

膨大なデータがありますので自動化したいですよね。

そんな希望に応えるのが今回の記事です。

サンプルコードもつけておきました。

誰でも殆どコピペで使えると思います!

 

pandas_datareaderで楽々自動化!

今回はpythonのpandas_datareaderを使ってyahoo finance USから一気に株価を取得します。

ちなみに、pandas_datareaderではFREDや各国の銀行などからもデータ取得ができます。

金利や経済指標などと株価の関係を分析するためにも使えそうですね。

何か良い題材があればぜひコメント欄で教えてください!

 

以下に使い方とサンプルコードを示します。

銘柄コードと期間を指定するだけでcsvファイルが保存できます!

(あと、ちゃんと保存できているかの確認用に株価チャートも表示されます。)

動作環境はJupyter Notebookを想定しています。勝手に環境が整っているのでおすすめですよ!

 

【使い方】

1. サンプルコードをJupyter Notebookに貼り付ける

2. コード内の変更する部分 を変更してデータ取得期間・銘柄を指定

3. 実行すると株価チャートが表示され、CSVファイルが保存されます

import pandas as pd
from pandas import Series, DataFrame
import pandas_datareader.data as web
import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#------------------ 変更する部分 ------------------
start = datetime(2005, 1, 1) #開始年月日 (datetime(年,月,日)で指定)
end = datetime.now() #終了年月日 (デフォルトでは操作した日だが、datetime(年,月,日)でも指定可能)
stock_list = ['AAPL', 'GOOG'] #銘柄コード (いくらでもカンマで区切って増やせます)
csv_name = "AAPL_GOOG stock price" #CSVファイルの名前
#-------------------- ここまで --------------------

df = web.DataReader(stock_list, 'yahoo', start, end)
df['Adj Close'].plot(title="株価プロット", grid=True)
df.to_csv("{0}".format(csv_name)+".csv")

基本コピペでできるので、簡単ですね!

参考に今回表示された価格チャートを以下に貼っておきます。

f:id:hamus_interest:20200313194930p:plain

もともとの株価が違いますが、どちらも大きく 伸びていますね!

米国株投資の手助けになれば幸いです^^

 

米国株の財務諸表の確認方法【CSVダウンロード】

株価が大荒れですね。

まだまだ下がっていく余地があるように見えるところが怖いですね。

もう少し株価が落ち着いた頃に良さげな会社の株に投資していきたいと思っています。

 

しかし、「良さげな会社」とは何を指すのでしょうか?

 

これは人によって意見が分かれるところかと思います。

当たり前のことかもしれませんが、今後も大きな利益を出し続けられそうな会社、ということができるかもしれませんね。

会社のお金の流れを知るのには財務諸表を見るのが一つの手ですね。

 

これを読み解くことで持っている事業の性質や倒産の危機があるかなど、投資判断する材料を得ることができますね。

一定期間投資するならば、すぐになくなってしまう会社は避けたいものですよね。

 

米国の会社の財務諸表を見るなら Morningstar がおすすめ!

簡単で多くの情報が得られるところを探しましたが、Morningstarがおすすめです。

おすすめポイントは以下の通り。

・登録不要ですぐ入手できる

・過去10年分のデータが得られる

csvで入手できる

 

私の拙いプログラミング技術では簡単にスクレイピングできなさそうだったので手動で入手しましたが、一件で30秒くらいです。

もはや手作業の方が早そうです。

一応、具体的なやり方を示しておきますね。

 

Morningstarでの財務諸表の入手方法

1. Morningstarにアクセス

2. 画面左上のSearch Quote and Sitesからデータが欲しい企業を検索

f:id:hamus_interest:20200312192616p:plain

3. 目的の企業を選択(画像はAppleを検索した例)

 

f:id:hamus_interest:20200312192817p:plain

4. 画面真ん中あたりのKey Ratiosをクリックし、その少し下に出てくるFull Key Ration Dataをクリック

f:id:hamus_interest:20200312193003p:plain

5. 右上のExportをクリック

f:id:hamus_interest:20200312193223p:plain

 

以上のようにして米国企業の財務諸表のデータを入手できます。

これで独自のデータベースを作って分析し放題ですね!

 

なぜ米国株に投資したのか?大きな数字から成長の期待を見出す!

コロナ、原油安、円高、、、

週明けから一気に不安要素が出てきて日本株市場は大幅安でしたね。

米国株市場も同様に猛烈な下落を見せていますね。

 

さて、不安のよぎるタイミングではありますが、先日から米国株投資を開始しています。

この記事ではその判断に至った理由を書いていこうかと思います。

 

まとめると以下の3点です。

・長期で見ると株式のリターンが大きい

アメリカは人口増加国

・米国企業の株主還元意識の高さ

 

 

米国株投資でないとダメなのか?

当然そんなことはありませんね。

投資先なんて各国の株や為替、不動産やコモディティ、最近では仮想通貨なんかも選択肢によく挙がりますよね。

各人の思うところに投資するなりしないなりするのが正解かと思います。

 

では、なぜ私は米国株を選んだのか、説明していきます。

 

長期で見ると株式のリターンが大きい

私たちの投資人生よりも長いですが、各資産における約200年のリターンを比較すると株式が圧倒的に高リターンを示したそうです。

f:id:hamus_interest:20200309215136p:plain

出典:ジェレミー・シーゲル著「株式投資 第4版」

現在では他にも投資先が考えられますが、出来高流動性の大きさや実生活への関わりの大きさから、勉強して楽しそうなので株式が良いと考えました。

やはり、せっかくなら投資以外でもタメになる事が勉強できれば嬉しいですよね。

 

 アメリカは先進国でありながら、人口増加国

日本は人口が約1.26億人で、人口減少・小子高齢化により将来的に労働者人口が減少することなどが確実視されています。

一方で、アメリカは人口が約3.31億人で、人口は増加して2070年に4億人を突破する見込みだそうです。先進国なので高齢化の予測がなされていますが、14歳以下の人口も増加していくとのことです。

f:id:hamus_interest:20200309221053p:plain

アメリカの年齢階層別人口予測(万人)(World Population Prospects 2019より)

世界に展開する大企業も多いですが、やはり自国での売り上げが多い企業が主だと考えます。

現時点で世界のトップを走り、 人口も増加するアメリカがより発展すると見立てが立ちます。

 

株主還元する意識の高さ

 投資した企業が期待通りに成長して、株価が上昇するのは望ましいことですよね。

ですが、それ以外にも配当や自社株買いでの株主還元をしてもらえれば投資する立場としては利益が増えてより好ましいです。

企業の成長ステージや思想によっても変わるかと思いますが、個人的に安心感を得るためにも気になる点です。

 

さて、配当と自社株買いを用いて求められる総還元性向を日米で比較すると、明確に差があることが分かりますね。

少し古いデータですが、TOPIXとS&P500から求めているようです。

f:id:hamus_interest:20200309222406p:plain

出典;生命保険協会

 アメリカは平均で100%超えちゃってるんですね。

これだけ株主還元しつつも、成長企業が多いのはすばらしいですね。

 

 

今回は以上です。

投資先は自分なりに期待を持って選んでいきましょう!

米国株投資始めました!

はじめまして。

最初の記事をどんな感じにするか考えて何も書けていませんでした。

特にルールもなさそうですし、気軽に書きながら考えていこうと思います。

 

さて、今回の内容は米国株投資を始めたという内容です。

 

これまでは貯蓄&金(資産の20%程度)の積立がメインで、あまりリスクを取らないようにしていました。

会社員ということもあり収入もそこそこなので、もっとお金が欲しいと思い投資を開始したということです。

 

なぜ米国株に投資したのか

いろいろと調べていくうちに以下のことがわかってきました。

 

・株式、債権、不動産、現金の超長期リターンを見ると、株式が圧倒的に高リターン

・株式の中でも米国株は成長率が日本株より大きい(その他の国は除外しました)

・米国は長期的に人口増加していく見込み → 経済発展につながる

・株主還元の割合が大きい傾向がある

 

など、ざっと考えてもREIT日本株を買ったりするよりも良さそうだと感じました。

ちゃんとデータもあるので、後日まとめようと思います。

 

タイミング的な懸念はあるが投資しました

偶然にもコロナ懸念により株価が下落していますし、後学のためにも買い付けを始めました。

 

調べてみるとリセッション入りの懸念があるようですが、小額からの投資ならば被害も小さいですし、仮にそうなっても貴重な体験を肌で感じられると割り切りました。

こればっかりは予想しかできませんし、やってみることは重要なはずです。

 

投資先はタバコ株

投資先はアメリカでのタバコ販売がメインのアルトリア・グループ(MO)と、英国企業で世界中でタバコ販売するブリティッシュ・アメリカン・タバコ(BTI)です。

直近の株価下落もあり、現時点での配当利回りはおおよそ6〜8%程度と非常に高くなっています。

しばらくは定期購入&大きく値下がりしたら購入するイメージで考えています。

 

私はタバコを全く吸いませんし、飲み会や麻雀やるときなどで煙に囲まれるのは良い気持ちはしないのが正直なところです。

しかし、①タバコの中毒性、②同じ銘柄を吸い続ける喫煙者(参入障壁)、③利益率の高さ(設備費や研究開発費、販売費の小ささ)など、投資先としては魅力が大きいと感じます。

喫煙者が減っていくのは明らかですが電子タバコもありますし、何より中毒性のある商品です。

きっとしばらくは安心して投資できる会社だと考えています。

 

投資戦略

配当や自社株買いで大いに株主還元をしてくれて、(みんな)長く持っても安心と感じられる企業の株に投資。長期保有でいずれ利益を出すということを目指しています。

デイトレーダーのようにたくさん売買することは当面は考えておりません。時期を見て売ったりすることはあるかもです。

ここもかなり重要と思いますので、近々まとめて記事にしたいと思っています。

 

ここまでお読みいただきありがとうございました!

根拠とともに自分の考えを綴っていければと思っています!