NumPyroによる本塁打率のモデリング

これまで,検索閲覧時間やページ閲覧回数などの行動データの統計モデリングを行うときは,メインのプログラミング言語であるPythonではなくRを使っていた.具体的にはbrmsというパッケージを利用していた.Rとbrmsを使えば,確率モデルを数式チックに記述できる.また結果を可視化し分析するパッケージ群が豊富にあるということで,Pythonを手放してまでRを使っていた.

ところが,Rだと計算が遅い.Rでは並列化やGPU利用に少々難がある.何より,使い慣れたPythonで前処理から分析を行いたい.これら問題を解決するためのツールとして,Pythonでは確率的プログラミングのライブラリとしてTensorFlow ProbabilityPyroが公開されている.しかし,これらはTensorの扱いに慣れていない軟弱な僕にはつらい.

諦めていたところ,最近NumPyroというライブラリがあることを知った.なんとTensorではなくnumpyのarray形式でデータを扱えるというではないか.開発もPyroと同じUber AI Labsによって行われているので,メンテナンスもしっかりしてそう.ということで,NumPyroの使い方を勉強してみることにした.

題材として,以前から気になっていた@muijpさんの「野球選手が本塁打を一番打てるのは何歳のときなのかPythonStanで求める」をNumPyroで実装してみることにした.

以下は,NumPyroでの統計モデリングの実装方法に関する記事である.どうぞご笑覧ください(Github Gistコードへの直リンク).

昆虫食

鴨江アートセンターで開催された「未来はディストピアか?ユートピアか?」に参加した.フリーフードのおやつとして昆虫食が提供されていた.普段なら絶対食べないが,イベント参加前からお酒が入って酔っぱらっていたので,食べてみることにした.

昆虫食はタンパクを多く含んでおり,アジアでは貴重なタンパク源として食されている.日本でも地域によってはイナゴを佃煮にして食すことは知られている.昆虫食と聞くとびびってしまうが,先に述べたようにアジアでは普通に食べられているし,日本でもNPO法人食用昆虫科学研究会などが食糧危機の対策の一つとして昆虫食を推している.ここまでは知っていたのだが,日本に昆虫食販売店があることは知らなかった.今回提供された昆虫食はtakeo.tokyoが提供しているもの.パッケージが外国で売っているドライトマトのようで,洗練されている.今日のメニューはバッタ,コオロギ,ミルワームだと思われる.

酒の勢いで食べてみる.サクサクした食感で小エビの唐揚げのような食感.味は不味くはない.ザ・たんぱく質である.昆虫によって微妙に味が異なり,バッタよりもワームの方がコクがある,ような気がする.見た目さえ気にしなければ,割とパクパクいけそうだ.これで食料危機が脱せるのであれば,悪くないと思う.

写真はどら焼きと昆虫食(バッタ)のコラボ.昆虫食ばかり食べていると味に飽きてくるので,甘いものと併せて食べると良いでしょう.

西浦田楽:真夜中に山奥で踊りを観る

2月12日夜,浜松市水窪町の西浦観音堂まで西浦田楽(にしうれでんがく)を観に出かけた.西浦田楽は,知る人ぞ知る国の重要無形文化財.凍えるような寒さの中,月の出から翌日の日の出まで,20名程度の能衆によって夜通し演劇や舞が行われる.詳しいことは「情報サイト水窪」をご覧いただくのがよいと思う.

参加のきっかけは昨年開催された学会「じんもんこん2019」.学会中,たまたま西浦田楽のアーカイブに関する研究発表をされている方がおり,浜松市の山奥でマニアックな田楽が1000年以上催されていることを知り興味をもった.年が新しくなり,西浦田楽の時期が近づいてきたことを知り,開催日当日に鑑賞を決心.防寒具を用意し,車で出かける.

浜松市街から40km程度,水窪町まで車を走らせる.本当に人がいるのか不安になるくらい,街灯も人気もほとんどない山道を車で駆ける.20時15分頃,会場近くにあるとされていた駐車場に着き,車が30台程度停まっているのを見て,たしかに人間がいることを確認して安心した(車が停めるスペースが足りない状況にやや焦った).会場である西浦観音堂まで行くと,田楽が始まる21時までまだ45分もあるにも関わらず,すでに30名程度人が陣取っていた.

21時になると,観音堂下の階段から能衆の方々がやってきて,田楽がスタート.ここから47演目,途中休憩を1時間程度挟むらしいが,7m x 7mくらいの狭い空間の中で,原則朝7時頃までぶっ通しで演じられる.田楽がスタートすると,ちょうど良いタイミングで山肌から満月が顔を出した.真っ暗闇を照らす月,燃え上がる松明が西浦田楽をさらに幻想的なものにしていた.

予習もせずに鑑賞し始めたこともあり,何演目か見てようやく気付いたのだが,西浦田楽は完全に宗教的なものではなく,民俗芸能要素も多く見られた.

今のご時世にこんな山奥で夜通し昔の民俗芸能をやって何が面白いという意見もあるかもしれないが,1000年以上も同じ場所でほぼ同じ演目をやり続けていることの意味の大きさを感じざるを得なかった.田楽を演じられている能衆の方は10代から70代まで様々.神聖な演目は真剣な表情で演じられる一方で,「高足」などのコミカルな演目は,能衆が楽しそうに会話をしながら演じられていた.能衆の方々は田楽を大変楽しまれている様子で,出番がやってくると「それじゃ,行ってくるわ!」と声を掛け合いながら演目に臨まれている様子が印象的だった.

水窪町の方々にとって,西浦田楽は自らのアイデンティティを決定するものなのだろう.水窪町の方々の「人生」を強く感じた.

今回の鑑賞はあまりにも寒すぎて,足先が痛くなってきたので,12時頃に行われた「船渡し」の演目を観て帰宅することにした.来年は最後まで観れるように準備をしたい.

WISE2019で研究成果を発表

2020年1月19-22日に中国は香港にて開催されたThe 20th International Conference on Web Information Systems Engineering (WISE 2019)に参加し,修士1年生の齊藤史明君が研究発表を行いました.

WISE2019は2019年の11月末に開催される予定だったのですが,諸事情により2020年1月に延期になりました.参加者数は例年よりも少なかったですが,学会および香港の食事を十分に楽しみました.

発表タイトルとスライドは下記の通りです:

Fumiaki Saito, Yoshiyuki Shoji and Yusuke Yamamoto: “Highlighting Weasel Sentences for Promoting Critical Information Seeking on the Web”, Proceedings of the 20th International Conference on Web Information Systems Engineering (WISE 2019), pp.424-440, Hong Kong, China, November 2019 (50/211 = 23.7%).

 

読点(、)の打ち方

卒論をチェックしていると,学生の読点の打ち方が気になる.読点が適切に使われていないと,大変読みづらい.

ところで,句読点は小学校の国語の授業で習いはしたが,文章を書く上での効果的な使い方について,ちゃんと習った記憶がない.文章作成技術に関する書籍を2,3冊読んでみたが,読点の使い方についてまとめてくれているものが見つからなかった.

この度「分かりやすい公用文の書き方(礒崎陽輔著)」の中で,句読点の使い方についてまとめられていることを発見.今後のために,僕なりに注意したい(注意して欲しい)読点の打ち方をここにまとめておく.

なお,磯崎氏曰く,句読点の使い方については,旧文部省がまとめた「区切り符号の使い方」が現在まで拠り所となっているそうだ.磯崎氏の書籍には,このまとめを踏まえつつ,自身の公用文作成・指導経験をもとに,分かりやすい公用文の作成ルールをまとめられている.


大原則:読点は,文を読みやすくするために打つ

読点の打ち方には,絶対のルールは存在しない.読みやすく分かりやすい文を書くために必要であれば,それに応じて読点を打つことができる.

読点ルール集

ルール1:単文では,主語の後に読点を打つ

  • 修正前:私は静岡大学の情報学部で教員として働いている.
  • 修正後:私は,静岡大学の情報学部で教員として働いている.

ルール2:主題を表す助詞のついた文節など,主語に準ずる場合もルール1を適用する

  • 修正前:新しい研究テーマについては配属後数週間以内にその骨子をまとめる必要がある.
  • 修正後:新しい研究テーマについては,配属後数週間以内にその骨子をまとめる必要がある.

残り13ルールについてはコチラから確認できます.

水が飛び散る洗面台


ホテルで洗面所に行くと時々遭遇するのが,写真のような洗面台.蛇口から注ぎ出る水に手をさらそうとすると,思ったよりも蛇口が奥側にあり,受け皿の奥の方で手を洗うことになる.結果,弾かれた水が受け皿の外側に飛び散ってしまう(というか,水を外に出してしまう).そのため,受け皿の外側に水が出ないように手を洗おうとするだが,なぜそんな努力をしないといけないのか,残念な気持ちになる.水が飛び散らないようにするためか,蛇口によってはは背が低く作られているものがあるが,蛇口の位置が遠くかつ低い場合かなり手が洗いにくい.

洗面台の設計者は,なぜこのような蛇口の配置にしたのだろうか?蛇口がもう少し内側にあれば,受け皿の内側で手を洗えるので,水が飛び散らなくてもすむ.さすがに何も考えずに洗面台を設計したわけではないだろうから,何か意図はあるのだろう.

あり得そうなのが,受け皿を広く使えるようにするため.蛇口を極力端に持ってくることで,受け皿の上で手を動かせる領域が広くなる.コップや洗濯物を洗うには,蛇口のパイプは邪魔にならない方がよいかもしれない…

仮にこの説が正しいとしたら,個人的には手の洗いやすさを重視してほしい.洗面台の使用目的はまず手を洗うことだと思うから.受け皿の使用可能領域を広げるならば,蛇口の位置を奥にするアプローチではなく,蛇口の位置を高くするアプローチもあるだろうに.もちろん蛇口の位置を高くすると,水が撥ねやすくなりそうだが,そもそも写真のような洗面台でも水を外に出してしまうのだから,蛇口の位置を最適化する余地は十分にあると思う.

キレイで怪しい重慶大厦

学会での研究発表のために,修士1年生の齊藤君とともに香港に来た.バンケットが終了後時間があったため,ホテルの周りをぶらぶらしてみた.

昨年の12月の選挙を終えてから,香港は平穏を取り戻したようだ.とはいえ街を歩いていると,ところどころに「香港革命時代」「反抗」といった文字が壁に書かれているのを見かけ,この地でデモが本当にあったことを感じさせられた.

ネイザンロードまで来たので,かの有名な重慶大厦の前まで行ってみた.今の重慶大厦は外装だけ見れば,キレイなビルに見える.沢木耕太郎さんの深夜特急で描かれたような,ボロボロで味のある建物の姿はない.でも,入り口にたむろする怪しげなインド人に「ハッパあるよー」と声をかけられると,ああ,姿は変わってもチョンキンマンションの怪しさは健在だと感じた.

LeetCodeを始める

研究室の学生がLeetCodeの自主勉強会を始めた.LeetCodeとは知る人ぞ知る,コーディング面接対策のウェブサイト.様々なアルゴリズムの課題がリストアップされているのだが,GAFAなど有名IT企業のコーディング面接で出題された課題が掲載されているのが興味深い.

GAFA就職を目指すわけではないが,暇つぶしのためにLeetCodeにチャレンジしてみることにした.学生はアルゴリズムではなくSQLの課題に取り組むそうなので,僕もまずSQLの課題にチャレンジしてみた.

SQLの課題ということで少々舐めていたが,やり応えがある.コーディングの勉強といえば,ついついアルゴリズムに目が行ってしまうのだが,SQLもなかなか面白い.なんとか解けたとしても,模範解答を確認すると,自分が意識していなかった構文があったりして勉強になる.

下記のようなEmployeeテーブルから2番目に高い給与額を返すSQLなんかは,自分で解いたときは結構ややこしいSQLを書いたのだが,OFFSETなる便利なものがあるんですね.全く知りませんでした…

+—-+——–+
| Id | Salary |
+—-+——–+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+—-+——–+

[論文読み] The Language that Gets People to Give: Phrases that Predict Success on Kickstarter

出典:Tanushree Mitra and Eric Gilbert: The language that gets people to give: phrases that predict success on kickstarter. In Proceedings of the 17th ACM conference on Computer supported cooperative work & social computing (CSCW ’14), pp. 49–61 (2014).

URA時代に見つけて概要と図表くらいしか読んでなかったが,最近学生が始めた研究の進め方に参考になりそうだったので,引っ張ってざっと読んでみた.

概要

この論文では,KickstarterなどのAll-or-nothing型のクラウドファンディングにおいて,融資達成の成否と広報の文言との関係を分析.Kickstarterで融資募集された45000件のプロジェクトの紹介ページの内容とプロジェクトの成否(融資が満額達成されたか)との関係分析した結果,融資が達成されたプロジェクトでは,返報性の原理や希少性アピールなど,説得的心理作用をもつ文言をもってプロジェクトが紹介されていることが多いことを明らかにした.

研究のウリ

スモールビジネスを成功させる方法として活用が広がりつつクラウドファンディングにおいて,融資を成功させる広報文の具体的な特徴を,自然言語解析と説得コミュケーションの観点から明らかにした点.

既存研究の問題点

社会学的な観点からクラウドファンディングが普及しつつある理由を分析する研究,機械学習的なアプローチによってプロジェクトの成否を予測する研究は行われている.しかし,プロジェクトを成功に導く具体的な方法論をコンピュテーショナルに分析,検討した研究事例は少ない.

分析方法

クラウドファンディングサイトの最大手であるKickstarterのプロジェクトページをクローリングし,45000件のデータを取得.取得したデータは,融資目標金額やビデオの有無等のプロジェクトの定量的な情報に加えて,プロジェクト紹介文と融資者への返礼に関する記述が含まれる.

取得したテキストデータをuni-gram,bi-gram,tri-gramデータに変換.汎用的な言語特徴を取得するために,50回以上出現し,かつすべてのカテゴリに出現する20391フレーズのみ分析の対象とした.

上記フレーズ情報(20391種類)および融資目標金額,ビデオの有無,コメント数,更新回数等の定量情報(59種類)を説明変数に,プロジェクトの成否を目的変数として正則化ロジスティック回帰モデルを構築.

結果

  • 定量情報のみを用いるよりも,言語情報を併せて利用した方が推定性能は高い(Error rate 17% vs 2.4%).
  • 定量情報の中では図やイラストの有無の寄与率が高い(表5)が,定量情報よりも言語情報の方が予測寄与度が高い(beta coefficient)
プロジェクト成功の予測に対する非言語要因の影響度(偏回帰係数).論文の表5を引用.
プロジェクト成功の予測に対する非言語要因の影響度(偏回帰係数).論文の表5を引用.
  • 融資者に対する便益の返報を強調するフレーズ(例:also receive twoやwe can afford),希少性を協調するフレーズ(例:option is …や you are being given the chance),社会的証明を刺激するフレーズ(例:X have pledged),共同体意識を刺激するフレーズ(例:accessible to the X community)などは,プロジェクト成功につながりやすい(図6).
成功プロジェクトに特徴的に出現するフレーズ"pledgers will"の言語パターン・論文の図6を引用.
成功プロジェクトに特徴的に出現するフレーズ”pledgers will”の言語パターン・論文の図6を引用.
  • 消極性をにじませるフレーズ(例:not been able),不確実性をにじませるフレーズ(例:possibly hope to get)は,プロジェクト失敗につながりやすい

感想

単なる大規模言語解析に留まらず,得られた結果に対して社会心理学的な解釈を与えている点が面白いが,この知見を今後どう利用するのかポイントか.

イントロに書かれているようにスモールビジネスにはクラウドファンディングは有益だし,その手のビジネスに関わる人は広報のテクニックに習熟しているわけではない.プロジェクト自体は有意義にもかかわらず,プレゼンテーションで失敗しているのは大変もったいないので,そういう人々に「伝えるための方法論」を磨く機会を提供することは重要である.

だからといって,この研究で明らかになったフレーズを使って説明文を書けば,プロジェクト達成できると思い込むのは浅はか.投資を説得するためのテクニックは必要であるが,how-toの背後にある哲学を押さえなければ,言葉は上滑りする.この論文の表層的な知見に振り回される人が出てこないことを望む.人を動かすには,伝え方だけでなく,中身を充実させることも重要であることは言うまでもない.

情報処理学会論文誌データベース(TOD85)に論文が採択されました

兵庫県立大学の山本岳洋准教授,Yahoo! Japan研究所の藤田澄男さんとの共同研究の成果として,下記の論文が情報処理学会論文誌:データベース(IPSJ-TOD85)に採択されました.

山本 岳洋 (兵庫県立大学), 山本 祐輔 (静岡大学), 藤田 澄男
(ヤフー株式会社):「信頼できる情報獲得に対する心がけとウェブ検索行動の分析」

後日,詳細な書誌情報を掲載する予定です.