shobylogy

叩けシンプルの杖

bitFlyerの過去チャートを1時間足で取得する

以前、bitFlyerの過去チャートを取得するという記事を書いたが、betterなサービスを発見したのでメモ。

CryptCompareというサービスのAPIで、1時間足であれば、Cryptwatch以上に過去に遡ってチャートを取得できる。*1

https://www.cryptocompare.com/api/

使い方は以下のような感じ。

https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=JPY&limit=2000&e=bitFlyer

取得件数は1度に2000件が上限。

toTs というパラメータを使用することで、指定したタイムスタンプ以前のデータも取得できる。

https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=JPY&limit=2000&e=bitFlyer&toTs=1446267600

*1:2015/8/9までは遡って取得できることを確認した。おそらくそれ以上過去のデータも存在するはず

Kerasで過学習を防止するためにEarlyStopping Callbackを使う

Kerasには過学習を防止するためのEarlyStopping Callbackが存在します。

コールバック - Keras Documentation

使い方

使い方は簡単で、modelのfitメソッドのcallbackに渡すだけです。

from keras.callbacks import EarlyStopping

model.fit(X_train, Y_train, callbacks=[EarlyStopping(), validation_split=0.25])

デフォルトでは val_loss の値を監視するため、fitメソッドには validation_data もしくは validation_split を渡す必要があります。

私の場合、training setとvalidation setとtest setを6:2:2の割合にするため、training setとtest setを8:2に分けた上で、validation_splitには0.25をセットしています。*1

結果

val_loss に変化が無くなったEpochでtrainingが打ち切られるため、過学習による局所最適化に陥ることを防止できます。

これにより、最適なEpoch数を手動で調整する手間が省けます。

以下の図は実際にEarlyStopping Callbackを用いたtrainingの結果です。val_lossに変化が無くなったタイミングで打ち切られているのが確認できると思います。*2

f:id:shoby:20170607223917p:plain

まとめ

KerasのEarlyStopping Callbackを用いることで過学習が防止できます。 手動で最適なEpoch数を調整する必要もなく、お手軽です。

参考

KerasでMNIST - 人工知能に関する断創録

*1:CourseraのMachine Learningコースでおすすめされていた割合

*2:keras-tqdmを用いて可視化しています

Jupyter NotebookでKerasのTraining進行状況を表示する(keras-tqdm)

Jupyter NotebookからKerasを使用すると、Trainingの進行状況がよくわからなくて不便ですよね。

keras-tqdmというライブラリを使うと、Jupyter NotebookでKerasのfitメソッドの進行状態をprogress barで表示してくれます。

GitHub - bstriner/keras-tqdm: Keras integration with TQDM progress bars

f:id:shoby:20170530231515p:plain

インストール方法

pipでインストールできます。

pip install keras-tqdm

使い方

modelのfitメソッドを呼び出す際に、callbackとして渡すだけです。

from keras_tqdm import TQDMNotebookCallback

model.fit(X_train, Y_train, verbose=0, callbacks=[TQDMNotebookCallback()])

トラブルシューティング

Widget Javascript not detected といったエラーが表示される場合、以下のコマンドを打った後に再起動する必要があるようです。

jupyter nbextension enable --py --sys-prefix widgetsnbextension

keras-tqdmが依存しているtqdmが内部でipywidgetsを使用しているため、ipywidgetsのセットアップが済んでいないとエラーが表示されるようです。

使用感

Keras上でもprogress barで各Epochの進行状況とlossが確認できるようになったため、学習経過の可視化に役立ちます。

ただし、Epoch数が増えてくるとその数だけprogress barが生成されて画面が圧迫されるので、EarlyStopping callbackを併用し、収束したタイミングで打ち切るようにするのをおすすめします。

まとめ

keras-tqdmを使うとJupyter Notebook上でもKerasのTraining進行状況が確認できて便利です。

Epoch数が増えてくると、大量にprogress barが生成されてしまうので、EarlyStopping callbackと併用するのをおすすめします。

bitFlyerの過去チャートを取得するAPI

bitFlyer公式では現在の価格を取得するAPIしか提供されていない。

ビットコイン取引所【bitFlyer Lightning】

過去のチャートを取得するにはCryptowatchというサービスのAPIを利用する。*1

Public Market REST API - Cryptowatch Docs

エンドポイントは以下。*2

https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc

periodsというパラメータで何秒区切りかを指定でき、beforeとafterというパラメータにUNIX timestampを投げることで時間の指定もできる。

1日足で、2017/01/01以降のチャートを取得したい時は以下のような感じ。

https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=86400&after=1483196400

Rate limitはCPUの処理時間ベースでかかる。

また、過去のチャートは無限に取得できるわけではなく、Cryptwatch上のチャートで閲覧できる範囲内しか取得できないようなので注意。 5分足などの短い間隔だと短い期間しか取得できない。

実際のチャートを参照しながら取得する範囲を決めると良い。

BTCJPY - bitFlyer リアルタイムチャート - Cryptowatch

*1:bitFlyer Lightningのチャート画面でも使われているサービス

*2:OHLCとはOpen-high-low-close chartの略で、海外でローソク足の代わりに使われているチャートらしい

Skype英会話のすゝめ

Skype英会話を始めて約3年が経ち、皆さんにも是非おすすめしたいと思うようになってきたのでこの記事を書きました。

概要

  • Skype英会話を始めて変わったこと
  • 良いところ
  • いまいちなところ
  • おすすめの学習ステップ

Skype英会話を始めて変わったこと

英語を話すことに抵抗感がなくなりました。 具体的には、英語で自分の意見を伝えることができるようになりました。

良いところ

安い

Skype英会話は1日1回30分受けられて、1ヶ月6000円程度が相場です。 普通の英会話教室なら、1回のレッスンが6000円程度からだと思います。

恥ずかしくない

Skypeで1対1で話せるので、どんなに下手でも恥ずかしさがありません。

低いモチベーションで続けられる

教室に通ったりする必要がないので、おそろしく低いモチベーションで続けられます。 最近は寝起きにパジャマでレッスンを受けてます。

いまいちなところ

  • 講師の質がバラバラ
  • 高レベルの英語学習には向いていない

講師の質がバラバラ

講師の質が一定ではありません。 Skype英会話の安さは人件費の安さから来ているのが原因です。

英語圏の発展途上国で学生のアルバイトを雇っていることが多いです。(だいたいフィリピン)

そのため、質の低い講師はやる気がなかったり、発音に癖があったり、おそろしく早口で全然聞き取れなかったりします。

必然的にベテランの講師や、優しい講師には人気が集まり、予約が困難になります。

高レベルの英語学習には向いていない

ビジネス英語や、学術英語、技術英語など、高レベルの英語学習には向いていません。 基本的に講師は英語教育のプロフェッショナルではないためです。 ある程度英語が話せて、さらに高いレベルを目指す方は、ビジネス英会話のスクールに通いましょう。

おすすめの学習ステップ

以下の順で学習していくとモチベーションが保てるような気がします。 (ラングリッチ以外のレッスン教材については把握してないのでなかったらごめんなさい)

  1. 発音レッスン
  2. TEDレッスン
  3. 講師の専門分野について聞く

発音レッスン

最初に発音レッスンを受けておくと、英語を話す恥ずかしさがだいぶ軽減されます。

「あ、今自分、なんか英語っぽい発音してるわ!」と思えるようになると、話すことに対する抵抗感が減ります。

TEDレッスン

TEDのビデオを見て、それについて話すレッスンです。 TEDは単純に見ていて面白いので、飽きずに続けることができます。

この辺り、おすすめです。

脳科学者自身が脳卒中で脳の機能が停止していく体験を語った話

ジル・ボルト・テイラーのパワフルな洞察の発作 | TED Talk | TED.com

養殖している魚の20%を鳥に食べられる風変わりな養殖場の話

ダン・バーバー: 魚と恋に落ちた僕 | TED Talk | TED.com

初級編のレッスンはものすごくつまらないので飛ばして面白そうなレッスンをやりましょう。 日本人は、中学高校で最低6年間、英語を学習しているので、話すことに対する抵抗感さえなくなれば、初歩の初歩のレッスンはやる必要がないと思います。

講師の専門分野について聞く

TEDレッスンに飽きたら、講師の専門分野について聞いてみましょう。 レッスン教材をやるよりも、深くて面白い話が聞けると思います。

講師は大体が大学生なので、自分の専門分野を持っています。 心理学、会計、経営学や起業について勉強している人もいました。

最近僕は、政治学を専攻していた講師に政治の話を聞いています。 難しすぎて目が覚めます。

まとめ

私の場合、Skype英会話を始めたことで、英語を話すことに抵抗感がなくなりました。 Skype英会話は安くて、恥ずかしくなく、低いモチベーションでも続けることができます。 ただし、講師の質がバラバラで、高レベルの英語学習には向いていないので注意が必要です。

発音レッスン、TEDレッスン、講師の専門分野について聞く、という順でレッスンを受けると、飽きずに続けられるような気がします。

分離型キーボードを買ったら肩こりが改善した話(Mistel Barocco)

最近、肩こりが悩みだったのですが、分離型キーボードを買ったら改善しました。

買ったのは、Mistel Baroccoというコンパクトなタイプの分離型キーボードです。*1

このような感じで仕事をしています。

なぜこれを選んだの?

手軽に入手でき、Happy Hacking Keyboardに使用感が近そうな分離型キーボードだったからです。

握力王の記事を読んでからErgoDoxも気になっていたのですが、入手と習得に時間がかかりそうだったので見送りました。

良かった点

胸を張って姿勢良くコーディングができるためか、肩こりが軽くなりました。 特に肩の前側から胸にかけての張りが少なくなったように感じます。

また、Macを中央に置いて、トラックパッドと併用できるのが便利でした。

キーボード自体の使用感もなかなか快適で、Happy Hacking Keyboard を使ったことのある方は1日使えば問題なく移行できると思います。

いまいちだった点

キーマップに癖があり、またカスタマイズの難易度も高かったです。

キーマップに関しては、~(チルダ)と`(バッククオート)の入力に癖があり、それぞれShift+ESC、Fn+ESCという入力に慣れるまでに時間がかかりました。 カーソルキーもFnとの組み合わせで入力が必要です。

カスタマイズに関しては、説明書を読んだだけではいまいち分からず、こちらの記事が大変参考になりました。

右CommandキーがFnキーとして使われており、Fnキーを他の箇所に移動させてからでないと右Commandキーをリマップすることができず、小一時間悩みました。

合わせて買った方が良いもの

左右のキーボード同士を繋ぐMicroB-to-MicroBケーブルがスパイラル式で微妙なため、ストレートの長めなタイプのケーブルを買った方が快適に使用できると思います。

また、姿勢良くコーディングしようと思うと、予想以上に手首に負担がかかるため、パームレストの導入をオススメします。 FILCOの分離型ウッドパームレストのSサイズがぴったりの大きさでした。

まとめ

分離型キーボードのMistel Baroccoを買ったらコーディング時の姿勢が良くなり肩こりが改善しました。

Macを真ん中に置きつつトラックパッドを併用できるのが便利です。

若干キーマップに癖があり、カスタマイズの難易度も高いのは慣れと注意が必要です。

MicroB-to-MicroBケーブルと、パームレストは合わせて購入するのをオススメします。

FILCO ウッドパームレストS 分離型(2分割) FWPR/S

FILCO ウッドパームレストS 分離型(2分割) FWPR/S

*1:赤軸にしました

深夜に高熱を出した際にやったことと、使ったサービスまとめ

先日、深夜に39.4度の高熱が出てしまい、相当大変だったため、その時に使ったサービスなどをまとめておきます。

概要

  • 病院に行くべきか相談する
  • 病院まで行く
  • 病院で症状を伝える
  • 回復する

病院に行くべきか相談する

深夜に病院に行くべきか迷った際には、救急相談センターに電話しましょう。自己判断は禁物です。

東京都の場合は以下の電話番号です。地域ごとに異なるのでご自身でご確認ください。

東京消防庁<安全・安心><救急アドバイス><救急車の適正利用にご協力を!><救急車の適正利用のお願い!!>

救急相談センターに電話すると、看護師等の専門家が病院に行くべきかどうかの判断をしてくれ、救急外来のある病院を紹介してくれます。

おそらく本当にマズそうであれば、救急車を手配してもらえると思います。私の場合は意識もはっきりしており、自力で移動が可能だったため、自分で病院に行くことになりました。

自己判断をしない

自己判断はすべきでありません。理由は二点。症状で検索した場合の情報が信頼できないことと、高熱が出て意識が朦朧とした状態では正しい判断が行えないためです。

現在*1「高熱」などの症状で検索すると、キュレーションサイトや病気の人をターゲットにしたメディアばかりが上位に表示されます。これらのサイトは信頼性に乏しく、意識が朦朧とした状態では正しく情報の取捨選択を行うことができません。*2

病院に行く

自力で動ける場合はタクシーで向かいましょう。

自力で病院まで向かう場合、事前に病院に電話しておきましょう。

持っていくもの

  • 保険証
  • キャッシュカード
  • クレジットカード

深夜に急病になってしまった場合、手持ちに十分な現金がない場合があると思います。(私がそうでした) 大きな病院であればクレジットカード払いに対応している場合もあるので事前に確認しましょう。

タクシーの呼び方

都内に住んでいる方はUberを使ってください。伝える情報が少なくて済みます。

今回は普通にタクシーを呼んでしまったのですが、タクシー会社のサイトは画像で電話番号が書かれていることが多く、高熱が出ている状態では電話をかけることもかなりの難易度でした。*3

また、住所を伝えたり、待つのもしんどかったですし、Uberが使える方はUberを使ったほうが良いと思います。

病院で症状を伝える

医師や看護師の指示に従って、症状を可能な限り詳細に伝えましょう。

回復する

まず、会社に休みの連絡を入れましょう。その後、Amazon Prime Now、もしくはネットスーパーで、水分と食料を注文しましょう。

Amazon Prime Nowは風邪の時には本当に便利です。

ポカリスエットやミネラルウォーター、お粥やゼリーなども家にいながらにして入手できます。

水分をこまめにとって、ひたすら寝ましょう。

まとめ

深夜に高熱が出て、病院に行くべきか迷った際には、救急相談センターに電話しましょう。自己判断は禁物です。

自力で病院まで向かう場合は、まず病院に電話をし、Uberで向かいましょう。保険証、キャッシュカード、クレジットカードを持っていくのをお忘れなく。

病院に着いた後は、医師や看護師の指示に従って、症状を可能な限り詳細に伝えましょう。

その後は会社に休みの連絡を入れ、Amazon Prime Nowで水分と食料を注文し、水分をこまめにとってひたすら寝ましょう。

*1:2016/10/4当時

*2:Googleも医療情報の検索結果は改善を進めているようですが、今の所は信頼できないと言わざるをえません

*3:高熱の頭では電話番号を覚えて入力できず、二回諦めました