ローカルマシン(mac)にJuliaをインストールしてJupyter notebookで使えるようにするまでの手順

Installation of Julia (mac)

Download and execute the installation file from: https://julialang.org/downloads/

Add the path to the PATH

reference: https://en.wikibooks.org/wiki/Introducing_Julia/Getting_started

$ PATH="/Applications/Julia-1.2.app/Contents/Resources/julia/bin/:${PATH}"
$ export PATH

Add Julia to the kernels of Jupyter notebook

reference: https://qiita.com/norif/items/4fb175ce4fb34f5f524f

$ jupyter kernelspec list

Available kernels:
python3 /anaconda/lib/python3.6/site-packages/ipykernel/resources

$ julia
julia> ]
(v1.2) pkg> add IJulia

(v1.2) pkg> (exit by ctrl+C)

julia> exit()
$ jupyter kernelspec list

Available kernels:
python3 /anaconda/lib/python3.6/site-packages/ipykernel/resources
julia-1.2 /Users/riow/Library/Jupyter/kernels/julia-1.2

”Approximating Interactive Human Evaluation with Self-Play for Open-Domain Dialog Systems"

https://arxiv.org/pdf/1906.09308.pdf

章立て

  1. Introduction
  2. Related work
  3. Knowledge distillation for sentiment and semantic regularization
  4. Interactive evaluation methodologies
  5. Experiments
  6. Conclusions

概要

"対話システムで、発話に対する人間の評価を予測する関数を作り、それに基づき自己対話(Self-Play)で学習したという研究。評価関数は感情、文関係、質問らしさ(?を含むか)を組み合わせた線形関数。再現可能なよう学習済みモデル+ルールで構成され実装も公開されている。" by https://github.com/arXivTimes/arXivTimes/issues/1352

手法

会話の質を評価する {\displaystyle M_H} という新たな指標を導入。 {\displaystyle M_H} をself-play(botが生成した応答軌跡)に適用させ、判定結果が人間による評価とどう関連しているかを調査した。なお評価対象の会話は複数ターンのものを用いた。

結果

新指標 {\displaystyle M_H} の評価は、人間による評価と強い相関(r>.7)を示した。

コメント

会話の質を判定する新指標{\displaystyle M_H}を導入し、これまで人間による評価に頼っていたところを機械に代替させようとする研究であることまでは容易に読み取れたが、botの会話トレーニングもこの新指標結果を最適化させる方法で行なっているのか、それとも別の評価指標を使ってやっているのか分かりにくい。

[論文紹介]“What is your data worth? Equitable Valuation of Data"

https://arxiv.org/pdf/1904.02868.pdf

概要

教師あり機械学習を各データポイントによる共同作業と見なす。各データポイントはプレイヤーであり、学習アルゴリズムを通して共同して予測スコアの向上を目指す。ゲーム理論で提案されたシャープレイ値を用いてプレイヤーである各データポイントが得るべき公平な報酬額を計算することで各データピントの学習への寄与度を定量的に評価する。

手法

教師ラベル付き学習データ(D), 学習アルゴリズム(A), 予測スコア(V)の3要素を用いてデータシャープレイ値φ(D, A, V)を求める。φを求める式はゲーム理論のシャープレイ値とほぼ同一。ただし、この式で全体の報酬額を計算しようとすると、データポイント一つ一つ計算しなければならず計算量的に大変なので、モンテカルロ近似を用いる。 f:id:HealthcareIT_interpreter:20190823082917p:plain

結果

誤ったラベルを付けられたデータポイントのデータシャープレイ値は低くなる。これにより正しいラベル付けがなされているか定量的に評価できるようになる。

低いデータシャープレイ値を持つデータポイントを学習データから除外するとモデルのパフォーマンスは向上する。逆に高いデータシャープレイ値を持つデータポイントを除外するとモデルのパフォーマンスは低下する。

コメント

ゲーム理論において協力によって得られた利得を各プレイヤーに後世に分配する方法の一案として1953年に提案されたシャープレイ値を機械学習領域に拡張しデータシャープレイ値とした発想には脱帽する。各プレイヤーがそのまま各データポイントに置き換えられた。ゲーム理論においては各プレイヤーは協力によって報酬を得られるため、協力にインセンティブが働くが、機械学習の場合、各データポイントを提供するデータ提供者(各プレイヤー)が同様に報酬を期待してモデルの学習に有利なデータを優先的に集めるようになると、観測分布と真の分布に乖離が生じさせてしまう恐れはある。その点も考慮してか著者はDiscussionで「データ提供者がデータシャープレイ値に応じて報酬を得るべきと提案しているのではなく、単に各データポイントの定量的評価指標として有意義に利用できると考えている」としている。そのような憂慮がある一方、学習に有効なデータが欠乏している状況下でデータを追加的に集める段階においては、データ収集者(およびデータ提供者)にインセンティブを与えることで経済合理性を働かせてデータ収集業務を劇的に効率化させることが可能になるのではないだろうか。

論文紹介: "R-TRANSFORMER: RECURRENT NEURAL NETWORK ENHANCED TRANSFORMER"

https://arxiv.org/pdf/1907.05572.pdf

概要

Globalな情報はTransformerのSelf-Attentionで、Localな情報をRNNで取得するという手法の提案。Transformerは大域的な情報に強いものの局所情報はposition embeddingという限られた情報に依存しているため、これをRNNで代替/補強するというアイデア言語モデルで優秀な精度を記録。

手法

3つの異なるネットワークが階層的に配置されている。最下層はlocalRNNで、一定の幅を持つ局所ウィンドウをシークエンスの並びに沿って徐々に動かしていく。RNNはそれぞれの局所ウィンドウの中で実行される。中間層はmulti-head attention networkで、グローバルな長いシークエンスの依存関係を捉える。最上層はfeedforward networkで、非線形の特徴抽出を行う。これら3つのネットワークは残差とlayer normalizationによって結合される。 f:id:HealthcareIT_interpreter:20190821194915p:plain

結果

各データ(画像データ, 音声データ, 自然言語)それぞれについて従来の手法(RNN, GRU, LSTM, TCN, Transformer)と比較した結果いずれのデータにおいても最高の精度を叩き出した。R-transformerはRNNとmulti-head attention poolingの良いとこ取りと相互の弱点補完をしている。 f:id:HealthcareIT_interpreter:20190821195202p:plain

コメント

画像データには有名な手書き数字画像MNISTが用いられたが、28x28の画像を784x1のシークエンスに変換してシークエンスモデルに読み込ませている点は興味深い。MNISTはkaggleにもコンペが出ているのでR-transformerが従来型のモデルより高い精度を出せるのか試してみるのも面白そうだ。

論文紹介: "Towards Automated Machine Learning: Evaluation and Comparison of AutoML Approaches and Tools"

下記論文の紹介
https://arxiv.org/pdf/1908.05557.pdf

概要

Auto-MLを実現する各種ツールの機能と、様々なデータセットに対するパフォーマンスを調査したサーベイ

手法

各種データセットを独自の指標に基づいてセグメント分けして様々な比較をした。各種ツールのパフォーマンスを比較し、強みと弱みを炙り出した。

対象としたツール:

  • TransmogrifAI
  • H20-AutoML
  • Darwin
  • DataRobot
  • Google AutoML
  • Auto-sklearn
  • MLjar
  • Auto_ml
  • TPOT
  • Auto-keras
  • Ludwig
  • Auto-Weka
  • Azure ML
  • Sagemaker
  • H2O-Driverless AI

結果

ツールによって得意不得意があり(二値分類に強いけどマルチラベルに弱いなど)、また実行時間にも差がある。商用のツールは前処理やデータ構造の分析もサポートしていることが多い模様。 f:id:HealthcareIT_interpreter:20190820224404p:plain

コメント

AutoML系のツールを共通の指標で横断的に比較した研究はありそうで無かった。DataRobotが対象になっているのがありがたい。ところで(DataRobotの宿敵とされる)SAS Viyaは入ってなかったけどAutoML系ツールとして見なされてないのかな?

神戸市データサイエンティスト募集要項(完全転載)

下記ページの完全転載です。消される前に永久保存です。EBPM分野のデータサイエンティストの業務内容や待遇のベンチマークとして参考にしてください。 www.city.kobe.lg.jp

記者資料提供(令和元年6月26日) 企画調整局産学連携ラボ

データサイエンティストを募集します

 神戸市では、オープンデータや統計の公開・活用により市民や事業者のニーズを踏まえ、根拠に基づいた政策立案(EBPM)を推進する目的で、行政保有のデータや民間保有のデータ等を利活用し、施策を推進していく人材を募集します。

1.募集内容

(1)職  種:データサイエンティスト
(2)募集人員:1名
(3)主な業務内容
1.データに基づいた神戸市政へのニーズ把握、政策・地域課題の発見および分析
2.最適な政策立案のためのソリューションの提案・助言
3.定量(KPI)管理等によるプロジェクトマネジメント
4.データ予測による意思決定の迅速化の支援
5.神戸市関係部局のデータの一元的管理に向けた検討・助言
6.その他前各号に掲げるもののほか、EBPM推進に関する事項等
(4)委嘱期間:令和元年8月1日~令和2年3月31日(出務日については応相談)
(5)勤務場所:神戸市企画調整局産学連携ラボ内
(6)募集期間:令和元年6月26日(水曜)~7月8日(月曜) 17:00まで
※ データサイエンティストは地方公務員法第3条第3項に基づく非常勤の嘱託職員です
※ 勤務状況が良好な場合は、翌年度以降も、委嘱期間を1年毎に更新する場合があります
(上限3年、令和4年3月31日まで)
※ 分析対象として、市の有する税情報を含みます
※ 選考の結果、適任の方がいない場合は、委嘱を見合わせることがあります

2.応募資格

(1)民間企業・自治体において、データ分析に基づくプロジェクトマネジメントの実務経験を持つこと(大学・研究機関等に在籍し、民間企業・自治体との共同研究によりデータ分析に基づく提案を行った場合も含む)。
(2)地方公務員法第16条に規定する欠格条項に該当しないこと
地方公務員法第16条(抜粋)
次の各号一に該当する者は、条例で定める場合を除くほか、職員となり、又競争試験若しくは選考を受けることができない。
1.成年被後見人又は被保佐人
2.禁錮以上の刑に処せられ、その執行を終わるまで又はその執行を受けることがなくなるまでの者
3.当該地方公共団体において懲戒免職の処分を受け、当該処分の日から2年を経過しない者
4.人事委員会または公平委員会の委員の職にあって、第五章に規定する罪を犯し刑に処せられた者
5.日本国憲法施行の日以後において、日本国憲法又はその下に成立した政府を暴力で破壊することを主張する政党その他の団体を結成し、又はこれに加入した者

3.選考方法

選考方法:個別面接
選考内容:データサイエンティストとしての適性を総合的に審査し、最終合格者を決定します。
実施日時:令和元年7月11日(木曜) 午後
※ 実施日時・場所等の詳細については、メール等により通知します。
※ 応募者多数の場合は、書類選考を行う場合があります
合格発表:選考の結果は、受験者全員に令和元年7月中旬までにメール等により通知します。

4.報酬等

(1)勤務日数:週1日 ただし必要に応じて休日出勤有り
※最終合格者に対し、希望する勤務日数を相談させていただきます
※勤務時間は、8時45分~17時30分(休憩1時間)です
※但し、土曜日、日曜日、祝日、年末年始(12月29日から1月3日)は除きます
※具体的な出務日は、選考合格後、最終合格者と相談のうえ決定します
(2)報酬:【年俸額】約75万円 【月 額】約10万円

※大学院卒・30歳・民間経験6年の場合の例
※報酬は、最終学歴・経歴(職務内容・期間)に応じて、一定の基準により決定します
※別途、通勤費を支給します
(3) 休 暇:年次有給休暇、夏季休暇、結婚休暇など
年次有給休暇は、3日(休暇15日×1/5=3日)
(4) その他:社会保険等有。ただし勤務条件による。

5.申込手続

(1) 申込書類:選考申込書兼職務経歴書(指定様式)
(2) 申込期間:令和元年6月26日(水曜)~7月8日(月曜) 17:00まで
(3) 申込方法:申込期間内に選考申込書兼職務経歴書をご提出ください。
(4) 注意事項等:
1.選考結果及び理由についての電話及びメール等によるお問い合わせは一切受け付けません。
2.選考実施に関して収集した個人情報は、本選考の円滑な遂行のために用い、神戸市個人情報保護条例に基づき適正に管理します。
3.申込手続きに不備がある場合は、応募が無効となります。
4.受験資格がないことや申し込みの内容に虚偽があると認められた場合など合格を取り消すことがあります。

6.採用までのスケジュール

選考申込書配布開始 令和元年6月26日(水曜)
選考申込書受付    令和元年6月26日(水曜)~7月8日(月曜) 17:00まで
選考(個別面接)    令和元年7月11日(木曜) 午後
合格発表         令和元年7月中旬     <予定>
採用(委嘱)       令和元年8月1日 (木曜) <予定>

7.FAQ

Q.今勤めている会社に私が受験することを伝えていないのですが、神戸市は秘密を守ってくれますか。
A.いただいた個人情報は、選考申込書記載の連絡先に確認の連絡をとること以外には使用しません。また、外部からの問い合わせに対し、応募の有無も含め個人情報についてお答えすることはありません。ただし、最終合格者については、採用までに職歴証明書を提出いただくなど、職務経歴について確認させていただきます。
Q.兼業は可能ですか。
A.兼業は可能です。ただし、勤め先がある場合には、第一次選考を通過した時点で、なるべく会社並びに所属団体等との調整を始めてください。
Q.委嘱期間は年度毎の更新のようですが、最長何年間委嘱されますか。
A.委嘱期間は最長3年です。ただし、翌年度以降の委嘱の有無については、予算の議決、仕事の成果、その他の状況にもよります。したがって、勤務成績が良好でも、翌年度以降の委嘱が保証できない場合があります。
Q.遠隔地から通勤の場合、宿泊費は支給されますか。
A.宿泊費は支給されません。通勤費は支給します。

【申込書類の提出先・問合せ先】

〒650-8570
神戸市中央区加納町6-5-1(神戸市役所1号館12階)
神戸市市企画調整局産学連携ラボ:山下・服部
TEL:078-322-6462
E-mail:ict-sozo@office.city.kobe.lg.jp

就任者情報: 神戸市による紹介 www.city.kobe.lg.jp

ご本人によるブログ note.mu

ARIMAXの使い方

モチベーション

職場でいきなり時系列モデルのPOCをやることになり、時系列分析初心者だったので大変な思いをした。exogenousやら外生変数やら何だかおどろおどろしい用語が出てきて怖気付きそうだったがPythonなら一発だった。Python愛がここでも深まった。

時系列モデルのデファクトスタンダード、ARIMAに外生変数を追加して精度の向上を目指すARIMAXモデルの直感的解説と使い方を下記Kaggleカーネルをベースにまとめます。

www.kaggle.com

ARIMA + X = ARIMAX

機械学習常習者的直感的解釈

X = exogenous variable (外生変数)

イメージとしては教師ラベルとしてのyを入力するだけのものはARIMA, yに並行して説明変数としてのXも同時入力するものはARIMAXということになる。機械学習に慣れた親しんできた者(機械学習常習者)から見ると、教師ラベルだけで学習を進めようとするARIMAはかなりエキセントリックなことをやっているように見え、むしろARIMAXの方が普通(スタンダード)に見える。

そもそも時系列モデルの数式ではXがなかなか出てこない。これはYのYによるYのための自己回帰モデルだからだが、機械学習常習者から見るとどこか落ち着かない。

Pythonによる実装

arima = sm.tsa.statespace.SARIMAX(y, order=(7,1,7), seasonal_order=(0,0,0,0), enforce_stationarity=False, enforce_invertibility=False).fit()

arimax = sm.tsa.statespace.SARIMAX(y, order=(7,1,7), seasonal_order=(0,0,0,0), exog = X, enforce_stationarity=False, enforce_invertibility=False).fit()

ちなみにXはpandas.DataFrameでもnumpy.ndarrayでもOK。 ちなみに実際にはXはX_trainとX_testに分割し、fitの段ではX_trainを、predictの段ではX_testをそれぞれ入力データとしてモデルに与えてやる必要あり。

参考になった書籍

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

時系列解析入門

時系列解析入門