クラウドネイティブなELTツールMatillionで多テーブルの結合処理
クラウドを前提にしたELTツールのMatillionを使うと、意外な驚きに出くわします
多くのETLツールは、BigQueryをデータソースとして前処理を行うと、一度BQよりデータをツール側に取り出して処理を行います。これは、BQの力を最大限に活かせず、処理は、できるだけBQ側のリソースで行えるツールが欲しくなります。Matillionは、そんなことを手軽にできるツールです。
そんなツールで、多数のテーブルの結合処理が一つのコンポーネントだけで、なかなか面白い感じで記述できるので紹介します。
オレンジの3つがBigQueryの3つのテーブルで、赤枠で囲まれたJoinコンポーネント1つで、この3つのテーブルの結合処理を記述できます。よくあるETLツールは、一つのJoinコンポーネントで2つのテーブルを結合する記述です。たくさんのテーブルの結合をまとめて記述できれば、データフローを直感的に記述できます。今までのツールだと、プロのマエショリストが多段の結合処理をする場合、どの順番で結合するかを考えるのが腕の見せ所でしたが、Matillionだと、これらの処理はMatillionが適当にSQL文にしてBQに投げてくれる感じです
より詳しくは公式のYouTube動画を
古幡征史
PDFの中に埋め込まれているテーブルをデータフレームで取り出す、Rで
PDFの中に埋め込まれているテーブルからデータを抜き出したいという状況って頻繁にあると思います。まぁもしもそんな状況は一度もなかったとしても、それが簡単にできるということでせっかくなのでちょっと試してみようと思います。Rを使います。
きっかけは、Exploratory西田さんのこのツイートです。tabulizerというライブラリを使うようです。
Oops! Actually, this will do the exact, except with less lines/pkg! (thanks to @urganmax !) 🔥
— Kan Nishida (@KanAugust) 2020年4月21日
library(tabulizer)
library(purrr)
df_list <- tabulizer::extract_tables("file.pdf") %>%
purrr::map_dfr(https://t.co/Bz4BWtBUrJ.frame) pic.twitter.com/frFe24BZT4
続きを読む
Prophet時系列予測モデルをExploratoryで数クリックで実行
時系列予測モデルProphetをExploratoryで使いこなして、50年ほど時計の針を進めましょう。
Prophet時系列予測モデルの革新
時系列予測モデルを扱うには、定期的な時間間隔(テンポ)の入力データが扱いやすいのが通例です。月次データであれば、毎月の数値データのデータセットです。ただし、日次データになると急に予測モデルでの扱いが難しくなります。株式市場などのビジネスデータは土・日・祝日の休日や、数年に一度のレベルで起こるサーキットブレーカーの発動などのイレギュラーなイベントがあり、テンポがずれた時系列データとなり、予測精度を保つのが急に難しくなります。ウェブ企業は365日営業しているので、日レベルの時系列予測の需要はとても高いです。
そんな中、2018年のはじめごろFacebook社のProphet時系列予測モデルが素晴らしいと聞き、試してみたところ、驚きました。よく使われる日次データの予測が非常に頼もしく、営業数値などを扱っている部署では月内着地予想などを作りやすいと思いました。また、チェンジ・ポイントでトレンドの変化点などもつかみ取りやすいです。
Prophetの今までの課題とExploratoryでの扱いやすさ
ProhetはRやPythonで動きますが、インストールに手間取ったり(Stanを入れるときやlibrary間の依存関係の解消)、入力データのカラム名に命名規則(ds, yなど役割ごとに決められたカラム名にしなければならない)があったり、そもそもRやPythonでプログラミングに抵抗がある人がいます。
TableauにてPythonやRと連携できるようになったので、2018年の秋ごろ、この連携ならノンプログラミングを希望するユーザにとって良いと思い、実際に試してみました。連携をするために、ものすごく設定が多く、コマンドや前処理をかなり書かなければいけないので、人を選ぶやり方です。なお、Tableauで実装されているのは指数平滑化法(Exponential Smoothing)で1940年~1957年ごろに作られた手法です。この手法が今でも汎用的に真っ先に試されるものですが、月次データで3年以上の履歴データが最低限必要で、ビジネスでは適用範囲が限られます。
2019年にExploratoryで標準メニューに入ったのですが、ようやく試してみたら、数クリックで予測が終わり、とても使いやすく驚いています。Prophetの命名規則に縛られることもなく快適です。
使い方の例
ExploratoryでのProphetの使い方は、西田さんのYoutubeが分かりやすいです。時系列予測の基礎知識に関する説明も含まれています
この記事では、 Prophet公式にあるアメフトのPeyton Manning選手のWikiへのアクセスログを対数化したものを例に、Prophetの使い方を見てみます。
このデータは2007/12/10~2016/1/20までの2,906日分のアクセスログ(対数化済み)です。なんとなく周期的な変動と、たまに突発的なスパイクがあるのが見て取れます。
その際、Exploratoryに読み込ませたのは上記の2列のデータです。
実行手順
「アナリティクス」タブから「時系列予測(Prophet)」を選びます。
変数やパラメタを設定する画面が出るので
- 日付/時間の列にdsを設定(今回は時間粒度が年月日なので"DAY"を選択)
- 数値データの列にyを設定(データはSUMのままにしておく。変更しても一つのデータなので特に変化はない)
- 詳細情報を設定する場合は歯車マークで設定
分析結果
実行ボタンを押すと下記6種類のプロットとデータタブが自動で出力されます。
予測結果
「予測結果」タブで過去実績とProphetによる予測値のグラフが出力されます
- 青線: 実績データy
- オレンジ: 予測データ
過去実績期間があるのは、バックテストで予測数値を過去方向に伸ばしているものです。これにより過去データに足して、それっぽい予測値が出ているのが見て取れます。また、予測期間に対しても、職人が手で作りそうな形状の予測値ができています。
トレンド
「トレンド」タブにて、Prophetの予測によるトレンド成分が出力されます
緑の曲線がトレンド線で、緑の縦棒がトレンド変化点の変化の大きさです。2012年まで上昇トレンドにありましたが、それ以降は下降気味です。これはManning選手が2012年年3月7日に解雇されるまでインディアナポリス・コルツに在籍し、同年3月20日にデンバーブロンコスと契約するタイミングで、トレンドが変化していることを捉えています。
年周期
「年周期」タブにて、1年の中での周期性を確認します
1月下旬にピークがあるのは2月上旬に開催されるアメフトのスーパーボールの時期に合致します。それ以降はオフシーズンですので、季節性は低く、秋ごろ以降季節性が高くなっていく様子を捉えております
週周期
「週周期」タブにて週内の周期性を見ます
月曜日がピークで、土曜日に向け周期性の成分が下降しています。これは直感と合わず、季節性の分解に失敗している可能性があります。恐らく、何かのイベント効果などのデータが必要かもしれません。今は飛ばしてしまいます
効果
「効果」タブにてトレンドや季節性の影響を比較します
バックテストの結果として
- Trend成分で予測の大半は成り立っており
- Yearly Seasonality(月効果)成分でギザギザの形状の大半を説明し、
- Weekly Seasonality(曜日効果)成分で微調整をしている
変数重要度
「変数重要度」タブで変数間(トレンドを除く)の重要度を把握する
Yearlyが0.6弱で、Weeklyが0.2弱。残りはイレギュラーな成分なのかもしれないが、詳細は要調査
データ
「データ」タブには元データとProphetによって出力された値、信頼区間の範囲、各種成分が表示されます
まとめとそれ以外のこと
上記ではProphetが簡単に使えて、時系列予測の情報を得ることができることを示しました。ここから、さらに知りたいことの例として、こんなことが挙げられます。
- 予測精度の表示
- 年月日より粗い時間粒度(月や週)での実行結果
- ダミー変数(外部予測変数)の利用(スーパーボールの日フラグ、オフシーズン・フラグ)
- 祝日効果の利用
- チェンジポイントの活用
- 欠損値の効果
- 多種データの処理(一つのデータセットに多くの種類の予測対象があり、それらをループして予測。例えば、店舗ごとの予測値を出力し、それを全体で集約した全体予測値を算出)
古幡征史
入試の出題であってはいけないこと
今回は分野外のトピックです。近頃は外出しないお陰で普段目を向かない事を省みる機会に恵まれています。普段データサイエンス教育に携わっている立場から「教育や学習とは何か」について改めて考える一貫として、(一番勉強したのは15-25歳でしたし)母校の入試問題を2020年から遡って解くことに充実しています。同時に出題担当の教授の意図を推測します。例えば2020年の国語第一問は「身の丈問題」の現れでしょうか …
さて、その中で今回取り上げるのは如何にも controversy に溢れそうけど、不思議に炎上の様子がまだ見つからない2020年の英語の第一問B のうちの1箇所です。下の図は関与部分です。
(出典)Darwin Come to Town (人工世界で進化する生態系)
https://www.kirkusreviews.com/book-reviews/menno-schilthuizen/darwin-comes-to-town/
問題文全体:
https://www.yomiuri.co.jp/nyushi/sokuho/k_mondaitokaitou/tokyo/mondai/mondai/1317194_5409.html
図1(a) の ( ア ) に入るように 図1(b) の言葉を並べ替える、という至って普通の文法かつ解釈を問う問題です。あなたは何と答えますか?
私の回答は直感的に
Thanks to that mosquitoes get trapped in cars ….(A)
一方で元出典、つまり必然的に各予備校がやむを得なく公開する回答は以下です。
Thanks to mosquitoes that get trapped in cars ……(B)
少ないサンプル3名を相手にした調査では、
- 日本人・母校OB(理系):B ➡︎ 後ほど私に説得されてAが良いと納得
- 日本人・母校OG(文系、現在米国にて留学中):A ➡︎強くAを支持
- 日本在住の中華系アメリカ人:B ➡︎ A,B両方とも可 との意見
そのうち私も答えはA, Bともに許されるではないかと飲み込めるようになったが、断然A(出典の文章とは違う方)が良いと思い、理由は以下です。
穴埋めの後の部分に来る “…. its genes spread from city to city, but at the same time it also cross-breeds with ….” では、 "its "や "it "は段落前方にある "the Underground mosquito" という「種」を指しています。それなのに B のように mosquitoes を主人公としている文節を持ってくると "Thanks to mosquitoes that get trapped in cars and planes, its genes spread from city to city, but at the same time it also cross-breeds with ….” となり、 its → their, it →they にしない限り非常に違和感がありませんか。
文法や綺麗さの問題だけではないです。Bだと「トラップされた数匹の蚊ゆえに」になり、話が小さすぎると思います。それに対してAは「一般的に蚊が乗り物に閉じ込められる」という現象全体を語っているのもAを強く支持する理由です。
とはいえ、やはりBの文章は(itが種を指しているだけあって)完全にNGにするわけにはいきません。
私が本質的に不可解なのは、答えがはっきり決まらない文法問題を何故東大入試に出すのか、です。 数分でも考えれば英語の専門家が誰でも答えが2つあると気づくし、入試英語の問題の作成・採点にはネーティブスピーカーも関わっているはずです。
この事態になった理由も考えてみました。
- (可能性1)Thanks to というよくある文法問題を出したいだけで、実は深く考えなかったゆえに答えが2つある問題になってしまった
- (可能性2)実は…. 実は….. Aは元出典のBよりも英語のセンスが良く、かつ表現を使いこなすために高い英語力を要するため、元出典とは違うAを書いた学生にはプラス1点を付けて差別化している(Bを書いた学生は減点せず)
(可能性2)は、意地悪ではなく、試験問題の作成を外部に委託する体制(英語をTOEFLにするなど)を間接的に批判したい心があるかもしれません。というのも、問題1Bで並べ替え問題が出題されるのは東大入試の歴史の中で今年が初めてです。
私はどうか(可能性2)であることを祈っています。全く点数の差をつけるつもりなく「どちらも回答でもいい」問題は母校の入試では許されません(笑)。まあ、笑える話ではなく、出題ミスとして事後にトラブルになったり、コンプライアンス問題になる可能性だってあります。受験生が答えを2つ書けない上、「1つしか選べないと指示しているのに正しい回答が2つある」というのは矛盾です。今回Aを答えた受験生が一人もいないことはあり得ないと思います。
最後に、調査の国際色を増やすために、日本在住の元同僚イギリス人物理学研究者(英語に相当こだわりを持つ人)にも「この文章どう思いますか」を聞こうと思ったが、とwittyな彼の場合、おそらく「ummmm... I agree that subway mosquitoes are scary」しか帰ってこないでしょう。
ヤン ジャクリン
Ikigai(いきがい)について
4月は新入社員の季節なので、最近アメリカで注目されている日本語 "Ikigai"(いきがい)について書いてみます。注目されている背景を知るには、ステレオタイプな表現ですが、30代以下の典型的なアメリカ人の生活を見ると伝わりやすいです。世界一学費の高いアメリカの大学を自分で学生ローンを組んで、借金と共に卒業します。資本主義の中心地ですので、先に借金をして自分の市場価値をあげて、将来お釣りが来るはずでした。先輩世代は、それでうまくいっていた訳ですが、実態経済が良くない状況が長引き、仕事つまんないなって思ってしまっている人が意外と多かったりします。週末の休暇を待つためだけの働き方。それは日本でも同様かもしれません。
そんな中、英語には翻訳しづらい言葉「いきがい」が日本語にあり、その言葉の持つ意味がアメリカ人の心を揺さぶりました。つまらないはずの仕事を楽しみながら、心が豊かで「自分らしい」生活を送れる。そんな素敵な人生の過ごし方ができるなら、自分もそんな人生を送りたい。そのヒントになるのが「いきがい」という言葉です。いきがいは次の4つが合わさっている状態です。
- 好きなこと
- 必要とされていること
- 稼げること
- 得意なこと
就職したての人にとって、「好きなこと」をするつもりで働き始めても、気付いたら上手くいかないことや嫌なことなどが積み重なり、だんだん仕事が嫌いになってしまうことがあります。そうすると、自分にはもっと適した仕事があるんじゃないかなぁって、自分探しみたいなものをはじめたくなります。
そんな人にお薦めするのは、まず「得意なこと」を作ることです。他の誰にも負けない得意なことがあれば、その良さを気付いてくれる人とめぐり合うことで「専門職」となれます。専門職として認められれば、多く稼げ自信やプライドが付いてきます。誇れる自分は、その仕事がどんどん好きになり、「情熱」もついてきます。やがて、世の中で「必要とされること」って認められ、自分にとっての「いきがい」を感じるようになります。
また、「得意なこと」を杭に例えると、それは誰にも負けないくらい深い所まで根差していると、とても強固な「得意なこと」になると思います。さらに欲を言えば、もう1本深い杭をさすことができるならば、そこにはボーナス・ステージが待っています。2つの得意なことは、それぞれ線でしか表現できないのですが、線と線で張られる面が全て自分の個性に変身し、自分のオリジナリティある世界観を作ることができます。はじめは、なかなか2つの得意なことを作るのは難しいですが、会社の同僚と得意なことを出し合って、面白い世界観を表現した働き方をする人生はいかがでしょうか?
古幡征史
AutoML(自動機械学習)サービスの比較‗ForecastFlowとPredictionOne
本記事は2つの会社が提供している予測分析のできるサービスを使ってみた記録です。
・ForecastFlow(GRI社提供)
・Prediction One(SONY社提供)
を使用しました。どちらも初めて使いました。というかAutoMLサービスを初めて使いました。こんな人でも使える!
ForecastFlowとPrediction Oneの比較
以下のリンクのデータを使用して予測分析を行い、使い方や出力結果などを比較しました。
これは顧客の解約リストです。この予測分析は顧客解約予測(Customer Churn)、というものになりますが今回は両サービスの比較にとどまっているので結果の解釈については行いません。
予測分析の手順は
①学習用のデータセットを用意する
②予測モデルを作成する
③予測モデルを用いてなんらかの結果を予測をする
となります。今回は②予測モデルを作成するところの使用感を見ていきます。
予測モデル作成設定
予測ターゲットは”Churn?(解約した?)”にしました。解約した/してないで2値のデータになります。
予測モデルの精度を検証するのに必要な精度検証用データを設定します。どちらもデフォルト値にしました。(ForecastFlowは学習用:検証用=7:3、Prediction Oneは9:1)
次に特徴量カラムの設定をします。ForecastFlowは特徴量カラムに”採用しない”カラムを指定できます。相関係数が高い特徴量カラム同士は予測モデルへの寄与を打ち消しあってしまうのでどちらかを省いたほうがいい場合があるためです。ForecastFlowでは相関係数が高いカラム、および欠損率が高いカラムをあらかじめ表示してくれるので適宜特徴量カラムから外します。今回は”通話時間(分)”に関するカラムを3つ外しました。
Prediction Oneでは手動でカラムを指定してくれます。特に注意書きなどは出なかったのですべての特徴量カラムを予測モデルに設定しました。
結果の出力
出てきた予測モデルの概要と詳細を保存しました。
ForecastFlowは精度評価などの計算結果がcsvファイルで出力されました。BIツール等でより詳細な分析・可視化ができるようです。
Prediction Oneは画像ファイルでした。見やすいんだと思います。
(そのうち画像を貼ります)
結果
どちらも精度評価の値と感度分析の結果が出てきました。
精度評価値
ForecastFlowはF値/Precision/Recall/Supportが表示されました。
Prediction OneはF値/AUC/Precision/Recall/Accuraryが表示されました。また、データ数を増やせば予測モデルの精度が向上するとの表示も出ました。
F値を比べたところ、
ForecastFlow : F=0.726(解約した), 0.963(してない)
Prediction One: F=0.6667
となり、ForecastFlowのほうがF値が大きかったです。
感度分析
予測ターゲットの変動に重要な特徴量(寄与度が高かった特徴量)が表示されます。
ForecastFlowは上位10個の特徴量と感度分析のシミュレート結果を出してくれます。対象の特徴量の変動に対し、予測ターゲットがどのような変動をもたらしそうかをシミュレートしてグラフで表示しています。
Prediction Oneはすべての特徴量について重要度順に並べてくれます。特徴量のランキングの他、特徴量の数値(単語だったら単語)ごとに解約した/してないの予測確率増加に寄与する度合いも表示されました。
ここで特徴量の重要度がForecastFlowとPrediction Oneで異なりました。ここはどの事象を重要視して解約予測に活かすかという話になってくるのでこの差をどう扱ったらいいのでしょうか。私にはわかりませんが…。
(そのうち画像を貼ります)
それぞれの良いところ
ForecastFlow
・省いたほうがいい特徴量カラムを出してくれるのがうれしい
・結果の出力がcsvになっているのでいろいろ使える
・感度分析シミュレートグラフがある
Prediction One
・マニュアルとチュートリアルが非常に親切、本当に読んでやってみたらだいたい分かる
・オフラインで作業ができるため社外に出したくないデータセットに適している
・”データ数を増やせば精度が上がる”という表示が出るのはうれしい