2014年振り返り

年末なので2014年を振り返る。

目標

2014年の目標何にしてたかというと、下の3つだった。
2014年 - skozawa's blog

  1. 技術を深める
    • できたようなできてないような。もう少し深堀したかった気はするけど、それなりにはできたんじゃないかな。
  2. 本を読む
    • 1ヶ月に1冊は非技術書を読みたいと思ってたけど、全然達成できなかった。結局4冊くらいしか読んでない。
  3. 京都散策
    • 特に数えてないけど、とりあえず色々行けたかな。

どれも何もやってなかったわけではないけど、完璧に達成できたと思える感じではないかな。

振り返り

1~3月

1月はなにやってたかあまり覚えてない。2、3月には仕事で新しいチームに入って新しい言語(ScalaやGo)を使うようになった。ただ、2、3月は言語処理学会の発表準備などで忙しくなることが分かりきっていたので、この判断は自分としては間違いだったなあと感じる。忙しくてもなんとかなるだろうと思ってたけど、実際にはあんまりなんとかなっていないことが多くて、新しい言語を学びたくても時間はとれない、とはいえ、タスクはあるので新しい言語を学びつつこなす必要があるという感じであんまり良くなかった。自分の場合、新しいことやるときにはある程度時間をかけられる状況にして取り組まないとだめだなーと反省。なんかそのあとしばらく低調な感じだった。


ともあれ、言語処理学会の発表はちゃんとできたし、その前に書いていた論文誌も発行された。そのあと、共著ではあるけど他の論文もでて、学生以来の論文に多く関わった年だった。

  • "BCCWJに基づく長単位解析ツールComainu", 言語処理学会第20回年次大会 (2014.3)
  • "長単位解析器の異なる品詞体系への適用", 言語処理学会論文誌 (2014.4)
  • "Revised Catalogue Specifications of Speech Corpora with User-friendly Visualization and Search System", The 17th Oriental COCOSDA, pp. 60-64 (2014. 9)
4~6月

社内で論文輪読会が始まったこともあって、このころから論文を読む機会が前より少し増えた。あと機械学習とかをちゃんと勉強したいと思って、大阪PRML読書会に参加したりもした。結局2回しか行けてないけど、PRMLまだ4章までしか読めてないし、来年機会があればまた参加したい。

7~9月

データ分析とかビジネスにおけるデータ活用みたいないわゆるデータサイエンティストに興味がでてきたので、そのあたりの本を読んだり、東京ウェブマイニングに参加したりしてた。あとは新しい言語juliaを少しかじったけど、結局ちゃんと使えるように書くまでは使ってない。他にはScala Matsuri 2014、テキストマイニングシンポジウム、PyCon JP 2014といったカンファレンスにも参加した。テキストマイニングシンポジウムはともかく、Scala Matsuri、PyCon JPみたいなエンジニア系のカンファレンスに参加するのは初めてだった。

10~12月

普段の業務や開発合宿など、これまでより論文を活用する機会が増えたことで、論文を探す、読む機会も増えた。そのせいか研究室にいるような生活になってた気がする。

全体

1年を通してみると、良くも悪くもない1年だったかなーという感じだけど、色々なことを考えた1年ではあった。まあ、ある程度明確にしておきたかったことは明確にできたのでよかったかな。とはいえ、年末にインフルエンザにかかるという最悪の終わり方の1年だった。

「ビジネスモデル全史」を読んだ

「ビジネスモデル全史」を読んだので印象に残った部分を簡単に書いておく。

  • 序章:お金にまつわる5つのビジネスモデル確信
  • 第1章:ビジネスモデルとは何か?
  • 第2章:近代ビジネスモデルの創生期(1673~1969)
  • 第3章:近代ビジネスモデルの変革期(1970~1990)
  • 第4章:世紀末、スピードとITによる創造期(1991~2001)
  • 第5章:リアルを巻き込んだ巨人たちの戦い、小チームの勃興(2002~2014)
  • 第6章:どうビジネスモデル革新を起こすのか?
  • 保章:今、日本から世界に挑戦できること


これまでのビジネスモデルやそのビジネスモデルの革新がどのように起こったのかを年代ごとに簡単なエピソードと一緒に書かれていた。

サウスウエスト航空の「経験よりユーモア」、「顧客より従業員」

顧客第一となるのが普通だが、それを「顧客第二、従業員第一主義」というのはなかなか言えない気がするので、それを貫いていったのはすごいなと思う。

われわれはベンチャーだ。小さいのだから顧客全員に好かれる必要はないし、特徴を出そうと思ったら、
従業員の力を最大限引き出さなくてはならない。だから従業員第一主義。
それにベンチャーは、生き残るためにあらゆる変化を厭ってはいられない。そこに既存の経験は邪魔でしかない。
ゴビンダラジャンの「忘却、借用、学習」、リースの「リーンスタートアップ

リーンスタートアップは知っていたけど、「忘却、借用、学習」というのは聞いたことなかった。
借用は既存のビジネスモデルと差別化するには借用するものを限定しようという考え方で、なるほどという感じ。

新規事業は決して既存事業から「人事、経理、IT」機能を「借用」してはいけません。
それこそがスピードや発想の足枷になるから。
主要機能である「R&D、マーケティング、生産、流通」機能にしても、「借用」するのは1~2機能に留めよ。
ビジネスモデルを同じくすればジャンプはなくなってしまうからです。

学習の話も面白い。目標必達の話はありそうだけど、失敗からの学習を第一目標とすべきというのは面白いし良い考え方だなと思う。

新規事業に業績目標必達を求めるな、失敗からの学習こそを第一の目標とすべき
既存事業に多い目標必達文化は、大きな挑戦を阻害します。
しかし、挑戦し、失敗から学ぶことなくして新規分野での成功はあり得ないからです。
「創造性あふれるビジネス・リーダーの特長」として「5つの発見力」

以下の5つらしいけど、これが必要十分なのかは自分にはよくわからない。

関連づける力:異分野から生じた、一見無関係に見え疑問や問題、アイデアをうまく結びづける力
質問力:前提を覆そうとしたり、正反対の方向に振ったりすることでモノゴトの探究につながる質問をする力
観察力:一般的な現象や潜在顧客の行動を詳しく調べることで、非凡なビジネスアイデアを生み出す力
実験力:学習のためには失敗してもかまわないと考え、インタラクティブな実験を設計して、予想外の反応を起こす力
ネットワーク力:自分の知識の幅を広げるために、自分とは異なるアイデアや視点の持ち主たちに会う力
ネイルチップ通販専門店MiCHi

個人ネイリストを集めてネイルビジネスをネットで行った仕組み。個人ネイリストに以下のようなモチベーションを持たせることで満足感を与えている。クリエイターが生きる仕組みというのはよいなと思う。

自分の好きなデザインを作れる満足感
隙間時間で仕事ができる柔軟性
受注生産方式のため、売れるものをつくる満足感


ビジネスモデルに詳しくない自分にとっては分かりやすいし、事例ベースで説明されるので読みやすかった。ただ一方で、特に体系的に書かれているというわけではないので、ある程度自分で整理しないといけなそうで、まだあまりできていない。


自分はビジネスセンスに乏しいと思うし、お金を稼ぎたいという気概もあまりない。とはいえ、会社という営利組織に所属いるので、ある程度ビジネスに関する知識は必要なんだと思う。技術書だと放っておいても勝手に読もうと思うけど、ビジネス書は意識して読もうと思わないと読まないとので、ある程度意識的に読んでいきたい気はする。

論文紹介:Active Learning with Efficient Feature Weighting Methods for Improving Data Quality and Classification Accuracy

今日は久々に自分の担当の社内輪読会だった。
今回はACL2014のActive Learning with Efficient Feature Weighting Methods for Improving Data Quality and Classification Accuracyを紹介した。ACL2014読み会が色んなところで開催されていたと思うけど、たぶんどこでも紹介されていなかった気がする(別に紹介されていてもいいのだけど)。

内容

最近はやりのクラウドソーシングを使ったもの。クラウドソーシングを使うと、安価で大規模なコーパスが作れるが、どうしても品質が下がってしまうので、なるべく低い労力で品質を向上したいという目的で能動学習のアプローチを利用してコーパスの品質を向上している。

感想
  • 能動学習のアプローチを取り入れたこと自体はこの論文の新規性ではないけど、コーパスの品質改善に能動学習を利用するのはよさそう。
  • 提案手法のnon-linear distribution spreading アルゴリズムは計算速度はSVMに比べて確かに速いけど、そこまで性能がよいという感じではなかった。
  • Delta-IDFのような特定のクラスに関わりが深い単語に大きい重みを割り当てるよう手法を用いて、能動学習でデータを改善すると複雑(曖昧)な問題が一向にとけなくなってしまわないかが少し気になった。能動学習の問題というよりかは素性の問題ではあるので、良い素性を設計すれば問題ない気もする。
  • 評価実験でSVM-Delta-IDF(素性にBOWのDelta-IDF)とSVM-TF(素性にBOWのTF)を利用しているが、性能はSVM-Delta-IDFのほうがよかった。どちらも素性自体は同じものを使っているはずだが、重みの初期値が違うことで、性能に変化がでていたり、学習時間が半分以下になっているのは面白い。重みの最適化をDelta-IDFを利用することである程度事前にやっていることになっているからこういう結果になっていることなんだろうか。
  • データの品質改善自体はSVM-Delta-IDFもSVM-TFもほとんど同じなのに、性能に差が出ているのが気になったけど、なぜかはよくわからなかった。


次はCOLING2014の論文でも見ようかと思ってたけど、最近だとKDDやWWWにも自然言語処理系の論文が投稿されているみたいだし、実応用を考えるとKDDやWWWのほうが参考になりそうな気がするから、そっちをチェックしたおいたほうがよいのかなと思ってる。

PyCon JP 2014に参加した

データ解析や機械学習の話が気になったので、PyCon JP 2014に参加した。
PyCon JP 2014 - connpass


会場に電源とれる場所が少なく、あまりメモ取れてなかったので、記憶をたどりながら書いてるけどあんまり覚えてない。

http://www.slideshare.net/atelierhide/py-conjp2014-slideshare
画像認識にDeep Learningを使ってKaggleであった犬の画像か猫の画像かを識別するコンテキストに参加した話で、Deep Learning(PythonのDeCAF)使ったら精度95%以上になったらしい。

http://www.slideshare.net/hamukazu/effective-numerical-computation-in-num-py-and-scipy
numpyとscipyにおける効率的な数値計算について。broadcastやindexを使うとか。

Introduction to scientific programming in python // Speaker Deck
numpy, scipy, matplotlib, scikit-learn, pandasの説明とデモ。ipython使おうというのとnumpyはjuliaよりそんなに遅くないという話をしていた気がする。

ツイートを感情分析する話。公開されているコーパスと感情語辞書を利用してNaive Bayesを使ってポジネガ判定する。精度は49%らしい。厳しい...。
最先端だと70%くらいだろうけど、せめて60%くらいは出ていて欲しいな...、英語だとコーパスとか辞書が整備されているのでうらやましい。

http://nbviewer.ipython.org/github/payashim/tutorial-opencv-python-pyconjp2014/blob/master/pyconjp2014_payashim.ipynb
OpenCVを使った画像/動画処理。OpenCVではBGRで、matplotlib, scikit-imageなどではRGBで色を保持しているので注意が必要らしい。画像処理詳しくないので背景差分とかあんまり知らない話が聞けて楽しかった。

スパム分類を機械学習(Naive Bayes)でやる話で、学習を約10行、テストを約5行でかけて簡単。関係ないけど、テキスト分類軽くしましたという話しを聞くとだいたいNaive Bayesなのはなんでなんだろう、SVMの方が精度高くでるだろうからSVM使えばいいのにとか思ってしまう。

大きい会議になると聴講者のレベルがわからないから話すの難しいそうだなと感じた。全員に分かってもらおうとして初心者でも分かる内容にすると中級者、上級者には少しもの足りなく感じてしまう。一応スピーカーが対象レベルとして初級と中級みたいに選んではいるけど、結局広く知ってもらおうとするとどうしても初心者よりになってしまいそうで、もう少し突っ込んだ話を聞きたいと思うことが何度かあった。

セッションの1つにJob Fairというのがあって、何社かが自社の開発環境とかについて話していた。結構、SlackとJIRAを使っているところが多くて、流行ってるんだなーと思った。JIRAは使ったことないけど、便利そう。

企業ブースみたいなところで、キュレーションサービスのカメリオを作っている方と少しお話をさせてもらった。テーマをどうやって選んでいるか、他のキュレーションサービスとの違い、今後どのように収益化するのかなど色々聞かせてもらっておもしろかった。

懇親会ではエンジニアのイベントに来ているのに気づいたら周りはみんな研究者や研究関係の仕事をしている方になっていておもしろかった。Web系のエンジニアとまったく話してない気がする。これもpythonが科学技術系でよく使われてるからなんだろう。それでもおもしろかったので良かった。

テキストマイニングシンポジウムに参加した

テキストマイニングシンポジウムに参加した。
第5回 テキストマイニング・シンポジウム:参加募集 - 言語理解とコミュニケーション研究会


1日目は企業の方の話が多めで公にできないことも結構あるみたいだった。

  • Twitterから抽出したプロファイルデータと購買データを組み合わせた次世代型ハイブリッド・ターゲティング

楽天NTTデータの人の話。
最初は楽天の人の話で、既存のマーケティング手法には限界があるので、Twitterなどのソーシャルなデータを活用するというもの。リコメンドで問題になる購入履歴のないユーザへの問題(コールドスタート)をTwitterのデータが活用すると緩和ができる。メールの開封率やコンバージョンを購入履歴に基づいたものとTwitterデータを活用したものなどで比較していたのがおもしろかった。
次にNTTデータの人の話。ツイートに対して、キーワード抽出やカテゴリ分類、ポジネガ判定を行っていた。なんかとにかくすごい。NTTデータというかNTT研究所がこれまで10年、20年と作ってきた辞書のなせる業(アルゴリズムもすごいだろうけど)という感じで、真似できる感じは全くしなかった。

Watsonで培った技術を基に構築したIBM Watson Content Analyticsというテキストマイニングのシステムについての話。コールセンターのデータを使ってデモをしていて、「画面がでない」がどのくらい問い合わせられてるかを簡単に可視化できる。構文解析や固有表現抽出、評判分析など深い言語処理もしているようだった。

見える化エンジン」というテキストマイニングシステムの話。ポジネガ判定の結果をアバターを使ってビジュアライズしているのがおもしろかった。それと、消費がモノからコトへ変化しているという話で、キットカットの例をあげて、メッセージをつけてキットカットをプレゼントしたというツイートをきっかけに、キットカットにメッセージなどを書けるようにして、食べるシーンを含めて売るようになったというのはなるほどなと思った。


2日目は学術よりな話。

  • ヤフージャパンのリアルタイム検索における感情分析

一番聞きたかった話。というか、元々は「ニュース記事へのユーザコメントに対する感情分析」という内容だったのでそっちの方が聞きたかったんだけど、途中で内容が変わってしまっていた。
内容はツイートの感情分析。ポジティブ、ネガティブ、ニュートラルの3種類の分類器(SVM)を作って、それを使ってツイートを分類する。素性には単語unigram, bigramと文字trigram、感情語の語彙リスト、顔文字リストを利用。ツイートみたいな文章だと形態素解析に失敗する可能性が高いから文字trigram入れてるのかな。あと、語彙リスト、顔文字リストをシードにしてラベルなしデータとの間で情報伝播して新たな感情語を取得していて参考になった。

ニコニコ動画のコメントが動画全体に対するコメントか動画の一部に対するコメントかユーザに対するコメントかを識別する。ユーザの中でも視聴者同士のコメントのやりとりを識別できるとおもしろそうだなーと思った。ブコメでも同じようなことできるとおもしろそうだ。

8月末あたりに開催されたCOLING2014に参加した方がおもしろそうな論文をピックアップして紹介。
感情分析に関する論文を取り上げてもらったので良かった。特にBest Paperの「A context-based model for Sentiment Analysis in Twitter」はどういう話か気になっていたので良かった。ツイートの感情分析でコンテキスト(前後のツイートや同ハッシュタグ)を利用した話で、結論としては単に前後のツイートを使うだけではあまり効果はなくて、ハッシュタグのように内容のあるコンテキストは効果があるらしい。余裕があったら今度読んでみよう。


久しぶりに研究会に参加した。もっとこじんまりとした研究会かと思ってたけど、200人くらい参加していて驚いた。感情分析とかテキストマイニングとかやりたくて、ちょっと来てみたけど、こういう場にくると研究したくなる。やっぱりエンジニア系のConferenceとは少し雰囲気が違う気がする。

Scala Matsuri 2014に参加した

もう1週間くらい前になるけど、Scala Matsuri 2014に参加した。
ScalaMatsuri 2014 - Scala Matsuri 2014 | Doorkeeper


今年は?Scalaを作ったOdersky先生がいらっしゃていて基調講演などをされていた。

メモ程度に気になった発表を残しておく。

http://www.slideshare.net/brikis98/nodejs-vs-play-framework-with-japanese-subtitles
node.js と play を10の視点からそれぞれを10点満点で比較していて、合計点はなんとnode.jsの勝ちだった。それでいいのかという感じだけどおもしろかった。

Code Generatorの話。言語によって実装が変わらない部分は自動化しようというもの。自動化によってコードの品質が底上げされる?みたいな話だった気がするけど、よくわからなかった。

Twitterで使われているScalding, Storm, Summingbirdの話。Summingbirdは環境構築が大変らしい。Sparkもそうなんだろうけど、こういうデータ処理系のものがローカル環境で気軽に(セットアップすれば)動かせるのはよさそうだなと思う。

Dwango mobileで大相撲アプリをScalaで作ったという話。phpつらいし、Javaもいやで、Scalaにしたという感じだった。サービスの構成やNon-Stop Deployingなど結構Mackerelと似ているところもあって参考になった。Scalaをどう学んだかという話もあって、毎朝1時間、チームのみんなでコップ本(Scalaスケーラブルプログラミング)を読んでいたらしい。業務の中で勉強の時間をとっているのは良いなーと思った。

聞いてないけど、TLではすごい盛り上がってた。Databricks - The next generation of Big Data の話で、発表中にグラフ描画してたりしたらしい。



Scala使い始めてまだ半年だし、ちゃんとScala使いこなせている感じはあまりしていないのでどうなるかと思ったけど、割と楽しめた。とはいえ、言語仕様とかちゃんと理解してないところもあるのでよくわからないところもあったし、マクロの話もあったけどなんか怖かったので聞いてない。
LL系からScalaに変えたという話がいくつかあったけど、結構Javaを書いてる人も多いのかなという感じだった。
これまで学術的な学会にしか参加したことなくて、エンジニアの大きめのConferenceに始めて参加した。やっぱり少し違うなーという感じがした。

「ビジネス活用事例で学ぶデータサイエンス入門」を読んだ

最近、データ分析に興味があるので、「ビジネス活用事例で学ぶデータサイエンス入門」を読んでみた。

ビジネス活用事例で学ぶ データサイエンス入門

ビジネス活用事例で学ぶ データサイエンス入門

1章でデータ分析について簡単に説明して、2章で以下のデータ分析のフローを紹介、
1. 現状とあるべき姿
2. 問題発見
3. データの収集と加工
4. データ分析
5. アクション
それ以降はこのフローに則って、3~6章に基礎的な内容、7~10章に応用的な内容が書かれている。


内容としては、ソーシャルゲーム会社のゲームアプリの諸問題を改善するのにデータ分析を利用するというシナリオになっていて、具体例をあげながら、フローに沿って説明されるのでわかりやすい。
書面の都合上、2の問題発見の部分が結構さらっと書かれていたりするけど、実際には1度で正解が導けることはないだろうから、色々思考錯誤するんだろう。
前に少しグロースハック的なことをしたときには、問題をどこまで細分化するかとか、この部分で結構色々悩んだ気がする。
このあたりは実際に業務とかでやって、経験的にしか学べないことも結構多いんだろうなと思うとなかなか難しい。
とはいえ、ざっくりと分析のフローが知れるので読んでみてよかった。


本には分析で利用しているRのコードが載っているので、実際に動かすといいんだけどまだやれてない。
というか、Rのコードあんまり書く気になれないので、pythonで書き直してみるか、julia触ってみたいのでjuliaで書いてみようかな。


本とは少し関係ないけど、気になるのはこういうデータ分析みたいなのはどの程度の規模のサービス、製品に対してなら有効かということ。始まったばかりのサービスに対しては、データ分析をしてもあんまり意味ないというか、データ分析より機能追加とかやるべきことがたくさんある。なので、ある程度成熟したサービスでやることが最も効果的なんだろうと思うんだけど、その境界がどのへんにあって、どういう感じで決めるものなのかなと思った。まあ、もちろん規模だけじゃなくて、ソーシャルゲームみたいなお金に直結するサービスでは必要性が高いとかサービスの性質も関係あるだろうけど。


そういえば、DATA SCIENCE FESTIVAL RECOMMEND CONTESTとかやってるみたいだから余裕があったらやってみたい