唯物是真 @Scaled_Wurm

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

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\)でアイテムがドロップするとしたときに、試行回数に対する…

シェルスクリプトで文字列の大小比較をする

シェルスクリプトのif文で文字列の辞書順の大小関係を条件判定したかったので調べましたbashなどには[[]]コマンドがあるので、簡単に文字列比較ができます(ところで[[]]って検索しづらいですね[](test)コマンドの方でも文字列の大小比較はできますが、以下の…

アドベントカレンダーの参加者は毎年どれぐらい入れ替わっているのか?2016

去年Advent Calendarの参加者が1年間でどれぐらい入れ替わっているのか調べました sucrose.hatenablog.com せっかくなので今年も調べてみます2016年と2015年のQiitaで公開されているアドベントカレンダーを調査の対象とします Advent Calendar 2016 - Qiita …

読書記録『数学ガールの秘密ノート 場合の数』☆☆☆☆

確率の話とかは出ずに純粋に場合の数の話 中華料理店などにあるような回転するテーブルが英語で"Lazy Susan"と呼ばれるというトリビアが取り上げられていた(すぐ忘れそう場合の数はよく考えないと、すぐに間違えるので難しい 取り上げてる内容は以下のような…

Chromeの拡張機能のバージョンを固定したかった

Chromeに入れた拡張機能(エクステンション)は自動的に更新されてしまう 自動更新を停止してバージョンを固定して使う方法はないかな、と軽く調べてみたらよい方法が見つからなかったメモ 経緯 この前記事に書いたけどChrome拡張があるバージョンにアップデー…

不正なChrome拡張の悪質化(マルウェア)に引っかかってしまった

最近Chrome拡張が突然悪質化してマルウェアになり情報を盗んだりする事例があるという話が話題になっていました今日Chromeを起動したら「不正なChrome拡張を無効にしました」的なことを言われてChrome拡張が無効化されてしまいました しかも悪質なことにアン…

約数の個数の求め方と高度合成数(Highly composite number)のリスト(10^8まで)

約数の個数を求めるアルゴリズムと約数が多い数である高度合成数についてのメモ 約数の個数の求め方 実際に割ってみる方法 ある数\(n\)の約数の数を求めます \(\sqrt n\)より大きい約数は\(n\)自身しかないので、\(1\)から\(\sqrt n\)まで割れば十分です 割…

Google の可視化ツールの Data Studio を試してみた

Google Data Studio (データスタジオ) という可視化サービスがベータ版で使えるようになっていたので試してみた見たい数値を一覧するためのダッシュボード的なものを作るためのサービスなので、いろんな場所からデータを取ってきて一箇所でまとめて確認する…

BigQueryでクエリ課金額が多いユーザーを通知するbotを作ったら富豪的解決がなされた

qiita.com 上の記事でBigQueryに投げたクエリのログ(Audit Log)がインポートできることを知ったので、会社で使われているBigQueryのアカウントについて毎日クエリの課金額(処理したバイト数)の多いユーザーをSlackに通知してみたちなみにAudit Logsをインポ…

BigQueryでINSERTやUPDATEが使えるようになるらしい

2016年9月末のリリーズでBigQueryにいろいろ機能が追加されました 個人的に便利そうだな、と思ったものを紹介します Release Notes | BigQuery | Google Cloud Platform cloud.google.com 標準SQL (Standard SQL) BigQueryでは独自のSQLを使っていたのですが…

AtCoderのレーティングの分布について調べてみた

競技プログラミングサイトのAtCoderのレーティングの仕組みが新しくなりました 別の競技プログラミングサイトであるCodeforcesのレーティングとどれぐらい相関があるのか、参加回数がどれぐらいあればレーティングに差がなくなってくるのかなど気になったの…

Twitterの翻訳者バッジを手に入れました(数年ぶり2度目)

久しぶりに存在を思い出したので少しやってみたら条件がゆるくなっていて簡単に取れた翻訳・投票したものが採用されるとカルマポイントが貰えて、300ポイント以上になると翻訳者バッジが貰える(既に300ポイント以上あったせいか、新制度になってから初めてい…

ハッカドールのミニゲーム「ハッカトーク!さまーばけーしょん」「ハッカトーク!さまーばーべきゅーっ」の攻略

例のごとく↓過去の攻略と同じフォーマットで攻略を書いておきます ハッカドールのミニゲーム「ハッカト~ク ふぁーすとしーずん」の攻略 - 唯物是真 @Scaled_Wurm 「ハッカトーク!さまーばけーしょん」 blog.hackadoll.com シナリオ別の選択肢の結果 水着だ…

遅い通信だとChromeはdocument.writeで外部のスクリプトを読み込んでも動かなくなるらしい(A Parser-blocking, cross-origin script ...)

概要 Google Chromeを使って、document.write()で外部のJavaScriptを読み込んでいるページを開くと、いつの間にか開発者ツールのコンソールに以下のようなメッセージが出る状態になっていた "A Parser-blocking, cross-origin script, スクリプトのURL, is i…

PHP 7.1 で mt_rand() の間違った実装が直るらしい(しかも rand() が mt_rand() になるらしい)

前にこんな記事を書きましたsucrose.hatenablog.comTwitterで見かけたのですがPHP 7.1で直る予定らしいですPHP 7.1でmt_rand()問題がついに解決されるのか? 一貫して壊れていたmt_rand()が直るとか素晴らしいPHP: 下位互換性のない変更点 - Manual https://t…

Weblio語彙力診断のスコア分布を調べてみた

最近Twitterで流行っていた日本語の語彙力診断の結果のツイートの分布が変という話がありました qiita.comたまにTwitterでみかけるWeblioの英単語の語彙力診断だとどんな分布なのか気になったので調べてみました uwl.weblio.jp以下のような形式のツイートを…

BigQueryで有り金全部溶かさないように、テーブルの日付ごとのパーティション(partition)機能について調べてみた

BigQueryではクエリのたびに対象のテーブルをフルスキャンします スキャンしたテーブルのサイズによって料金が請求されるので、コストの削減のために日付などの単位でテーブルを分割するのがベストプラクティスとして知られていますqiita.comテーブルを日付…

読書記録『「学力」の経済学』☆☆☆☆

日本の教育で専門家が発言していることは、データによって示された客観的なエビデンスがないのではないか教育の分野でもエビデンスが大事、という話アメリカなどの国でランダム化比較試験などの比較的信頼性の高い方法によって得られた教育の知見を紹介して…

制御文字をgrepする

gitで管理しているリポジトリのファイルに間違って、改行やタブ以外の変な制御文字が入っていたことがあったのでgit grepでチェックしたbashとかは$''で囲んだ中に16進数の表記を書くと展開してくれるらしいので以下のように書ける(-Iはバイナリファイル以外…

広告ブロックを使っていると一部機能が動かないサイトのメモ

Chromeに広告ブロックの拡張のAdBlockを入れていると、Webサイトの機能の一部が動かないことがあるのでメモっておく(環境や設定によると思う) Googleウェブマスターツール 検索アナリティクスのページが「エラーが発生しました。しばらくしてからもう一度お…

はてなブログのサイトマップ

Google の Search Console (旧ウェブマスターツール)でサイトマップの登録機能ってありますけど、はてなブログの場合どうなっているのかなっていうのを調べてみたまず結論からいうとSearch Consoleでサイトマップを登録したりする必要はなさそう なぜならrob…

ツイートの時間帯をヒートマップで可視化

Pythonでヒートマップを描く方法の記事を書こうかと思ったけど、細かく説明するといろいろとめんどくさそうだったのでとりあえず実際にやってみた可視化だけ書いておくTwitter APIで自分のツイートを適当に3000件ぐらい取ってきてツイートした時刻と曜日を抽…

Twitterで特定のユーザー達が共通してフォローしているユーザーをリストアップする

前にこんなツイートをしたホクソエムからフォローをされている数で定義されるホクソエム数— 無限猿(id:sucrose)@29月病 (@Scaled_Wurm) 2016年4月1日 連休で時間があったのでTwitter APIに慣れるついでに計算してみた ホクソエムとは よくわからないけど、Tw…

-->