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によるやさしい統計学を実装して理解する
    • 上記以外の読み物としての本を探す
    • 集合知プログラミングはちょっと置いておく

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

1週間さぼってしまった。あんまり覚えてない。Githubの草がなさすぎるのもあって、Twitterから検索して思い出す。

twitter.com

旅行

ほぼ始発の新幹線で西の方へ、帰りはほぼ終電の1泊2日。さぼってしまった理由はほぼこれ。 GWやお盆引きこもりの自分が久しぶりにした旅行。会いたい人にも会えて有意義な2日間だった。

Excel / VBA

仕事でExcelにテーブル調査結果をシート別にまとめるお仕事。元の定義ファイルがPDFのテーブルなのでぬっころしたくなった。 そこは仕方なく手動なのだが、自動化できる部分は自動化。 知らない業種のテーブル調査とそこから何を分析できるか、なにが足りないかを覚えるのは楽しい。

ソシャゲ

引き続き。本当に時間が溶ける。 ある一定水準までキャラレベルや特性を上げないと人権がないので仕方なくあげた。旅行中にもイベント期間があるのでやった…。 人権を得ることはできたのだが、課金アイテムもってないので弱い。 スタミナ等を無駄にしたくない癖がひどくて、結局時間が溶けている。

Rによるやさしい統計学をRmarkdownで

Rによるやさしい統計学

Rによるやさしい統計学

行きの新幹線で端の指定席とれたので、電源確保してやってた。帰りは電源確保できず少しだけ+疲れてた。 やったことは以下のとおり。

  • ベクトルでの値定義なので、データフレームへの変更
  • 基礎のグラフの描画を学び、それをggplot2でも行う

ggplot2のためのデータの持ち方と基礎グラフ描画のためのデータの持ち方が異なるので大変。tidyrを使っていい感じにしている。

4章の標本と母集団を読んで、母数推定についてあんまり理解できていなかったなぁと感じた。最終的には区間推定をしたいのだけど、点推定の時点で怪しいので理解を深める。そのために標本分布をきちんと理解する。

7章の分散分析までの説明がとても丁寧。途中から端折っている感じはある。 以前読んでいた44検定のおかげなのかとても理解が進んでいるのと、やはり検定そのものよりは統計量が示す意味が勉強になる。 分散分析から多重比較の説明に移るときもなるほどーと思った。

電車でも引き続き読む。

まとめ

あんまり書くことなかった

2017-07-24〜07-30 やったことと振り返り

体調よくなってきた。githubの草と記憶を頼りに書く。

repositoryの内容整理

最近、ほとんどこれしかしてない。

table of contents(toc)直した

めちゃくちゃだったので直した。ipython notebookでは先頭のh1見出しが記事名になる。加えてファイル名と同じにしないといけないconfigにしてある(とりあえず)ので合わせた。tocは treeとして表示でき、深さを1、つまりh1を対象にしている。

code blocksを直した

sphinxにおけるcode blocksのsyntax highlightはpygmentsによって実現されている。これのwarningによると、literalはダメらしいのでそれを直していた。特にきーたの記事が対象になっていた。

  • python literal
    • 直す or comment out
  • bash literal
    • 直す or shell-session に変更
  • そもそもzshがない
  • など

footerにGoogle Analytics仕込んだ

けど、ダメだった。CSPのせいでgithub以外ダメなことを思い出した。

https://github.com/ksomemo/ksomemo.github.io/blob/19a85cc3a0523f2a030f2143de66616f7d54b12c/docs/contents/qiita/ipython%EF%BC%8Fjupyter%20tips.md#nbviewer用のbookmarklet

Github pagesの方はダメだったけど、sourceに対するtrafficは下記で見れる。

https://github.com/ksomemo/ksomemo.github.io/graphs/traffic

独自ドメインと紐付ければいいのだろうか。ちょっとめんどう。

課題

  • tocに全ての記事が羅列されているので、整理したい
  • 上記の理由はきーた, notebooksという単位でdirectory分けされているので、意味ある単位に分けたい。特にきーた

BigQuery触った

仕事のための勉強として、仕事中にprivateアカウントで触った。BigQueryというよりは、GCP初なのでそこもきちんと理解しておかないとまずそう。

覚えたもの

  • MySQL/Postgresql相当のmanaged DBがあること
  • Project - BigQuery - Dataset - table という構図
  • BigQuery
    • console
    • 料金体系をざっくりと
    • datasetとtable作成
    • query
      • save
      • save as view
      • into table
      • into drive

覚えるもの

  • 各種サービス名と名前
    • EC2相当
    • S3相当
    • etc.
  • BigQuery
    • Standard Query
    • etc.

集合知プログラミング

クラスタリング放置してgithub pages整理していたので時間録れず、巻末のアルゴリズムと数式読みをしていた。 アルゴリズムについてはざっと読んだ。 数式については具体的なsource codeまで書かれていので、一部実装した。

tanimoto係数

2つのデータに対し、それぞれがもつカテゴリの集合に関する類似度。 共通要素数 / (それぞれの要素数の和 - 共通要素数) より、

  • 同じ要素しか持たない場合、1
  • 共通要素なしの場合、0

ソーシャルゲーム

仕事で必要になったので、仕事中にやっていた。収集癖のせいで土日も割りとやっていたので死にたい。

AtCoder ABC

ゲームやってて見逃した。

まとめ

  • repositoryの整理がだいたい済んだので、時間かけすぎないように整理
  • BigQueryをがんばる
  • 集合知プログラミングを引き続きやる
  • 次週はAtCoderやってない分をやる

2017-07-17〜07-23 やったことと振り返り

体調が安定しない。

公式アプリでブログ更新中(続

編集を見た目モードからmarkdownに変更したけど、反映されてない?

追記

repositoryとgistの整理

repositoryに写したきーた記事のうち不要なものを削除している。量が多いのとgist連携していたのでゴミが溜まっている。

もともとgistに存在していたゴミの整理と、きーたでは表せないことをgistにipynbを使っていたので自動ではなく完全手動。

さらに、markdownのsyntax hilightされていないことに気づき、それも直している。

z検定

分散が既知の場合の検定。pythonとRでやった。

 

  • 数式をsympyで書き代入

  • scipyとRには一発で求める関数が存在しなかったので分布系関数を使って算出

  • statsmodelsには存在していたので、それを使って算出

 

いずれも一つのipynbで完結させ、Rはr2pyを使った。開発が継続されているようで安心したのと、magic commandからpythonの変数を渡せ、返すこともできる。ただし結果がベクトルで帰ってくるので、ndarrayから抽出するのが面倒。

集合知プログラミング

久しぶりに読んだ。本当は決定木から読むつもりだったのだが、途中になっているのが気持ち悪かったので以前の部分を確かめた。決定木の部分を読む理由は業務で使うため。ただし予測ではなく説明用、これホントどうなんだろ…。

 

以前は2章まで終わっていたらしく、3章の階層クラスタリングの途中から始めた。

numpy使わずにやっているので正直辛いけど、使うように改変すると理解が深まる。scipyの距離関数調べたりしながら知識が溜まっている。

 

numpy.apply_long_axis

結果の一つ一つlenを持たないとダメだったりするので、pandas.Series.applyと比較すると面倒

 

scipy.spatial.dist

距離行列ではなく、最低限の要素しか返さない

まとめ

引き継ぎちょこちょこやる

2017-07-10〜07-16 やったことと振り返り

今週も体調悪かったのと、実家帰ってるので進捗悪い。

 

 

## 公式アプリでブログ更新中

スマホブラウザで更新するの辛いと思ったため。編集見た目モードのままなので、あとでデフォルトをmarkdownに変更する。

 

## local repositoryの整理

githubをremoteにしたり、既存githubのrepositoryと統合。あと整理するのは、repositoryに写したきーた記事のうち不要なものを削除すること。

 

## atcoder ABC 067

- AとBは問題なし

- Cを単純に実装してTLE。

  - O(N^2)なのは分かっていたが、O(N)にできなかった。

  - 解説を見ると、答えの式を式変形することで解決していた。

  - アルゴリズムと言えばそうだけど、特別な知識が必要ではない発想の転換だったので、自分の頭が残念

- Dはグラフだったのでパス

 

レートが出てたので、頑張ってあげたい。ABCがないときは、今までの問題で解けなかったDを解説見て知識をためようと思う。

 

 ## まとめ

思った以上になにもしてないので、課題対策は前回のままとする

 

 

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

体調と生活リズムが狂ったので、毎週日曜に書くはずが月曜深夜に書いてる。

新しい現場での分析

ソーシャルゲームの分析

  • 業界における基本KPI理解
  • ゲームの理解(興味がなくてつらい)

幸い参考になるslideや記事が多くてとても助かる

kaggleのコンペを中途半端にやった

前回、下記のように書いたので選定してやった。

小さいファイルかつ、followしている人たちが解いた問題にチャレンジしようと思った。

Predicting Red Hat Business Value | Kaggle

データ俯瞰

  • pandasで読み込み
  • pandasで要約統計量と概要情報
  • matplotlib / pandas / seaborn で可視化

弱点

  • データが多いときの可視化方法
  • 連続量の離散化に対する指針がない
  • カテゴリ変数のカテゴリが多いときの対処
  • 時系列データに対して、他のカテゴリ変数を加味したときの対処

PCのスペック

小さいデータであっても、下記をしながらだと足りなくなってくる

  • datasetのmerge
  • 細かい俯瞰を続けるので変数が多くなりmemory消費
  • 調べ物しながらだとChromeが気になる

ipython notebook fileをgithubに移行

前回のQiita移行と同様、自分のコンテンツをGithubに移行した。前節のPCスペックの件もあり、PC移行を考えたときにremoteにあるのは安心できる。notebookならGithubでrenderingしてくれるし、一石二鳥。

マンガでわかる統計学の読み直し

地道にコツコツやるという意味で読み直し。ただし、そんなに読み直したわけでもなく実装がメインになった。 次は回帰分析編の2冊目を読み、無相関の検定の指標等について改めて学ぶ。

得たものは以下のとおり。

カイ二乗

全体の合計数と各カテゴリの合計数から見たときの各セルの期待値と実測値のずれ。問題なし

相関比

各カテゴリ内での指標とカテゴリ間での指標を用いて、全体との比を見る。kmeansなどで使われているのは知っていたが、F検定で途中結果を使っていることを知らなかった。分散分析の観点から見ると納得する。

pythonで実装しながら理解した

ksomemo.github.io/chi2_and_cramels_v.ipynb at master · ksomemo/ksomemo.github.io · GitHub

ksomemo.github.io/corr_ratio_fvalue.ipynb at master · ksomemo/ksomemo.github.io · GitHub

scipyの中身見たり、カイ二乗に関してはどんなときに0-1になるかを等高線図で試したりいい機会になった。

AtCoder ABC 不参加

土曜にもなく日曜はARCだったので、土日のどちらかに061をやろうと思ってたけどできず。次のABCは来週なのでその前にやる。

z chart

前の現場でたまに聞いたグラフ。試しに作ってみた。

ksomemo.github.io/z_chart.md at master · ksomemo/ksomemo.github.io · GitHub

構成要素は下記であり、特に難しいことはない。

  • 月ごとの売上
  • 当月を含む12ヶ月間の累積売上
  • 当月を含む12ヶ月間の移動累積売上12ヶ月間

これよりもっと良いグラフあるだろうという印象。売上はKGIだと思うので、これでいいのかもしれないが変化率がないのでどうなのかなと思った。

Qiita stockers bookmarkletの修正

qiita.com

上記を作ったのだが、下記のようにv1が廃止になる。

http://blog.qiita.com/post/162422014829/deprecating-api-v1
blog.qiita.com

問題点は以下のとおり

  • v2のitem APIにはstock countが付いていない
  • v2にはstockers APIがあり問題ないように見える
    • pageごとに出力するAPIにはresponse headerにTotal-Countが付いている
  • Pythonでは取得できたがbookmarklet(JavaScript)では取得できなかった

結論は以下のとおり。お察しである

まとめ

  • 小さいことを多くやったので、すぐに会得できた
  • ABCもいいけど、kaggleもちゃんとやる

課題

  • まとめより、その小さなことはどんな大きなことに紐付いているか分からない
  • 可視化からの分析方針立ての基本を確立する

対策

  • 大きなことを小さいことにbreak downしたタスク管理を行う
  • 可視化方法の基礎を改めて身につける(可視化実践入門本)
  • 分析プロセスの基礎を改めて身につける(プロセス本2つ)

extremepresentation.typepad.com

データ解析の実務プロセス入門

データ解析の実務プロセス入門

データ分析プロセス (シリーズ Useful R 2)

データ分析プロセス (シリーズ Useful R 2)