Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

データ可視化を学ぶ Part1

データ可視化。
自分の考えを伝えるための手段。
ただ、手段だからと侮ると痛い目を見るというのを最近つくづく感じます(笑)。
「同じことを言っていてもデータの見せ方で相手の理解度が違う」
「可視化が上手いとできる人っぽく見える」
そこでデータ可視化の基本を学ぼうと思いました。
(Part何まで続くんだろう)

まずは有名どころから。

を読ませていただきました。

当たり前のことを当たり前にやることの難しさ、大切さを知りました。
改めて以下を意識して仕事を進めていきたいと思います。

  1. テーマの決定    「言いたいことは何?」
  2. データの傾向を把握 「どんなデータ?」
  3. 手法の選択     「どう見せればいい?」
  4. データ加工     「可視化しやすいのはどんなデータ?」
  5. 可視化       「完成!」


最後に。記事の中で
『良い可視化への近道は、「これは分かりやすい」と思った可視化があれば、それがどのようなデータをどのような視覚変数にマッピングしているのかを意識的に見るようにして、それを自分の作業にフィードバックしていくこと』
とありました。私の周りのできる人を見ていて非常に感じるのはこれです。常に貪欲なインプットからアウトプットに繋げていきたいです。

標準エラー出力を上手く使う。

今までおざなりにしてきた標準出力や標準エラー出力を教えてもらったのでまとめときます。

コマンド > ファイル名 2>&1
表記 意味
> リダイレクト。1>=標準出力を意味する。
&1 ファイル名
2> 標準エラー出力を意味する。

cronで使うときは、crontabに

0 0 * * * sh hoge.sh >> hoge.out 2>&1

こんな感じで追記(>>)していく。
追記だとディスクを圧迫するのでログローテートする必要もある。

logrotate /hoge/hoge

/hoge/hoge

hoge.out{
    missingok
    notifempty
    daily
    rotate 7
    compress
    nocreate
}
表記 意味
missingok =missing ok。ファイルがなくてもエラー扱いにしない処理を続行する。
notifempty =not if empty。ログファイルが空の場合ローテートしない。
daily 日単位でログを取る。
rotate ○ 過去のログは○日分保持する。
compress 過去のログを圧縮する。
nocreate ログローテート後に空ファイルを作らない。

参考URL:

ログの扱いを知る -logrotate編- - 技術いろいろ勉強メモ
logrotate -d 設定ファイルでデバックできるなど実用的な情報が載っていました。

Rで作ったチャートを保存

histとかplotとかで作ったチャートを画像として保存したい
というとき、キャプチャを撮ってもいいのですが
以下の方法で指定の場所に、指定の名前で、保存しちゃえます。

① jpeg("ファイルのパス+ファイル名") ※ png形式ならpng()という感じです。
② 保存したいチャートを作成
③ 終わったらdev.off()。これをしないと次に作ったチャートで保存した画像が上書きされます。

具体的には

> jpeg("discrete_uniform_distribution.jpg")
> hist(temp,breaks=c(0,1,2,3,4,5,6),probability=T,col="gray",width=400,height=400)
> dev.off()
null device 
          1  

vimでずれずにペースト

vimにコピーしたものを貼り付けるとき
普通に

i

で入力できる状態にしてペーストすると、インデントがずれる
という初歩中の初歩な問題を今更解決できたのでその方法です。

ペーストする前に

:set paste

するだけです\(^^)/

Hadoop Conference Japan 2014

行ってきました。黄色いゾウと会える会。

講演の動画や資料は
Hadoop Conference Japan 2014 Tickets - Eventbrite
からご覧いただけます。

全体の印象としては、YARNやHadoopを活用した事例の紹介が多かったです。
Hadoop Summitに行った先輩方が
YARNとTezの話が主だったと言っていた気がするのですが
こちらはTezの話はあまりなかったです。
午前中はキーノート(Hadoopの未来や、Hadoopを取り巻く環境を俯瞰したお話)
午後はさまざまな発表やライトニングトーク。
Clouderaなど企業のブースもありました。

こういう技術系のイベントに参加することは少ないのですが
所謂意識の高い人がたくさんいて、モチベーションが上がりました!


最後に自分のメモ。

  • Databricksのデモすごい。
  • Hadoopの利用には集める→保存→取得→利活用のフェーズがあるので、どこに位置するのか意識することが大事。
  • セキュリティには①認証 Kerberosと②認可 (a)HDFS ACL(Access Control List) (b)Apache Sentry 行/列からデータベース単位までアクセス制御可能がある。Apache SentryはParse→Build→PlanのBuildとPlanの間に入ってCheckする。
  • リクルートの事例 ①キャリアアドバイザーを擬似的に再現。教師あり学習。(社内外) ②Push ③HBase リアルタイムレコメンド
  • スペースコーディング 特徴量
  • Skip-Gram 単語をベクトル表現
  • グラフ Titan
  • Prestoのロゴが好き。
  • Mahoutによるアルツハイマー診断支援 by 新日鉄 モダリティは医療機器。①判別分析 ②クラスタリング ③レコメンド ④その他がMahoutにはある。Random Forestは決定木を組み合わせたもの。 上位に頻出するものは重要。 複数モダリティのRF ①データ合成 ②次元圧縮 データの数を合わせる。 → モデル合成
  • LT。Shib yarn.app.mapreduce.am.resource.mb(デフォルトは16G)が足りないとYARNは起動もしない。MLib Sparkで用意されている機械学習のライブラリ。fluentd Flume データを集めて保存。Big Query
  • Treasure Data on YARN by Treasure 今までのJobTrackerがResourceManager、TaskTrackerがNodeManagerに。
  • 実践機械学習 by MAPR ほしいのは例外的な共起。共起マトリクス アイテム×アイテム。共起バイナリマトリクス LLRLucene 検索→(ラッパー)Solr アイテム=ドキュメント このインジケータに一緒に買われたものをセット。マルチモーダルレコメンデーション 複数の行動ログを使って。結果の一ページ目しか見ない。更新されないとお客さんはおもしろくない。機械も学習しない→ディザリング レコメンド+ランダム。ランクの対数ガウス分布を加えたものをスコアに。

REST入門

yohei-y:weblog: REST 入門
を紹介してもらい、読んでみたまとめです。
(あくまで自分の理解です)

  • RESTとはREpresentation State Transferの略で、アーキテクチャスタイルのひとつである。
  • RESTはアーキテクチャスタイルの中のクライアントサーバから派生している。WWWはRESTの一形態。
  • リソース(URI)のある時点での表現=representation stateを転送=tranferするもの。
  • リソースに対して、GET/POST/PUT/DELETEをする。
  • GETはリソースに唯一、副作用を与えない。獲得するもの。POSTは新規作成。PUTは更新。DELETEは削除。
  • セッションをクッキーで維持するのは駄目。クライアント側で全部持つ。

何も考えずにPOST乱用したりしていたのですが、意味を意識してRESTに則ったWEBページを作りたいと思います。(感想文みたいになってしまった;)(まったく関係ないけどHadoop Conference Japan 2014に行って来たので今度、記事を書きます)

rtrimで最後のカンマを削除。

$str = 'hoge,piyo,fuga,';
$str = rtrim( $str, ',' );
echo $str;

hoge,piyo,fuga
最後のカンマが消えます!

配列の値をforeachで読み込んで

foreach ( $ary as $item ) {
  $str .= $item;
  $str .= ',';
}

こんな感じに作った後に最後のカンマを外したりするのに便利ですねー。

rtrim自体は第二引数に何も指定しないと、文字列の最後にある空白を取り除く関数です。