2017-09-11〜09-18 やったことと振り返り

昨日の月曜日含めて8日分、休みだし更新でいいかぁと。

ソシャゲ

また時間が溶けた。今回は単純に解けたのではないので、以下理由。

  • 敵が強い
  • 欲しいものがDropするステージを選べないタイプ
  • 欲しいものを集めきった人が開始早々抜ける

仕事分析

  • フルタイムで関われてないのでつらい
  • 分析計画はちょっとできた
    • 深く分析する際の対象期間やセグメントを限定するのが苦手
    • したとしても、目的をもたない限定にしてしまう
      • それは何のためにするのですか、という質問で気づく or 集計後に比較できるもの(仮説含めて)ないため
  • 相手に価値がある分析というのを意識できていない
    • 資料としてのoutputを意識できていないからか、集計だけでなく分析までしているときでも集計っぽくなる
    • 傾向を見るべきなのに、集計で留まっているときがあった…

ABC

074

  • Aは問題なし
  • Bは問題文長かったのでちょっと時間使ったけど、内容は問題なし
  • Cを難しく考えすぎた
  • Dは途中まで問題ないが、最後までできず

Cは砂糖が水に溶け切る範囲での濃度を最大にする回答をする問題。計算量を考えて全探索にするべきだった。 ACしたあとに別の解法を試したとき、0%砂糖水は許容されていることから思い込みで水の最低限使う量を無視して水0gにしてハマってた。制約はきちんと見よう。

Dは地図の経路が実際最短経路になっているか問題。この前覚えたワーシャルフロイド法が役に立った。 距離が他の経路と同じである不要な経由経路を削ぎ落とすために、判定用の2次元配列を作らず何度も不要判定していたので間違っていた。対称行列なのは分かっていたのでもったいない。printでなくprint error, それでもなくdebugger使うように意識+使うまでの時間を短くしたい。

golang

D問題の時、CPython3でTLEしていたのでこの際だしと手を出した。実際はPyPy3で問題なさそうだった。JITコンパイルすごい。 golangをひっさしぶりにやった感想としては、

  • 型推論のおかげで意識的に型付けしなくて良いのは良い、という前にも感じたこと
  • pythonでのloop+四則演算benchmarkより2桁多い数を処理できてすごいと感じた
  • 便利と言われているけど、pythonほどbatteries includedではないと初めて実感(pythonが豊富すぎる)
  • 命名においてsnake_caseは標準ではないらしく、python脳になっていると実感(vscode便利)
  • indentでなくCurly bracesによる書き方が面倒くさく、Python脳にry
  • 正直、競プロとしての第一言語にはならないなぁと思った

structもinterfaceも使っていないしtree系でようやく使うぐらいかなと。goroutineというか並列・並行処理を競プロにおいて使えるかわからないので、本来のgolangとして身につく日は来なさそう。

DP

下記を見た+TwitterPython実装というのが流れてきたので自分でもやってみることにした。

qiita.com

gitへcommitしてなくていつやったか忘れている。とりあえずはナップサック問題までやったのであと10個。

アルゴリズムとデータ構造

久しぶりにアルゴリズムを学ぼうとyukicoder wikiを見ていた。

アルゴリズムを学ぼう

アルゴリズムを学ぼう

実践ばかりしていたのが、ワーシャルフロイド法を覚えてからABCのDを解くために知識を付けている延長なのかもしれない。 前者は久しぶりに見ても表紙のゆるさと違う勉強になる本。後者はBrowserのTabに常に残してある。 見たことをpythonの関数やClassの雛形として定義したので、いつか埋めよう。

まとめ

  • 競プロは順調に習慣づいているのと成長を実感
  • 分析慣れたい。メンタルに来る…
    • Kaggleとは違うだろうけど、データ探索としては役に立つよね
    • 画像や自然言語処理とか置いておいて、Marketing系のを探そう

2017-09-11〜09-18 やったことと振り返り

昨日の月曜日含めて8日分、休みだし更新でいいかぁと。

ソシャゲ

また時間が溶けた。今回は単純に解けたのではないので、以下理由。

  • 敵が強い
  • 欲しいものがDropするステージを選べないタイプ
  • 欲しいものを集めきった人が開始早々抜ける

仕事分析

  • フルタイムで関われてないのでつらい
  • 分析計画はちょっとできた
    • 深く分析する際の対象期間やセグメントを限定するのが苦手
    • したとしても、目的をもたない限定にしてしまう
      • それは何のためにするのですか、という質問で気づく or 集計後に比較できるもの(仮説含めて)ないため
  • 相手に価値がある分析というのを意識できていない
    • 資料としてのoutputを意識できていないからか、集計だけでなく分析までしているときでも集計っぽくなる
    • 傾向を見るべきなのに、集計で留まっているときがあった…

ABC

074

  • Aは問題なし
  • Bは問題文長かったのでちょっと時間使ったけど、内容は問題なし
  • Cを難しく考えすぎた
  • Dは途中まで問題ないが、最後までできず

Cは砂糖が水に溶け切る範囲での濃度を最大にする回答をする問題。計算量を考えて全探索にするべきだった。 ACしたあとに別の解法を試したとき、0%砂糖水は許容されていることから思い込みで水の最低限使う量を無視して水0gにしてハマってた。制約はきちんと見よう。

Dは地図の経路が実際最短経路になっているか問題。この前覚えたワーシャルフロイド法が役に立った。 距離が他の経路と同じである不要な経由経路を削ぎ落とすために、判定用の2次元配列を作らず何度も不要判定していたので間違っていた。対称行列なのは分かっていたのでもったいない。printでなくprint error, それでもなくdebugger使うように意識+使うまでの時間を短くしたい。

golang

D問題の時、CPython3でTLEしていたのでこの際だしと手を出した。実際はPyPy3で問題なさそうだった。JITコンパイルすごい。 golangをひっさしぶりにやった感想としては、

  • 型推論のおかげで意識的に型付けしなくて良いのは良い、という前にも感じたこと
  • pythonでのloop+四則演算benchmarkより2桁多い数を処理できてすごいと感じた
  • 便利と言われているけど、pythonほどbatteries includedではないと初めて実感(pythonが豊富すぎる)
  • 命名においてsnake_caseは標準ではないらしく、python脳になっていると実感(vscode便利)
  • indentでなくCurly bracesによる書き方が面倒くさく、Python脳にry
  • 正直、競プロとしての第一言語にはならないなぁと思った

structもinterfaceも使っていないしtree系でようやく使うぐらいかなと。goroutineというか並列・並行処理を競プロにおいて使えるかわからないので、本来のgolangとして身につく日は来なさそう。

DP

下記を見た+TwitterPython実装というのが流れてきたので自分でもやってみることに

アルゴリズムを学ぼう

アルゴリズムを学ぼう

した。

qiita.com

gitへcommitしてなくていつやったか忘れている。とりあえずはナップサック問題までやったのであと10個。

アルゴリズムとデータ構造

久しぶりにアルゴリズムを学ぼうとyukicoder wikiを見ていた。

アルゴリズムを学ぼう

アルゴリズムを学ぼう

実践ばかりしていたのが、ワーシャルフロイド法を覚えてからABCのDを解くために知識を付けている延長なのかもしれない。 前者は久しぶりに見ても表紙のゆるさと違う勉強になる本。後者はBrowserのTabに常に残してある。 見たことをpythonの関数やClassの雛形として定義したので、いつか埋めよう。

まとめ

  • 競プロは順調に習慣づいているのと成長を実感
  • 分析慣れたい。メンタルに来る…
    • Kaggleとは違うだろうけど、データ探索としては役に立つよね
    • 画像や自然言語処理とか置いておいて、Marketing系のを探そう

2017-09-04〜09-10 やったことと振り返り

決定木による予測でない分析

要因?と言っていいかわからないけど、やった。

  • 目的となる行動とそれ用の説明変数
    • 目的を実行するまでの行動のみであり、それ以降の行動は変数には含めない
    • 期間を設定しないと際限なく行動をとれるので、事前に基礎分析をしておく
    • 上記の例
      • その行動をした会員のうち50%は、入会からN日である。などの傾向
      • サービス提供としてここまでには行動してほしいなど
  • すべての変数について深さ2と3までのノードを見る
  • 一番目の分岐に使われた変数を除外して、同様に傾向をみる

失敗したことは、

  • 多分岐でやったので数量データの分岐が多くて解釈しにくかった
  • 上記においてセグメント別にする時どうすればいいか分からない(むしろ分からないからかけてる
  • つまり、深さ数のパラメータだけでなく分岐数のパラメータも意識するべき

各ノードにおいて、傾向(目的変数の割合の偏り)があるかを確認する。上の分岐と比較したときの差分で見ればよい。 傾向があり数が多い場合はデータマートから分岐条件を元に絞り込んでから詳細を見る。データマートにない変数があれば追加する。

まともに分析っぽいことをして感じたことは、以下のとおり。これからも意識してがんばる。

  • 目的と分析の設計、特に期間設定
  • 説明変数の設計、とりあえず入れてからこれ意味なかったと気づくことが多かった(似ている変数)
  • モデルに当てはめた後の解釈
  • モデルに当てはめること自体の意味の無さ

yukicoder

ABCのDで躓くことが多いので、guideに載っている基本的なことを全部やろうと思った。とりあえず以下の2つを解いてた。

どちらも★1つなので問題なし。問題が1つなのでそれに集中でき、AtCoderの補完として利用し続けたい。

AtCoder ABC

073

Cまで問題なく、Dできず。ARCに出るような人たちの早さ…。 最低限経由しないといけない町の順列列挙するというのは思いついたが、その場合その経由距離の合計しかしていなかった。

最低限以外の町を含めたコストを計算にはワーシャルフロイド法というアルゴリズムを使って解けると解説にあった。PDFのコードをみると2次元配列のDPだった。 DP慣れ全然していない問題が浮き彫りになった反面、なるほどなーとすぐ分かる程度にはなってた。

072

Cまで問題なく、DでTLE。最低限N2での解法を思いついた。ちゃんと考えれば分かる問題だったなと思った。

kaggleとAtCoder

時間が短いAtCoderは習慣づいているが、kaggleなどは全然習慣づいていない。 長期的なものがダメっぽいのは本読みだったり、すぐに実感できないものに多いので忍耐力・集中力なのかな。 と思ったが、手を付ければ集中するのはyukicoderの練習でも実感済みなので、まずは始めるのがよさそう。

まとめ

  • 競プロの習慣化順調
  • 長期的なものも手を付ける
  • 仕事分析、つらいけどためになる

2017-08-28〜09-03 やったことと振り返り

ソシャゲ案件は(時間が溶けるから)もうやりたくない。  

ソシャゲ

イベント参加して3日で終わらせた。残りは他のことに当てるつもりだった。ここまではよかったのだが、週末に装備強化に意識が向いてしまい時間が溶けた。

データ解析プロセス

まともに分析開始となったので改めて読み直し中。全然意識できてないことを確認できた。

仕事で分析

手伝ってもらってる人とのレベルがとても離れているので、その人を目標にその水準まで分析力を上げる。 具体的には、課題のヒアリングと分析計画を明確にする。そこからは探索的か仮説検証になるので地道に行う。深掘りするときのセグメントや期間などを意識する。  

確率的プログラミング

実際には触ってないが、PYMCとEdwardのチュートリアルを眺めてた。PYMCの訳書に書いてあったリポジトリのnotebookを試したらpackageがなかった+ネットワーク制限があるので、仕方なくconda install .bz2デビュー。

踏み込めない理由として、まだベイズのすごさを実感できてないのと感覚でも分かってない。

PYMCで使ってるtheanoで消耗しそうなので、Edwardでtensorflow使いたい。ただし伝統的ベイズ成分が少なめらしい。stanはrstanから使う方がよさそう。宣言的と計算グラフはどっちがいいのだろうか。

 

まとめ

  • 地道に分析がんばろう。新しいことに挑戦もしたいけどね。
  • 合間を見つけてkaggle、競プロ、数学、英語をやる。習慣づけたい。

 

2017-08-21〜08-27 やったことと振り返り

たいしてなにもしてない(´・ω:;.:…

Rによるやさしい統計学

読み終わった。途中からだるかった。 最後の章の検出力関連が他の本で読んだことのない内容だったが、実際どれくらい使われてるのか不明。この本が検定関連に注力していて、回帰分析にはあんまり力を入れていないため、そちらの方面における検出力ってどうなの?(線形回帰における変数の検定)という疑問が残った。

情報検索アルゴリズム

情報検索アルゴリズム

情報検索アルゴリズム

次に読んでいる移動中の本。テキスト情報に関する本で、tf-idfとかが出てくる3章まで読んだ。説明が丁寧なので読みやすい。実際に活かせるかというと、実務とのジャンルが違うので他の本を探したい。

ソシャゲ

相変わらず時間が溶ける。鬼畜イベントの見定めをきちんとすること。

  • 単位時間あたりのポイント
  • 報酬の取得と限界までレベルをあげるかの判断
  • 一気にやるくせをつけて、細切れに時間を使わない

書いているとTwitterで浪費しているのとあまり変わらないと思った。

kaggler-ja slack

開設というよりpublicになった感じ。人がめっちゃいる+owner達の気軽さがいい感じ。 再びやろうかなと思い始めた。

英語

上記のために結局必要になるのが英語。学ぶための時間をかけたくないと潜在意識が働いていそうなのでどうするべきかが問題である。

データチェック

privateではなく仕事。初めて見るデータに対して業種とサービス内容だけを知った状態で基本的な分析をするために足りているか+どんな分析ができるかをチェック。これはとても楽しかったので、サービス内容を知っているとデータに対する理解が早まるのは英語が苦手でデータに対する理解が深まらないのと反対だなと思った。

dotfilesの整理

設定ファイルのrepositoryがghqのフォルダになかったので移動。

  • 移動後にsymbolic linkの整理と不要なファイルの整理
  • gcloudをmacにインストールして、その設定を追加

まとめ

データ分析関連の行動がまったくない。

  • 移動中の本を見つける
  • kaggleしようを実践する
  • ソシャゲ対策をする

2017-08-14〜08-20 やったことと振り返り

kaggle instacartのkernel読み

日本人の方のkernelをちょっと読んだ。kaggleちゃんとやらんといかん。英語含めて BigQueryで解というよりデータ集計をするのが面白かった。たいていpandas/dplyrなので。

BigQueryとbqコマンド理解

仕事でまた使った。

  • デフォルトaccount/project/dataset用の設定ファイル
  • lsでの概要確認とshowでのschema確認
  • GCSが使えないのでExportがめんどう(WebConsoleから実行してクエリ実行後にダウンロード)
    • bq export -> gcs -> bq copy ?
  • partitionの理解とカスタムquotaとの関係

TweepyによるRT削除

  • timeline/search系のAPIで遡れないことを学んだ
  • Twilogから公式RTだけをスクレイピングして対処
  • 公式の全ツイート履歴ダウンロードを完全に忘れていた

上記以外に、

  • RT/fav削除完了
  • access_token系を認証URLから取得した
  • notebookにまとめた

Rによるやさしい統計学

  • 実装メインではなく、読み進めをした(13章まで)
  • 実装は会社の休み時間にideoneでやった。省略URL便利
  • 文字化け対策をググった

ソシャゲ

本格的に新しくやることがないので、地道にLvあげ。 時間が溶ける。

AtCoder ABC 068, 069

参加していなかったので解いた。ただしどちらもCまで

AtCoder ABC 071

久しぶりにDまで解けた。考察すれば解ける問題だったので、知識が必要なかったため。 以下、つまずいた部分。

  • Cの長方形面積で、正方形のパターンを忘れていた
  • 思いついて提出したときにAに提出していてREになった

まとめ

箇条書きが多いので時間を取ろう。

2017-08-07〜08-13 やったことと振り返り

最近機械学習についてなにもしていない。やばい。

Twitterでの拡散およびツイートと勉強している内容

振り返ってみるまでもないのだけど、上記の乖離が激しい。Twitterでは(はてブTwitter連携含め)興味のある技術的なことを分野問わず垂れ流しているが、実際勉強しているかというとそんなことはない。 なにを勉強しているかというと、Rによる統計学(基礎)と競技プログラミング(基礎)なので技術的ではあるが直近必要かと言われるとそうでもない。それが無駄とは言わないが、1つくらいは少ない時間のやりくりを気にして効果的なものをやらなくては。

確率的プログラミング

上記のslideを見た。DNN系については詳しくないのと説明力がないので深く踏み込まないようにしているんだけど、説明力のあるベイズが気になる。stanとかグラフィカルモデルは昔から気になっていたので、その興味を持ってライブラリにはEdwardを使い踏み込んでtfにも慣れたい。

Rによるやさしい統計学

電車で読んではいるが、実装しないとしっくりこない状態。そういうときは他のを読んだほうがいいと思うので、なにか用意したい。

PyMC本

確率的プログラミングであげたグラフィカルモデル、これをUdemyで分かりやすく解説してくれている作者が訳者。この人ならと無条件で信じているので、これを買おうか悩む。統計モデリングのアヒル本と悩むが、画像やNLPに活かせるこちらも捨てがたいので。

ソシャゲ

相変わらず。イベントがあったので目的のカードを集めて進化させて終了。ただ、余っても金策に使えるというのを知ってしまい、時間が溶けている。

tweepy

RTとfavの整理をしようと思ったのがきっかけ。触ったと思ったら触ってなかった。 前に触ったのはpython-twitterというpackageで、packageとしてはtweepyとこれがよく出てくる。 tweepyをnotebookからちょっとずつ触って、下記に慣れた。

  • authしてからのapiオブジェクト
  • apiから認証アカウントのuserオブジェクト
  • apiからtimeline取得
  • timelineはstatusのリスト
  • un(RT|fav)できた

とりあえずは目標達成したが、すべてのツイートについてではないので引き続き行う。 慣れたら、グラフ理論自然言語処理の勉強題材になるのでgithubにcommitしよう。

AtCoder ABC 070

68, 69とやっていないので3つぶり。

  • A、問題なし
  • B、テストケースを全て考慮してクリア
    • テストケースをあげる際に数直線を書き、境界に気をつけることができてよかった
    • よく境界を見てみると、ifの連なりではなく式だけで解けた
  • C、最小公倍数を使うのはすぐに分かったが肝心の実装に手間取った
    • lcmという単語を忘れていた
    • gcdを実装し、再利用してlcmを実装
    • gcdを使う必要のないケースでprint忘れてWA

yukicoder

もう1つ競技プログラミングやろうと思い閲覧。 wikiが充実していたので、必要なpython標準ライブラリをまとめたutil.pyを作っていた。 作った後は、登録してチュートリアルを解いた。

まとめ

  • RT/fav整理を終わらせて、githubにあげる
  • 競技プログラミングは習慣化しているので引き続きやる
    • コンテストとしてやる
    • yukicoderのレベル別問題のように勉強としてやる
  • Rによるやさしい統計学を実装して理解する
    • 上記以外の読み物としての本を探す
    • 集合知プログラミングはちょっと置いておく