barilog

大学院生が色々なものをクリエイトしてみる!

SQLのSELECT文で最初と最後のレコードを取り出すクエリ

こんな感じ

(select * from market_Ohlc where currency_pair='btcjpy'  order by close_time asc limit 1) union all (select * from market_Ohlc where currency_pair='btcjpy' order by close_time desc limit 1);



(select 任意のカラム from 任意のテーブル where 任意の条件  order by 並び替える基準となるカラム asc limit 1) union all (select 任意のカラム from 任意のテーブル where任意の条件 order by並び替える基準となるカラム desc limit 1);

VAEの損失関数の符号について

損失関数は最小化するものと一般には理解されていますが,VAEの損失関数は最大化するものとして扱われる場合が多いみたいです.これで混乱してしまう方がよくいます.

 

VAEの損失関数は対数尤度関数を変形したもので,

VAEの損失関数 = ReconstractionError - KLダイバージェンス

と定義される場合が多いです.対数尤度関数ですので最大化することが目的になります.

ただ,計算上VAEの損失関数を最小化するものと定義することも可能みたいです.

ロジスティック回帰では対数尤度関数 ln p(x)にマイナスをかけたものを損失関数としていました.

loss =  - ln p(x)

この場合対数尤度関数を最大化,つまり損失関数を最小化していくのが正しくなります.

VAEではロジスティック回帰と同じようなことをしない場合が多く

対数尤度関数の符号を逆転させません.

よって

VAEの損失関数 = ReconstractionError - KLダイバージェンス

 と定義される場合が多いと考えられます.

 

もし損失関数は最小化しないと気持ち悪い!という場合は単純に

VAEの損失関数 = -ReconstractionError + D_KL

と定義して損失関数を最小化するようにすればいいです.

参考文献

Variational Autoencoder徹底解説

https://qiita.com/kenchin110100/items/7ceb5b8e8b21c551d69a

https://qiita.com/iss-f/items/c43b23815fc6d15ae22e

http://tkengo.github.io/blog/2016/06/04/yaruo-machine-learning5/

【論文読み】Sentiment-Based Prediction of Alternative Cryptocurrency Price Fluctuations Using Gradient Boosting Tree Model

今手元に仮想通貨関係のInfluencerたちの発したtweetとBTC価格のデータセットがあるのですが,ここからBTC価格に影響のありそうなtweetを抽出し,さらにwweetからBTC価格の上下を当てる,,なんてことを研究で行っています.

 

一旦はeventstudyでBTC価格に影響のありそうなtweetを抽出するとこまではできたのですが(色々問題あり),肝心のBTC価格の上下を回帰で当てようとする部分が精度が低すぎて使い物になりませんでした..

 

これより,tweet->BTC価格の回帰

に役立ちそうな論文をあさっていました.

 

色々サーチしたところ

こちらの論文 

Sentiment-Based Prediction of Alternative Cryptocurrency Price Fluctuations Using Gradient Boosting Tree Model

 

が非常に参考になりそうだったので読んでみました.

 

submmitが2018/3で被引用数が4回,arxXivに登録されています.

 

論文の内容をまとめると

 

特徴量作成で感情分析を,回帰モデルとしてxgboostを用いてZClassicの価格を回帰分析してみたところ,相関係数が0.81になった

 

ということでした.

相関係数がなかなか高いですね.

 

 

特徴量は以下の6つのようです.

一時間あたりの取引数,Neutral, Positive, Negative, Unweighted Index, Weighted Index

 このうち

Neutral, Positive, Negativeはおそらくonehotベクトルだと思います..

Unweighted IndexとWeighted Indexがまだよく理解できていません..

 

  

入江開発室に入ってみた

入江開発室って知ってますか?最近twitterなどで徐々に認知度が上がっている開発者向けのオンラインサロンです

camp-fire.jp

 

色んなプロジェクトが並行して走っていて,サロンメンバーは好きなプロジェクトに参加できるようになっています.

 

このオンラインサロン,自分のようにチームでの開発経験が少ない人にとっては非常に有益だと思います.

なぜならば短期かつオンライン上で完遂できる開発案件にスキルが未熟なうちから関われるから.

 

 

コーディング能力またgithubやslackを介したコミュニケーションのお作法が十分に備わっていない人物が参加できる開発案件はベンチャーの6ヶ月~などの長期的な案件が多いでしょう.オンライン上の案件はほぼ開発能力が一通り身についている人が携われる案件が多い.スキルが未熟な人がオンライン上で気軽に開発経験をつめるというのは非常に貴重な場です.