夏学期ゼミ#8(月田) 議事録 ■Rの使い方 小島:Rのファイルはドライブにあがっている? >後であげておく. 小島:filrEncordingを何にしても文字化けしてしまう.何にしている? >Shift-JIS.あとでUTF-8のもあげておく. ■行動モデル 浦田;μは何? >ガンベル分布のばらつきを表すスケールパラメータ. 浦田:大小関係は? >調べておく 浦田:スケールパラメータの表記は,論文でもμの場合と1/μの場合とあって安定していないので注意. 小島:ガンベル分布を使うのは,正規分布に欠点があるから? >選択確率を計算するときに誤差項を積分しなければならないが,誤差項が正規分布だとOpened Formで計算負荷が高く昔はできなかったので,ガンベル分布を使っていた.近年はPC上での計算が出来るようになって,正規分布を使ったプロビットモデルも研究されるようになってきた. 近藤:スケールパラメータの意味が分からない.=1にするならなくてもいいのでは? >調べておく 浦田:パラメータ推定するときは=1に固定しないとできない. NLのときはどちらかを1に固定したりする.そのとき小さい方は0~1. ■TEXstudioの使い方 小島:表示されない…数字と英語しか見えない >スライドに書いておいたが 増橋:その通りにやったが出来なくて諦めた >今日は取り敢えずそのままで.日本語が表示できなくても,本のマークをクリックするとみられると思うので. 増橋:B4の他の人はできた? 近藤:エラーが何が出たか忘れたが,できなかった 望月:他の資料も少し見たが,基本はスライドの方法でできた >あとで確認して周知する 望月:MNLとかGRVは,出力は各選択確率が出るが,これは使った説明変数が2つだったら「この項目が何%,この項目が何%」というように平面上にグラデーションができる? >推定されたパラメータの値そのものには意味はなくて,正負やそれらの大小を見て,どの変数が重要か等を判断する. 望月:式が線形なので,グラデーションやグラフで表現できるのか?ということ. 浦田:機械学習に比べてあまりに単純だから,本当に線形で良いのか?という質問? 望月:複雑にしたところで正解率がそこまで上がるわけでもないので,意味があるのか分からないし良いと思う.以前都市交とかの授業で使ったモデルでも正解率80%まではいかなかった 今日のモデルは,どの変数が選択にクリティカルに効いているかといったことが見られる. 村橋:NMLは今回復習できてよかった.TEXはあとで試してみたい. 近藤:Rの説明が分かりやすかった. 増橋:GEVモデルの整理ができていない.4条件を満たすものがGEVというのは分かるが,MNLがGEVの中に入っていない説明をしている論文もあって,関係性が良く分からない. >先に発明されたのはMNLだが,GEVのパラメータが特別な場合がMNLで,GEVのくくり中の具体的な形と理解している. 増橋:MNLが後から発明されたGEVの傘下に入ったということか. 増田:選択肢相関があるときに使う? >そう. 相関がありそうな選択肢はどうやって決める? >ちゃんとやるなら最初からNLでやってみて,スケールパラメータの値を見てこれは独立として扱っていいな,と判断するべきだと思う. 小林さん:それでいいと思う 浦田:選択肢の相関は場合による.同じリンクを使う場合,施設,エリア,等.誤差項に効く要素が幅広いので,何が誤差項に強く効いているのかを考えながら適用する. ■チャット 00:29:43 EIJI HATO: Rで速くしたいならとにかくというか引数がスカラーになるようにベクトル化すると速くなります. 00:30:32 EIJI HATO: 成分をいちいち取り出して,繰り返しループさせると遅くなるに注意してください. 00:34:48 EIJI HATO: あとはRからCを呼び出して高速化することもできます.推定でもRLや構造推定は時間がかかるので,最初はfor文連発でも直感的でコードが書きやすいので書いてみて,一回作ってからベクトル化の工夫をするなどしていくのが,初学者にはいいかも. 00:37:14 Taiki Suzuki: RStudioで実行はRunボタンでもできますが,実行したい行にカーソルが合った状態でCommand + Returnでもできます.また,全ての行を実行したい場合はCommand + Aで全選択してからCommand + Returnでできます. 00:44:01 Taiki Suzuki: Pythonでrange(1, 10)としたのと同じようなことがRでは1:10でできます.ただし,Pythonのrange(1, 10)は1から9までであったのに対し,Rの1:10は1から10までです. 00:44:26 EIJI HATO: これが,かなりわかりやすいです.https://www.cc.u-tokyo.ac.jp/events/lectures/X01/shiryou-1.pdf 00:45:46 EIJI HATO: プログラムは1.入力(データ構造)2.データ処理(アルゴリズム),3可視化(エラー確認など)でできているので,ここの可視化はとても大切です. 00:45:49 Risa KOBAYASHI: r-graph-gallery のグラフはggplot2 というパッケージを使っています.BaseR の方がggplot2 よりも早いですが, ggplot2は全体的なデザインを軸の文字サイズとか位置調整とかをR上で直感的に書けるのが非常に便利で,私はこちらを好んで使っています. 00:47:24 望月 陽介: Ggplot、挑戦したけど引数が多くて断念したことあります。まとまっている良いサイトなどあったら教えて欲しいです! 00:47:31 Risa KOBAYASHI: ggplot2 はレイヤーっぽい書き方という点では説明していただいているBase Rに似ていると思います. 00:49:05 Taiki Suzuki: ggplot2のリファレンス微妙だよね,,僕も良いのがあったら知りたいです! 00:52:29 Risa KOBAYASHI: (レファレンス見て描いてた人の顔)https://ggplot2.tidyverse.org/reference/index.html これが一応リファレンスです 00:53:18 Taiki Suzuki: おーーーありがとうございます! 00:57:39 望月 陽介: めちゃ網羅してますね!ありがたいです 00:58:07 浦田淳司: データ読み込みで,NAになっていて,計算できないとか,よくあるので注意してください.Rは型は自動で読み込むので,数字列のつもりが,文字列として読み込んでいて(一部のセルに文字があったため等),計算できないというパターンもよくあります.アンケート集計の時などはよく注意してください.p ythonは型を指定して,読み込むので,こうした問題は生じません. 00:58:29 EIJI HATO: データの定義はすごく大切で,自動走行分野では,今月田くんが説明しているような抽象度の高いデータ格納法を行動モデルで使っていますが,自動走行や交通分野に特有のデータ格納の標準化の議論も進んでいます.https://self-driving.lyft.com/level5/data/ 01:00:13 浦田淳司: 本当に数字かどうか,Data[1,]*1とかして確かめたりします. 01:03:28 浦田淳司: 日本語は,基本的にやめましょう.アルファベットを使ってください. 01:06:06 Risa KOBAYASHI: p.17 でやったデータの抽出ですがdplyr を使って書くこともできます. Data[Data$PurposeJP==“帰宅”&Data$TripDurationSec>=5000,MainModeJP,drop=F]は Data %>% dplyr::filter(PurposeJP==“帰宅”, TripDurationSec>=5000) %>% dplyr::select(MainModeJP) になります(多分). 01:06:26 Aiko Kondo: 応プロでサーバーで回した時,コメントアウトに日本語入ってるだけでも面倒なことになったりしたので,サーバーで回す時は日本語は全く使わないのが楽でした 01:15:34 EIJI HATO: 離散選択モデルは,Moshe Ben-AkivaのDiscrete Choice Analysis: Theory and Application to Travel Demand がよく知られていますが,Trainの方が計算手続き主体で整理されているので,勉強しやすいと思います.https://eml.berkeley.edu/~train/distant.htmlVe 01:16:47 EIJI HATO: 他にも日本語で書かれたやさしい非集計とかもありますが,日本語ならBinの過去のゼミ資料が一番わかりやすいとは思います. 01:17:16 Aiko Kondo: モデルの検索すると大体Binの過去資料 01:17:21 Aiko Kondo: が一番に出てきますよね 01:18:46 EIJI HATO: みんな頑張ってるからなー 01:19:10 EIJI HATO: 相関めちゃ重要です.みなさん. 01:21:11 EIJI HATO: 共分散行列で誤差項の相関を記述できることに注意してください. 01:21:53 浦田淳司: p.6でMNLモデルの説明として,さらっと,誤差項にIIDガンベル分布と書いていますが,誤差項が互いに独立(無相関)であるとMNLモデルでは仮定しているということです.この仮定に反している場合に,MNLを適用するとおかしくなる(赤バス青バス)ということです. 01:36:31 Aiko Kondo: スケールパラメータがいまいちわかっていないんですけど,「=1にすることが多い」と読みました.スケールパラメータはNLの様に何種類かあった時に大小関係が大事,ってことなんですか? 01:38:17 EIJI HATO: 誰か答えられるのでは.. 01:38:24 EIJI HATO: ぷぷ 01:38:24 望月 陽介: 分散が同じ、みたいなことですか? 01:38:40 望月 陽介: 各誤差こうの分布の 01:38:47 EIJI HATO: 天才か! 01:38:58 EIJI HATO: 同じと仮定したのがMNL 01:39:28 EIJI HATO: ネスト構造書いたとしてもスケールパラメータ1なら,MNLと同値. 01:40:18 EIJI HATO: スケールパラメータは1以下になるような上下関係になってないといけないので,推定するときネスト構造の設定に気を付けてね. 01:40:55 望月 陽介: UiからViを引いて、それを答えのラベルと比べて分布の累積密度で何%か、みたいな正解率を最大化したいっていう認識です。 01:41:19 望月 陽介: 日本語と理解が下手でした。無視してください。 01:41:32 EIJI HATO: いや振り込んでいくのはいいぞ. 01:41:43 浦田淳司: なんとなく言いたいことはわかる. 01:41:53 EIJI HATO: 天才か. 01:42:45 EIJI HATO: 災害が起こってあるリンクが切断されたとき,経路が重複してるリンクがきれる場合と,そうでない場合で選択確率の影響の出方が違う=独立でない=ネットワーク構造そのものがネスト構造=相関構造を顕しているみたいな話も意識しておくといいのでは.. 01:43:02 浦田淳司: p.5の積分の式が基本で,誤差項に分布を仮定しているので,累積分布の話になります. 01:43:15 浦田淳司: デバッグの方法,大事です. 01:43:45 EIJI HATO: printを取り敢えずいれとく,のは正義. 01:47:05 EIJI HATO: ひどい.. 01:47:20 浦田淳司: Rは対話型なので一行ごとに回して計算して確認できますが,C/C++だと一行ごとに回せないので,print機能を使って確認することができます.デバッグの方法はそれぞれOJTで蓄積していってください. 計算時間がかかりすぎる時は,Sys.time()をいれて,パーツごとにかかっている時間を図って,長い時間かかっている部分を特定して,そこを高速化するということもやります. 01:55:59 浦田淳司: 卒修論は,Texなので,よろしくです.Texだと,gitやコメントアウトでversion管理できたりします.持ち上がりM1のみなさん,参考になるサイト/ソフト情報を,ぜひ共有ください. 02:03:54 増橋 佳菜: 私もその状態にあります。 02:06:25 浦田淳司: 個別のエラーは,少なくともエラーメッセージを共有しないと,解決できないので,, 02:08:51 EIJI HATO: 日本語でないの,今日中に解決した方がいいのでは 02:09:07 EIJI HATO: これとか?http://hichon.cocolog-nifty.com/blog/2011/10/tex-tex1windows.html 02:13:51 浦田淳司: 図はpdfやepsで貼ると,きれいです. 02:15:05 EIJI HATO: Overleafは(小林さん?)説明しないの. 02:15:47 Risa KOBAYASHI: まだ使いこなせてないんで時間があれば...... 02:15:58 EIJI HATO: たしかに 02:16:39 望月 陽介: 僕はできてます 02:16:49 takuma murahashi: 僕もできてないです 02:17:41 Satoki Masuda: 僕はtexstudioじゃない別の方法を使っているので,すみません 02:17:55 Risa KOBAYASHI: (念のため)Overleaf とはLatex のオンラインエディタです.ローカルのTexStudio との違いは,共同編集の時環境揃えるのしんどいのを解決してくれる点にあります 02:18:39 浦田淳司: IDEを無理に使わなくても,やりやすい方法でOKです. 02:19:45 EIJI HATO: B4は質問した方がいいと思うよ. 02:20:32 Risa KOBAYASHI: 今問題になっている日本語の問題も(恐らくですが)解決できるはずです>Overleaf これで卒論/修論を書いたことがなく使えるか未知数なので(投稿論文はこれが使いやすいと思いますが)一応参考まで 詳しく知りたい方は小林まで 02:23:39 EIJI HATO: あたることに意味があるかだよね. 02:23:41 Taiki Suzuki: 僕は現象として理解するという意味では機械学習ではなくて行動モデルの方が重要,という理解をしています. 02:24:13 EIJI HATO: 顔出したら,, 02:24:31 EIJI HATO: 鈴木の理解でいいのでは. 02:26:54 Taiki Suzuki: MNL,NL等を一般化したのがGEVだと理解しています. 02:27:55 EIJI HATO: 機械学習でとにかくあたる.では研究にはならないみたいな話はあって,ダミー変数増やしていけば,とにかくあてることはできるけど,定数項いくら増やしても,なんであたってるかがわかんない状況で.公共政策としてその対策をとれるかみたいな話もあるかも. 02:28:05 EIJI HATO: 災害が起こってあるリンクが切断されたとき,経路が重複してるリンクがきれる場合と,そうでない場合で選択確率の影響の出方が独立とはならないみたいな話もあるよね. 02:29:13 Taiki Suzuki: ネスト構造を色々変えて尤度を比較するとかでもするんですか?? 02:29:22 EIJI HATO: する. 02:29:42 EIJI HATO: 機械学習的だよね. 02:30:12 EIJI HATO: ブートストラップ的に,ネスト構造を試すのは,普通はそうする. 02:33:00 EIJI HATO: 尤度で評価するよりは誤差分散の比が1以下になるようにして,下に同質性の高い選択をおきます.