研究日記

学習内容の記録です。わからないことばかりです。

LINE DEVELOPER DAY 2019 (2019/11/20~21) 参加レポート

本記事では,LINE DEVELOPER DAY 2019 に参加してきた筆者がイベントの内容をレポートします.

 

 

LINE DEVELOPER DAY 2019

LINE DEVELOPER DAY に関して,以下公式HP から引用です.

LINE DEVELOPER DAY は,LINEが運営する様々なサービスの技術領域でのチャレンジや知見、これまでそして今後の取り組みを紹介する技術カンファレンスです。

この技術カンファレンスは 2015年から毎年開催されており,今年で5回目の開催.

今年開催される LINE DEVELOPER DAY 2019 の概要は以下の通り.

LINE DEVELOOPER DAY 2019 の概要
開催日 2019年11月20日(水)~2019年11月21日(木)
会場 グランドニッコー東京 台場
参加費 無料
通訳 日本語→英語,英語→日本語(一部セッションを除く)

 

会場であるグランドニッコー東京台場はゆりかもめ台場駅」直結で非常にアクセスが良く,両日共に会場とりんかい線東京テレポート駅」とを結ぶ無料シャトルバスも運行していました.

 

linedevday.linecorp.com

 

学生向け参加支援制度について

LINE DEVELOPER DAY 2019 では,より多くの学生参加者を募るべく交通費・宿泊費を支援する「LINE DEVELOPER DAY 2019 学生向け参加支援制度」が設けられてました.

engineering.linecorp.com

これは学部・大学院(修士課程・博士過程)に在籍しており,LINE DEVELOPER DAY 2019 及びその内容に興味関心がある学生を対象とした参加支援制度です.詳細については,上記の学生向け参加支援制度のお知らせページをご確認ください.

以下要旨についてHPより引用です

 

応募資格

  • 学部生・大学院生(修士・博士過程)
  • LINE DEVELOPER DAY 2019 及びそのイベント内容に興味がある
  • 2日間とも参加可能である

選考基準 

  • LINE DEVELOPER DAY 2019及び開催されるセッション等のコンテンツに具体的な興味があるか
  • LINE DEVELOPER DAY 2019で学んだ内容について,ブログ等のレポート記事を書いていただけるか

支援制度対象人数

  • 最大100人

支援内容

  • 交通費及び宿泊費(通学している学校の所在地により規定)
  1. 3000円対象地域:通学されている学校の所在地が東京都・埼玉県・千葉県・神奈川県の場合) 
  2. 15000円対象地域:通学されている学校の所在地が茨城県・栃木県・群馬県山梨県静岡県の場合
  3. 30000円対象地域:通学されている学校の所在地がAおよびBに記載されていない都道府県の場合

 

LINEの最新技術や取り組み,さらには今後の方針などを直接見聞きでき,さらに交通費宿泊費まで支援いただけるとあって,私はすぐに応募しました.

応募フォームは,生年月日や所属する大学等の個人情報の他に,興味関心のあるセッションや参加後にレポートしようと思っている内容について文字数指定無し(だったはず)で記述する設問がありました.

私が覚えている文章記述形式の設問は以下の3つ.

  • 興味・関心のある領域・テーマ
  • 興味のあるセッション・コンテンツ
  • 参加後にレポート(ブログ執筆等)しようと思っている内容

私は現在大学院でソフトウェア工学を専攻しており,プロジェクトマネジメントやデータサイエンス,さらには機械学習に関心を持っている旨を記述しました.

これらの他に,所有しているSNS (Facebook, Twitter等) のアカウント名を記述する設問もありました.

参加支援制度の応募には,この応募フォームを埋めて提出するだけと非常に簡単.

後日,選考結果のメールとともに,支援制度の今後の手続きに関するメールが届き,指示に従って手続きを進めるだけでした.

地方に住む私のような学生には非常にありがたい参加支援制度でした.

 

Day 1

会場到着から受付まで

開場はグランドニッコー東京 台場で,ゆりかもめ台場駅」直結のため,改札を出てグランドニッコー側の出口へ.グランドニッコー東京の入り口には早速「LINE DEVELOPER DAY 2019」ののぼり旗が.

f:id:kento12021:20191126171231j:plain

入り口を通ると,LINE DEVELOPER DAY 2019 のTシャツを着たスタッフの方が会場までの道順を案内してくれます.会場はグランドニッコー東京 台場のB1フロアで,エスカレーターで降りていくと目の前に LINE DEVELOPER DAY 2019 の文字を形作ったエントランスが.

f:id:kento12021:20191126171338j:plain



すぐ左手に受付がありました.今年のLINE DEVELOPER DAY では,顔認証受付が設けられており,顔認証受付を利用するためには,顔写真を事前登録する必要ですが,特に手間はかからず,すぐ登録できそうでした.(私は登録しませんでしたが...笑)

登録した顔写真はLINE DEVELOPER DAY 終了後はきちんと削除されるそうです.顔認証受付では,受付に設置してあるタブレット内の所定の位置に顔を合わせると,顔を認識して事前登録しておいた顔写真とのマッチング処理が行われるそうです.驚くべきはこの顔認証受付の認証にかかる時間の短さ.本当に数秒で認証を済ませてしまうから驚きです.(私は利用しておりませんが...笑)

顔認証受付利用の参加者はあっという間に受付手続きが終わっている一方私は通常の受付で手続きを行います.通常の手続きはLINEアプリのLINE DEVELOPER DAY 2019公式アプリにある「check in」を行ったのち,その後表示される画面をスタッフに見せるだけ.私は参加支援制度を利用しての参加者であるため,専用の受付フォームに登録情報を記入する必要がありました.

受付を終えると,オープニングセッション会場へと向かいます.

会場

会場図は写真の通りです.

f:id:kento12021:20191206134917j:plain

メインセッション会場はA~Fまでの6会場あります.それに加えて,ブースエリアや2つのHANDS ON会場,さらにポスターセッションエリアやショートトラックエリアで構成されています.さらには水配布エリアや電源エリアも用意されており非常に充実していました.水配布エリアでは,LINE DEVELOPER DAY 2019のために用意されたオリジナルのボトルドウォーターが配布されていました.

f:id:kento12021:20191126171257j:plain



もちろんネットワーク環境も整備されており,とても快適な環境です.

タイムスケジュール ( Day 1 )

1日目のスケジュールは以下の通りです.

f:id:kento12021:20191206134923j:plain

タイムスケジュール:Day 1



また,私が参加したセッションは次の通り.

  • Keynote
  • E-1「プライベートKubernetesクラスタにおけるgRPCサービス開発 / 宇井敬一朗」
  • B-1「LINEが開発した時系列データベース'Flash'の紹介 /  Xuanhuy Do」
  • A-2「LINT (LINE Improvement for Next Ten yeas) / 中村俊介
  • B-3「コミュニケーションアプリ『LINE』の機能改善を支えるデータサイエンス / 高口太郎」
  • F-5「LINEにおける深層学習を用いた音源分離技術の研究 / 戸上真人」
  • D-7「NEVER ClovaのOCR (光学的文字認識) / Hwalsuk Lee (NEVER)」

もともとデータサイエンスに関心があったため,私が印象に残ったセッションはB-3の「コミュニケーションアプリ『LINE』の機能改善を支えるデータサイエンス」でした.これはコミュニケーションアプリLINEのグループ作成方法を,LINEユーザの行動ログから改良してく過程を様々なデータと照らし合わせながら紹介するセッションでした.LINEの抱える全世界のユーザ分のログデータ,想像もできないですね.これを元にLINEのデータサイエンティストがユーザのインサイトを分析しており,まさにデータ・ドリブンなシステム改善を行なっていることがわかります.

 

セッションでされた発表スライドは最後にリンクを貼っているので興味があればみてみてください.

 

Day 2

タイムスケジュール ( Day 2 )

2日目のスケジュールは以下の通り.

f:id:kento12021:20191206134933j:plain

タイムスケジュール:Day 2

また,私が参加したセッションは次の通り.

  • Keynote
  • C-1「"LINE-like" Product Management of Smart Channel / 朝井大介」
  • A-1「Project Management & Agile 全社横断組織の戦略と事例 / 横道稔」
  • A-2「LINEのデザインシステム:一貫性を損なうことなくLINEのサービスの速度を上げる / Jungyoung Lee (LINE Plus)」
  • B-3「LINE Score:独自のスコアリングサービスをいかに構築したか / Sangwoo Kin (LINE Plus)」
  • C-5「LINE Payかんたん本人確認の仕組みとLINEの金融機関サービスとのシナジー効果 / Youngchul Jung (LINE Pay)」

ソフトウェア工学を専攻していることもあり,プロジェクト・プロダクトマネジメントに関連したセッションをメインに参加し,その他には個人的に興味のあるものや,今後のLINEの戦略を窺い知れそうなセッションに参加しました.いずれの発表についても聴衆を惹きつける内容や話し方で最後まで飽きることがなかったです.

 

その他にも

昼食

2日間とも無料でお弁当が配布されました.お弁当のバリュエーションも豊富で,ベジタリアンフード,ハラルフードを含めて5種類.私は両日ともにすき焼き弁当にしました.このお弁当,参加者に対して余りある量の準備があるとのことで,会場にはとてつもない量のお弁当が.ここで弁当の値段が気になったので調べてみると...

f:id:kento12021:20191126171327j:plain

f:id:kento12021:20191126171241p:plain

1日目のお弁当



f:id:kento12021:20191126171025j:plain

f:id:kento12021:20191126171249p:plain

2日目のお弁当

とても驚きですよね.ありがたくいただきました.

軽食

セッションの合間には軽食も支給され,エネルギー補充しながらセッションを聴くことができました.

f:id:kento12021:20191126171210j:plain

軽食

軽食にはスナック菓子の他に,福岡名物の「博多通りもん」,京都名物の「生八ツ橋」,そして東京名物の「東京バナナ」も振舞われていました.東京,京都,福岡にはLINEのオフィスがあるということでそれぞれの名物が提供されていたそうです.

参加者ノベルティ

LINE DEVELOPER DAY 2019 の参加者では以下のようなノベルティが配布されました.

f:id:kento12021:20191126171127j:plain

ノベルティ一覧

 ステッカーやパンフレット,参加者カードなどは受付時に貰えました.

また,会場内に設置されたガチャガチャを回して出たくじと引きかえで貰えるノベルティもあり,私は3等でした.そのくじと引き換えに貰えたものは,写真右下のオイルタイマー?と,上段左から2つ目のTシャツでした.こういったノベルティが貰えるのも非常に嬉しいですよね.

 

最後に

LINE DEVELOPER DAY 2019 に学生向け参加支援制度を利用して参加させていただき,LINEの最新技術や動向を直接聞けるとても貴重な経験をさせていただきました.普段私が大学で取り組んでいるアカデミックな研究とは違った,現代社会に即した研究開発にはとても刺激を受けました.それと同時にLINEの目指す人と人の距離をより近づける技術開発の行く末を楽しみに見守っていこうと思います.

 

発表スライド

engineering.linecorp.com

 

 

【R】Cook's Distance の中身について

今回の記事は R で Cook's Distance を計算した時に,一部 "NaN" を返され,プログラムがエラーを出力.原因究明をおこなった.

【Cook's Distance】

回帰分析時に,モデル式に悪影響を与えている値を特定する手法として,Cook's Distance がある.

 

Cook's Distance の詳細については以下 Wikipedia のページを参照.

Cook's distance - Wikipedia

 

Cook's Distance を一言でまとめるならば,

個々のデータが回帰式の推定に及ぼす影響を表した距離

である.

 

この距離を用いてデータセットに含まれる外れ値を除去する,Cook's Distance を用いた外れ値除去法が有名である.

この手法は,重回帰分析を行い,モデルの係数に大きな影響を与えるデータを外れ値とみなす.

具体的には,Cook's Distance は,あるデータをモデル推定の計算から除外した場合に,すべてのケースの残差がどの程度変化するかを示す距離であり,この距離が大きい値を示すデータを外れ値とみなし,データセットから除外する.

 

【Rにおける Cook's Distanceについて】

Rでは Cook's Distance を計算してくれる関数が用意されている.

www.rdocumentation.org

この関数に回帰分析結果のモデルを引数として渡すだけで計算してくれる.

しかし,今回以下に示すように15番の Cook's Distance 計算結果が NaN となってしまっている.この原因とは...

f:id:kento12021:20181126195340p:plain

 

【cooks.distance 関数の中身】

そもそも cooks.distance 関数はどういった処理をおこなっているのか調べてみることに.

sink() を用いてコンソール画面に出力される内容を txt ファイルに出力し, getS3method("cooks.distance", "lm") で中身を調べてみた.

処理内容が以下.

f:id:kento12021:20181126195923p:plain

 処理内容についてまず5行目

p <- model$rank

 これは回帰式のランクを変数pに代入している.この記事冒頭でも示したWikiには,ランクは予測因子の数という記述がある.恐らくこれには切片も含まれているのだろう

(じゃないと数が合わない) .

 

そしてその次の行

res <- ((res/(sd * (1 - hat)))^2 * hat) / p

ここで Cook's Distance を計算している模様.

 

恐らくその次の7行目が NaN を出力した原因.

res[is.infinite(res)] <- NaN

NaN を代入している.この一文はどのような処理をおこなっているのか.

まず,is.infinite() について,この関数は値が無限かどうかを調べる.

そしてこの代入は変数 res の中身が Inf となっているところ,真偽値でいう TRUE のものに NaN を代入するということである.

 

さて,NaN の発生元は判明した.

あとは原因究明.

 

【R】attempting model selection on an essentially perfect fit is nonsense

Rで線形回帰を行った時に出力された警告について

 

線形回帰時の条件

・関数 lm を用いてデータセットに線形重回帰分析を実施

・変数選択に stepwise を使用

・交差検証を実施 

 

出力内容

 *attempting model selection on an essentially perfect fit is nonsense*

 

モデルの変数選択において完全にパーフェクトなもの(モデル)における変数選択はナンセンスである,というようなニュアンスの警告文なのでしょうか.

 

この出力されたエラー文で検索してみると,

r.789695.n4.nabble.com

discuss.analyticsvidhya.com

 

Q&Aサイトでいくつか取り上げられているが,明確な回答はなし.

しかし,いくつか参考になったことは以下2点.

 

・Rの lm 関数では上記のような警告文は出力されない

・従属変数と独立変数の相関を調べてみるべし

 

このことからこの警告文は変数選択で使用している step 関数が出力していると推測.

さらにどうやらデータセットの独立変数の中に相関が強いものがある可能性があるため,相関を調べてみるとよいかもしれない.

 

まず,警告文の出力元を調べてみる.

線形重回帰モデルの構築時の変数選択を行わないようにプログラムを変更.

(stepwiseをおこなわない)

 

すると確かに先ほどの警告文は消えた.やはり出力元は step 関数だったよう.

 

次に従属変数と独立変数の相関を調査.

cor 関数を用いて独立変数を一つ一つ調べてみると,

ある独立変数で以下のような値をとるものを発見.

f:id:kento12021:20181019144030p:plain

従属変数 Effort と独立変数 RAWFP の相関が非常に強く,ほぼ1となっていることがわかる.p値の結果からも有意であることが読み取れます.

 

要するにこの結果から警告文についてまとめると,

データセットの中に従属変数と独立変数の相関が非常に大きいものがあり,線形回帰でモデルを構築する際に変数選択しても,モデル式がその相関の強い従属変数に強く依存してしまうため,変数選択しても意味ないよ

というような警告を step 関数が発している可能性が考えられる.

 

 

あくまで筆者自身の結果と考察なので間違っている部分が多く至らぬ部分も多いと思いますがご容赦ください.

Atom で LaTeX 環境構築

はじめに

 WindowsLaTeX 環境を整えようとしたときにググってみると様々な方法が見つかる.

そんな中,普段Atom を使用していることから,Atom を利用した LaTeX 環境を構築しようと考え,記事にしようと思う.

 

現在の環境

  •  Windows10
  •  Atom version1.28.1

 Atom をインストールに関して

my-log-pll97u88.hatenablog.com

 

 

手順

 

 Atom のパッケージインストール

Atomでの準備として最低限必要と思われるものを整理してみる.

必要なら

  • latexer : Atom内でのLaTeXの自動補完

とりあえずこれくらいあれば大丈夫そう.

さらにここからパッケージ latex の設定をいくつかカスタマイズしていく.

まず初めにコンパイルするエンジンを日本語にも対応させる必要があるため,デフォルトの設定から platex に変更する.また別の記事でコンパイルエンジンについてはまとめようと思う.

f:id:kento12021:20180830144135p:plain

 

次にここの下2つの項目は不要かなと思いチェックを外した.簡単にまとめてみると、

Move Result to Source Directory :

build により生成されたファイルをソースがあるディレクトリで管理する

 

Build on Save :

ファイルが保存される度に自動的にbuildする

 

Open Result after Successful Build :

build が成功すると結果を開く.恐らく生成されたPDFファイルのことかな?

 

Open Result in Background :

バックグラウンドで build 結果を開く.

f:id:kento12021:20180830144601p:plain

 

 

とりあえずここまで設定してみてふとこんな考えが頭をよぎる.

パッケージ latex があれば Atom 内でコンパイルしてくれるわけだからもうこれだけでいけるんじゃないか、、、?

ということでとりあえずこれでやってみると、、、

f:id:kento12021:20180830145915p:plain

エラー出力,しかも文字化けしてるから読めん

パッケージ latexがあればそれだけでAtom内でコンパイルしてくれるわけではないんですね、、、

まぁそりゃそうかと気を取り直してパッケージ latexの仕様を読んでみると以下のような記述を発見 

f:id:kento12021:20180830150220p:plain

 

やはりコンパイラは必要ですね.

Tex Live か MiKTeX が公式的にサポートされているコンパイラのよう.

しかしその中でも前者の Tex Live を推奨しているみたいなのでそちらをインストール.

 

 Tex Live のインストールには結構時間がかかりそうです.

 Tex Live のインストールは Tex Wiki から行いました.

TeX Live - TeX Wiki

 

インストールが終わりさっそく Atomコンパイルしてみるがまたもやエラー.

(エラー内容のスクリーンショットとり忘れ...)

 

もうすこし読んでみると, パッケージ latexLinux, Mac OS, Windows, それぞれの場合でコンパイラディストリビューションを検索する場所が決まっているみたい.

f:id:kento12021:20180905141908p:plain

 

しかし, 先ほどインストールした tex live は最新版で texlive2018 であるので, 

デフォルトのままではパスが通らない. 

そのため, 直接パスを指定してやる必要がある.

指定してやる場所はパッケージ Setting 画面の上部にある.

f:id:kento12021:20180905142240p:plain

これでいける

 

とおもいきや....

f:id:kento12021:20180905142506p:plain

こんなエラー文が出力.

 

いろいろ調べてみると, どうやらこのパッケージは latexmk を使用してコンパイル処理を行うようになっているが, この latexmk の最新版の version4.59 では上手く動作しないみたい...

パッケージ製作者の git にも同様の症状が issue にあげられていた.

github.com

 

こればかりはパッケージがアップデートされるのを待つしかないのだろうか.

 

しかし, Atom 内でコンパイルすることはできなかったが, 通常通りコマンドプロンプトコンパイルすることも, Atom 内で PDF 表示することもできるので普通に使用することはできる.

【Python】UserWarning: No parser was explicitly specified

オライリー・ジャパンPython による Web スクレイピング で web スクレイピングを学び始めた矢先, 第1章の 「最初の web スクレイパー」のサンプルコードをそのまま実行すると以下のような Warning が出力された.

 

f:id:kento12021:20180710150251p:plain

 

どうやら,

 

「パーサーが明示されていないため, 最も適している HTML パーサーを使用しました.

 

普段は問題ではありませんが, このコードを別のシステムや異なった仮想環境で実行すると, 別のパーサーが適用され, 異なった振る舞いをすることがあります.

 

この警告はファイルの18行目で発生しています.

 

この警告を取り除くにはコードを以下のように変更してください.

 

BeautifulSoup(Your_Markup)

これを

BeautifulSoup(Your_Markup, "parser") 」

 

要するにパーサーを明示的に指定してあげることでこの警告は消えますよ, ということ.

 

とりあえずパーサーを出力にある html.parser に指定してもう一度実行してみると,

 

f:id:kento12021:20180710155532p:plain

 

url ははてなブログを指定している.

 

警告も出ていないのでハッピー.

 

 

↓ 初めに紹介した参考書

Amazon CAPTCHA

 

 

stepwise Error

R の lm 関数に stepwise を適用した際のエラーの解決策について

 

エラー分は以下の通り↓

f:id:kento12021:20180709160759p:plain

 

AIC値がマイナス無限大の値をとっていると出力されているので AIC値を出力すると

f:id:kento12021:20180709160858p:plain

 

確かにマイナス無限大になっている.

 

この問題の原因は、、、

 

 

f:id:kento12021:20180709161001p:plain

 

今回は Effort 値を重回帰分析で予測しようといていたが, 肝心の Effort 値が 0 になっていた.

 

プログラム的には Effort と Lang3 の列を削除して smoothing.result を Effort と書き換える予定だったけど, その2項目を削除し忘れていただけ. これを削除して問題は解決.

 

おまけ...

AIC値を出力するコード

f:id:kento12021:20180709161253p:plain

これだけ、シンプルかつ簡単

Why would R return NA as a lm() coefficient?

予測モデル作成、predict関数すると以下のような警告が出力。

f:id:kento12021:20180604154925p:plain

 

どうやら lm 結果のモデルと、 predict で予測するデータのランクが一致していないようなことが記載されている。

とりあえず予測モデルの summary を出力してみると以下のように係数の中に NA を発見。

 f:id:kento12021:20180604154909p:plain

 

上記の警告を解消するための参考になりそうなサイト↓

stats.stackexchange.com

 

stackoverflow.com

 

上記のサイトから推測するに、summary で NA と出力されている Deleted の係数が従属変数のよう。ほかのいくつかの変数によって計算できる値のようで具体的には、

Q1,Q2,Q3 を用いて重回帰分析を実施したが、その結果、どうやら

f:id:kento12021:20180605134758p:plain

のような任意のa, b, c によって Q3 が表されるような変数であったようだ。そのため、これを変数とみなさず、係数も NA と出力され、警告がでていたと思われる。

今回では Deleted の変数が不適であったようだ。そのため、解決策としては NA となった係数を持つ変数を重回帰分析から取り除く必要がある。

実際に Deleted の項目を取り除くと警告が出力されることなく予測ができた。

 

1枚目の警告は今回のような場合の他に、予測モデルの変数と、これから予測を行うものの変数が一致していないと警告が出力されるようだ。

 

なるほど。