唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

BigQueryでアドホックなクエリを書くときに気をつけようかなと思うこと

最近Webのコンソールでクエリを書くときに気をつけようかなと思ったことをメモしておく クエリにStandard SQLを使っているかLegacy SQLを使っているかを明記する パラメータの定数はできるだけわかりやすくまとめておく 何をするクエリか最初にコメントを書…

BigQueryのクエリで定数を定義して複数箇所で使いたい

BigQueryでクエリを書くときに、同じ日付や倍率、円周率などの定数をクエリの複数箇所で使いたい時があります 単純に複数箇所に書くと修正するときに大変なので、共通のものを複数箇所で使いまわす方法を調べてみました UDF(ユーザー定義関数)による方法 定…

BigQueryのStandard SQLの便利な機能とLegacy SQLからの変更点をいくつか紹介

勉強会で発表したので内容を適当にまとめてブログ記事にしておくいつの間にかリファレンスが日本語化されているので、全部一読したい人はそちらを読んだほうがよいかも SQL Reference | BigQuery Documentation | Google Cloud Platform ちなみに日本語版の…

新規ユーザーのLTVを既存ユーザーの全体の解約率の逆数で計算するのは不適切?

LTV(lifetime value)という顧客(ユーザー)が将来的に使う金額を予測しようという話があります 前に以下の記事でも書きましたが、月額課金制のサービスだと粗い推定として解約率を一定とみなして解約率の逆数を平均継続期間としてLTVを計算したりしています s…

はてなブログの記事下に表示される関連記事の位置を移動する

はてなブログの記事の下に関連記事を表示する機能が追加されました 表示位置が固定でいまいちだったので、表示位置を移動できないかなって試してみました staff.hatenablog.comはてなブログの設定(デザイン)に以下のようなタグを書けばよいです表示位置の指…

BigQueryのWebコンソールでJSONを整形して出力(pretty print)

BigQueryにはJSON形式の文字列から値を取り出す関数があるのでスキーマレスな感じで使うこともできます ただしJSONを入れるとWebのコンソール上で見たときに改行などが無視されて、JSONの内容を確認しづらいので適当に整形して表示確認する方法を書いておき…

BigQuery の SQL で類似文字列検索をする

BigQuery自体には類似文字列検索の機能はないので、文字n-gramのコサイン類似度を求めるSQLを書いて似ている文字列の検索をします ちなみに単純にある文字列が別の文字列に含まれているかどうかをみたいならWHEREにカラム名`LIKE '%探したい文字列%'のような…

BigQueryで単語分割がしたい

形態素解析器で分割してからBigQueryに載せればいいでしょって話ではあるのですが、既に載っているデータだったり、ログを載せるプロセスに形態素解析を新たに噛ませるのは大変だったりします とりあえず試してみたいだけの時に気軽にやりたいので、BigQuery…

BigQueryで配列に添字をつける(複数の配列をzipする)

BigQueryのStandard SQLを使っていて配列から位置を指定して要素を取り出すことはできるのですが、UNNEST()を使ってそれぞれの要素を取り出した時にある要素が何番目かという情報を一緒に得る方法がわからなかったのでやり方を考えました(もしかしたら簡単に…

liftとPMI(Pointwise Mutual Information)

相関ルール分析(頻出パターンマイニング?)で使われるリフト値(lift)と、共起の強さを測るのに使われるPMIがほぼ同じものだなぁと思ったのでメモ(それ以上の内容はない) 相関ルール分析 Association rule learning - Wikipedia 相関ルール - 機械学習の「朱…

Ubuntuでディープラーニングを始めたけど数日経つとGPUが動かなくなった話

AWS EC2でUbuntuにGPUのドライバやらCUDAやらを入れてディープラーニングに触ってみていたのですが、久しぶりに起動したら動かなくなっていました。最初に断っておきますがかなりLinux初心者っぽい理由です 症状 環境を構築した直後は普通に動きましたが数日…

Slack のステータス(status)を API で自動で更新+天気予報を表示してみる

Slack にステータス機能が表示され絵文字と短いメッセージで自分の状態を表示できるようになりました slackhq.com Beyond busy – Slack Platform Blog – Medium API APIでも変更できるみたいだったので触ってみました User presence and status | Slack user…

A Parser-blocking, cross site (i.e. different eTLD+1) script, 「URL」, is invoked via document.write.

以前、以下のような記事を書いたが、Chromeではdocument.write()でscript要素を書き込むときにそれがクロスサイトであるURL(同じドメインでない)を読み込むようになっている場合、開発者ツールのコンソールに警告を出すようになっている。ネット接続が遅い場…

そろそろプログラマーの定年も近くなってきた

いつのまにかまた年齢がインクリメントされてしまいました 特に人生に進捗は得られていないですこの1年仕事周りでやったことで印象的だったこととか 社内でBigQueryの布教活動や導入支援(?)を少しやった。とりあえずなんでもBigQueryに載せてGoogleスプレッ…

Twitter カードアナリティクス (card analytics) がいつの間にか廃止されていたっぽい

Twitterのアクセス解析のTwitterアナリティクスでTwitterカードを設定してページの画像や概要などが表示されるようにしていた場合、以前はより詳細な情報が得られるようになっていました(たとえば自分以外のユーザーのツイートでも自分のサイトのURLがどれぐ…

MathJaxの公式のCDNが終了するらしい

なので2017年5月以降突然MathJaxの数式が表示されなくなるかも MathJax CDN shutting down on April 30, 2017 説明 MathJaxはWeb上で数式の表示ができる便利なライブラリ 公式のCDNがあってファイルを配信してくれていたのですが転送量が大きくなってしまい…

拡張ユークリッドの互除法

\(a, b\)の2つの正の整数が与えられたときに\(ax+by=\gcd(a, b)\)となるような整数\(x, y\)のうちの1つの組を計算するアルゴリズム たとえば5リットルの入れ物と7リットルの入れ物を使って11リットルの水を汲む方法などが計算できる昔こんなツイートをしてた…

グループ別の解約率の逆数で計算したユーザーの平均継続期間が全体の解約率で計算した数値と合わない?

解約率が一定であると仮定すると、解約率の逆数でユーザーの平均継続期間を求めることができます 以下の記事がバズっていた後に、解約率からユーザーの平均継続期間を計算するのを試しているのを見かけました ところが全体の解約率で計算した値と、ユーザー…

急にPDCAを回したくなったので、無限に回転し続けるCSSを書いた

PDCAPDCAPDCAPDCAPDCA コード CSSのアニメーションとtransformの機能を使って回し続ける平面的な方 .pdca { display: inline-block; margin: 0; padding: 0; animation-name: pdca; animation-duration: 3s; animation-iteration-count: infinite; animation…

JavaScriptの==による配列の等価性比較の挙動クイズ

JavaScriptではイコール2つによる等価性の比較は、意図しない型の変換が起こるので使わないほうがよいと言われています TwitterでJavaScriptで[] == ![]の挙動がおもしろい、という話を見かけたので調べてみましたというわけで突然ですが問題です。以下の比…

scikit-learnでMean Average Precisionを計算しようと思ったら混乱した話

複数ラベルの分類問題を評価しようと思ってMean Average Precisionを計算しようと思ったが、Pythonの機械学習ライブラリのscikit-learn(sklearn)にはaverage_precision_score()関数とlabel_ranking_average_precision_score()関数があってどういう違いがある…

このはてなブログの記事がGoogleで「モバイルフレンドリーではありません」と表示されるようになっていた

たまたま自分のブログの記事をGoogleで検索したらいつの間にか「モバイルフレンドリーではありません」と表示されるようになっていた このブログの記事が全滅というわけでもないし、記事に原因があるのかGoogleかはてなブログの問題なのかもよくわからない …

pixivから「新しいログインがありました (場所: 日本)」というメールが何度も届く

pixivからログインの通知のメールが来るようになっていたいつもと違う環境やシークレットウィンドウでログインした時に通知が来るというのはわかるけど、同じスマホで公式アプリを使い続けてるのに通知が来るのはなんでなんだろう?一定時間経過とかで再度来…

読書記録『数学ガールの秘密ノート やさしい統計』☆☆☆☆

僕「まったくだ。数学が嘘をつくわけではないし、グラフが嘘をつくわけでもない。人間が嘘を紛れ込ませているんだね」 冒頭でグラフは作者の意図によって与える印象が違うものをいろいろ作れるという話を取り上げてた 仮説検定を10ページ強で説明しているけ…

正規表現がどれぐらい遅くなるか(計算量?)を調べてみた

最近あんまりパフォーマンス的によくない正規表現を見かけたので、いくつかのパターンについて正規表現をいろんな言語で試してみて実行時間を測ってみた(ついでに最悪計算量についてゆるふわに考えてみた) 実際には正規表現エンジンの実装(NFAやDFAとか?)や…

gitでrevertしたマージコミットの変更をもう一度適用したい

あまりgitに詳しくないのでたまに困るgitでブランチをmergeした後にそのmerge commitをgit revert -m 1 マージコミットのIDとかで取り消して、その後にやっぱりもう一度マージし直したかった 単純にrevertしたマージコミットをrevertしただけでも、コードの…

はてなブックマーク数が多い2016年のアドベントカレンダーの記事

QiitaとAdventarにあるアドベントカレンダーについて、個別の記事とカレンダー全体のはてなブックマーク数のランキングを27日の0時ごろに集計した 個別記事上位100件のURLについては軽く目で見て最近の記事でなかったりするURLをフィルタリングしてある(漏れ…

PHP関連で読んだドキュメントの翻訳が間違っていて(?)日付の書式に%Gを書いてハマった話

日付を表す書式文字列の一つに%Gというものがあります(意味するところはツールや関数によって違うかもしれません) PHPの日本語ドキュメントと、テンプレートエンジンのSmartyのドキュメントがわかりづらくて、西暦の4桁の年を表示する%Yと間違えて%Gを使って…

はてなブックマーク数が多い2016年のアドベントカレンダーの記事(途中経過)

去年書いたスクリプト↓がだいたいそのまま動いたのでアドベントカレンダーのはてなブックマークの合計数のランキングと記事別のランキングを今年も出してみた sucrose.hatenablog.com 全件記事を見たわけではないので変なゴミが混じっているかも今年はディー…

ソシャゲで確率を推定するにはどれくらい試行が必要か

ソシャゲをやっていてドロップ確率などを調べるには何回ぐらい試せばよさそうか気になったので調べてみた一定確率\(p\)で成功、\(1-p\)で失敗するという単純なモデルを仮定する つまりある確率\(p\)でアイテムがドロップするとしたときに、試行回数に対する…