2014年

昨日新年会をした、そんなに飲みすぎたつもりはなかったけど、今日はあまり調子がよくなかった。
そんなことはさてより、2014年にやりたいことをぼんやり考えた。

  • 技術を深める

去年はいろいろなことに手を出そうとして結局うまくいかなかった感じがするから、今年はやることを絞って深められるようにしたい。

  • 本を読む

1ヶ月に1冊は非技術書を読みたい。といいつつ、既に今月から厳しそう。本読むペース遅いから何とかしたいな。

  • 京都散策

京都に来てからまだあんまり色んなところ回ってないから、京都や関西をいろいろ散策したい。

f:id:skozawa:20140113161839j:plain


今年は先延ばしにしてきたことを色々と考えないとなーとも思ってるから、いろいろと考える一年になりそうな気がする。

今週のお題「2014年プライベートでやりたいこと」

2013年振り返り

2013年を簡単に振り返る。


去年はエンジニア1年目でエンジニアとして1人前になるのに精一杯だったし、今年の前半もそんな感じだったと思う。まあ、それなりにまともになったんじゃないかと思ってる。


後半からは少し余裕がでてきたので、色々できるといいなと思っていたけど、発表はKyoto.pmでLTしたぐらいだったので、もう少しできると良かった。mahoutとかelasticsearchとか軽く触っただけで、そのあとちゃんと触れなかったのはあまりよくなかったなーと思う。もうちょっと深く触れるようにしないといけないなーと反省してる。


非技術書の本を読もうと思ってたけど、読めたのは3冊くらいだったのでもう少し読みたかった。
「ひらがな」で話す技術を読んだ - skozawa's blog
ビッグデータの衝撃を読んだ - skozawa's blog
「社長の教科書」を読んだ - skozawa's blog


9月くらいからはしばらく離れていた研究に少し触れ始めた。一応、共同研究員になった気がするけど、まだ特にたいしたことはしていない。あと、まだ世に出てないし出るかも分からないけど、大学でやってたことをまとめれたのは良かった、結構大変だったけど...来年の3月には一段落という感じだからもう少しがんばらないと。北海道行きたい。


今年の前半の記憶あまりないけど、後半はそれなりに良かったんじゃないかという気がしている。それにしても、まだ大学のときの感覚なのか年末よりも3月(年度末)の方が1年の区切りという感じがする。

技術の見せ方について

入社してから初めて、3日間の開発合宿に参加した。
開発したものをどの程度書いていいか分からないのでとりあえず感じたことを書く。

今回の合宿で一番勉強になったのが「技術をどう見せる」か。
合宿では、普段業務ではあまり行っていないデータ分析や、自然言語処理クラスタリングなどのちょっとした技術を使って開発をした。こうした技術を使って開発したとき、その結果をどう見せるか、技術が使われていることをどの程度見せるかは結構重要だと思う。

今回開発して感じたのは技術は見えてないくらいがいいなということ。あからさまに技術を押し出すと普通の人は引くと思う。UI的にはおもしろそうというのが伝われば十分で、その裏に実はこういう技術が使われているというのはエンジニアとか技術に興味のある人にだけ伝わればいいと感じた。初音ミクとかは音声合成という技術が使われているけど、初音ミクというキャラクターが前面にでていて、技術部分はそんなに出ていない気がするけど、使ったことないので勝手なイメージです

技術を如何に技術然とした形で見せずに、自然に見せるか。今回の合宿成果で自分が思っていたよりも他の人に評価してもらえたのはここらへんの見せ方がうまくできていたからなんじゃないかと思っている。まあ、デザイン面ではまったく貢献してないのでデザイナーさんがすごいという感じ。大学で研究しているときはこういうことあまり考えたことなかったので、「技術をどう見せる」かを考えるいい機会になったかなと思う。

合宿に参加した感想としては、普段一緒に仕事しない人と開発できたり、3日間思いっきり開発できたりと思っていたよりも全然おもしろくて良かった。

Japan.R 2013に参加してきました

最近Rを勉強したいなーと思いつつなかなか勉強できてない。とりあえず勉強会に参加してみようと思って、Japan.Rに参加してきました。
http://atnd.org/events/44682

4件の発表と11件のLTがあって、全部はメモれなかったけど、適当なメモを書いておく。

Yahoo!ビッグデータからの景気動向指数の推測について

ビッグデータレポート - ヤフー株式会社の中から、景気動向指数を測定。内閣府が出す景気動向指数は2ヶ月程度ラグがあるので、それを推測することで即時に出せるようにする。
測定には検索データを利用。2012年に一度でも検索された単語は約75億語、このうち、毎日一定数以上検索された約60万語を利用。
分析には重回帰分析を利用。約60万語の中から15単語程度が選ばれ、モデルが作成される。
単語の選択はstep wise法を利用し、以下の点に気をつけてモデルを構築

  • オーバーフィッティングしない
  • 最大15ヶ月間先までは安定して使えるモデル


15単語程度で内閣府がだす景気動向指数をある程度推定できているのはすごい。どういう単語が使われてるか気になったけど、結局わからなかった。

実ビジネスデータへのRの活用とその限界

ビジネスデータ(ECサイトの購買データのようなスパースなデータやapacheの生ログのような大量、かつ、非正規化データ)をRで処理するのは大変。言語を適材適所で利用することが重要。
データ分析は前処理、分析、レポートという段階があるが、前処理が大半を占める。
データ分析3か条として

  1. 分析対象を理解
    • ドメイン知識あるか、分析必要か、正しい現状認識ができているか
  2. 分析手法を理解
    • 適切な前処理がされているか、適した手法か、パラメータ調整が適切か、アウトプット理解できるか
  3. 分析結果に対して適切なアクション


データ分析で前処理が一番大変というのは確かにその通りという感じだった。
ベイジアンネットワークを使ってコンバージョンの可視化をしているのは参考にしたいと思った。

オンライン広告における大規模データの活用事例

オンライン広告の課題として、異なる目的を持つプレイヤー(パブリッシャー、広告主、ユーザ)のニーズに答える。
Yahoo!ディスプレイアドネットワーク(YDN) | サービス | Yahoo!プロモーション広告のうち、ターゲティング広告について。ターゲティング広告は買切り制ではなく、事前に費用などを把握できないので、統計解析をして予測値を提供する。
統計モデルにより広告の表示回数を予測する。また、広告がどの程度クリックされるかを予測。
分析方法はリッジ回帰(glmnetライブラリ)を利用。
CTR予測は線形回帰を利用。パラメータが増えると計算が困難になるので、検索エンジンで候補を絞る。Webページから取得した特徴的なキーワード(タイトル、Metaタグ、H1タグ、アンカーテキストなど)も考慮。

2013年のTokyo.R

2013年のTokyo.Rの発表を振り返って、いくつかピックアップして発表。



Japan.Rは初めての参加だったけど、おもしろかった。R詳しくないからどうなるだろうかと思ったけど、あんまりR感なかったので、少し安心。あと、ビジネスで実際に利用している話が聞けたので良かった。

「社長の教科書」を読んだ

経営とかよくわからないし、これまで知ろうとしたことなかったけど、少し興味が出てきたので、読んでみた。


章構成は

  1. 経営という仕事と経営に対する考え方
  2. ビジョン・リネンが会社の根本
  3. 戦略立案の基本原則
  4. マーケティングでお客さま第一を具体化する
  5. 会計と財務の本質
  6. ヒューマンリソース・マネジメント
  7. リーダーシップとリーダーの姿勢


この本で書かれていた経営者のやるべきことは以下の3つ。

  • 企業の方向付け
  • 資源の最適配分
  • 人を動かす

企業の方向付け

2~4章では企業の方向付けについて書かれていた。
まず、ビジョン・理念について

  • 会社の根本はビジョンや理念であり,これが最も重要。
  • ビジョン・理念を貫き通している会社が成功している。
  • ビジョンや理念に基づいて戦略を立てて、PDCAサイクルをまわす。

これはその通りだなーという感じ。


知らなかったものとして QPS(Quality, Price, Service)。
ユーザはQPSの組み合わせで自社を選ぶか他者を選ぶか決めるので、ユーザの求めるQPSの組み合わせを考えることが重要。
あと、ユーザにとって主観的一番になろうというのが印象的だった。


それと意外だったのが、こういうタイプの本で事業開発のときに仮説・検証のサイクルが重要だと書かれていたこと。

良い会社とは、部下も社長も皆で仮説をだすことができ、それを検証して、高い確率で成功するまで練ってから、実際にやってみるという風土がある会社

資源の最適配分

5、6章では会計についてと人的リソースについて書かれている。


財務諸表の読み方が書いてあり、ポイントとして、安全性、収益性、将来性の3点の読み取り方が書いてあった。貸借対照表から自己資本比率などを見ることで安全性、収益性、将来性を読み取れるらしい。貸借対照表とかちゃんと見たことなかったし、読み方もよくわかってなかったので普通に勉強になった。


あと、働きがいをアップするには褒めることが重要で、お金や地位では働きがいは高められない。


ここらへんは全然詳しくなかったので参考になる感じだった。

人を動かす

7章ではリーダーシップについて書かれている。


成功する経営者の特徴として以下の5つが挙げられていた。正しいのかは正直よくわからない。

  • せっかち
  • 人を心から褒められる
  • 他人のことでも、自分のことと同じように考えられる
  • 優しくて厳しい
  • 素直さ


あまりこういうタイプの本を読んだことなかったけど、たまに読んでみてもおもしろそうだと感じた。


社長の教科書―リーダーが身につけるべき経営の原理原則50

社長の教科書―リーダーが身につけるべき経営の原理原則50

社長の教科書

社長の教科書

WordNet利用メモ

WordNet、ずっと知ってはいたけど、ちゃんと触ったことなかった。最近WordNetを少し触る機会があったので、メモ。

インストール

WordNetのサイトからダウンロードしてきてインストール

ダウンロードして解凍して、インストールすると /usr/local/WordNet-3.0 にインストールされる

tar -xzf WordNet-3.0.tar.gz
cd WordNet-3.0
./configure
make
sudo make install

これでパスを通せば、wn(/usr/loca/WordNet-3.0/bin/wn)コマンドが使えるようになる。

wn コマンド

使い方は http://wordnet.princeton.edu/man/wn.1WN.html
例えば、blogという単語を調べるときは wn blog とかしてみる

$ wn blog

Information available for noun blog
	-hypen		Hypernyms
	-synsn		Synonyms (ordered by estimated frequency)
	-famln		Familiarity & Polysemy Count
	-coorn		Coordinate Terms (sisters)
	-grepn		List of Compound Words
	-over		Overview of Senses

Information available for verb blog
	-hypev		Hypernyms
	-synsv		Synonyms (ordered by estimated frequency)
	-famlv		Familiarity & Polysemy Count
	-framv		Verb Frames
	-coorv		Coordinate Terms (sisters)
	-simsv		Synonyms (grouped by similarity of meaning)
	-grepv		List of Compound Words
	-over		Overview of Senses

No information available for adj blog

No information available for adv blog

それで、wn blog -synsn とすると類義語(web log)と下位語(diary, journal)が調べられる

$ wn blog -synsn

Synonyms/Hypernyms (Ordered by Estimated Frequency) of noun blog

1 sense of blog                                                         

Sense 1
web log, blog
       => diary, journal

調べられるけど、機械が可読な感じではないのが少しつらい(なにかオプションがあるのかもしれないけど、見つからなかった)

WordNet::QueryData

wnコマンドはプログラムで扱うのはちょっと大変そうなので、別のを探したらWordNet::QueryDataというcpanモジュールがあった。
https://metacpan.org/pod/WordNet::QueryData

WordNet::QueryDataの場合、blog#n#1のように、単語とその品詞、意味(WordNet上で何番目の意味か)が必要になるので、品詞と意味などを調べる。

blogには名詞と動詞があって、名詞のblogは1種類

my $wn = WordNet::QueryData->new;
[ $wn->queryWord('blog') ];   # -> blog#n, blog#v
[ $wn->queryWord('blog#n') ]; # -> blog#n#1

類義語や下位語はquerySenseメソッドを利用すると取れる

my $wn = WordNet::QueryData->new;
[ $wn->querySense('blog#n#1', 'syns') ];  # -> web_blog#n#1, blog#n#1
[ $wn->querySense('blog#n#1', 'hype') ];  # -> diary#n#1
[ $wn->querySense('diary#n#1', 'syns') ]; # -> diary#n#1, journal#n#1

他にも上位語(hypo),定義(glos)などwnコマンド同様に取れる

日本語WordNet

WordNetの日本語版。sqlite版があるので、それを使ってみる。英語版も含まれてる(全部かどうかはわからない)。

synset, sense, word テーブルあたりを使うと類義語が取れる。
synlinkテーブルを使えば、上位下位語が取れる。

$ sqlite3 wnjpn.db
sqlite> select * from synset where name = 'web_log';
06402202-n|n|web_log|eng30
sqlite> select * from sense where synset = '06402202-n';
06402202-n|27320|eng|0|1|0|eng-30
06402202-n|96297|eng|0|1|0|eng-30
06402202-n|222321|jpn||||mono
sqlite> select * from word where wordid in (27320,96297,222321);
27320|eng|web_log||n
96297|eng|blog||n
222321|jpn|ブログ||n


昔軽く触ったときはwnコマンドなんてなかった気がするから、だいぶ使いやすくなってる気がする。
あと、WordNetのバージョンによってsynsetが違うのは知らなかった。

ビッグデータの衝撃を読んだ

読んだのは1ヶ月以上前。最近忙しくて書く暇なかったけど、論文書き終わって締切りに追われなくなったので、忘れないうちに印象に残ったところを書いておく(既に結構忘れてる)。


内容としてはビッグデータを活用した事例がたくさん紹介されていた。

1番印象に残ったのは、有名な話なんだろうけど、知らなくて驚いたのがreCAPTCHAの話。
スパム対策だけが目的のものかと思っていた。スパム対策も目的の1つなんだけど、もう1つの目的として「書籍のデジタル化」(具体的にはOCRの認識性能の向上)があるということ。普通にホームページにも書いてあるけど、知らなかった。
http://www.google.com/recaptcha/learnmore
機械で認識が難しかった画像をreCAPTCHAで出して、人間に教えてもらおうというもので、スパム対策をしつつ、OCRの認識性能向上のための機械学習のデータを収集できる仕組みになっている。同じ仕組みで2つの異なる目的を解決しようとしているというのもそうだけど、そこに人間が自然に(自然というのは言い過ぎかもしれないけど)関わっているのは良い仕組みだなと思った。

あと印象に残ったのは最後のほうに書いてあったデータ駆動企業になるのを妨げる企業体制・企業風土として挙げられていた以下の点。

  • 「ウチでは昔からこうしてきた」という「常識」が幅をきかせ,その正当性が検証されない。
  • 経営陣がデータや事実の裏づけのない意思決定をしても、批判されない。むしろヒラメキ型のリーダーの方がもてはやされる。
  • 分析のスキルを備え、データの山から宝を堀り出そうとする人間がいない。何も思いつかないとき仕方なくやるのが分析だとされ、しかも専門知識をもたない人間が取り組んでいる。
  • 「そのアイデアはよいか悪いか」よりも「それをいったのは誰か」が問題にされる

ちゃんとやるなら会社として力をいれないとうまくいかないということなんだろう


もう1年以上前の本だから結構知っていることも多かった。適当に流し読みしたけど、reCAPTCHAの話はおもしろかった。


ビッグデータの衝撃――巨大なデータが戦略を決める

ビッグデータの衝撃――巨大なデータが戦略を決める