タグ

ブックマーク / d.hatena.ne.jp/nokuno (10)

  • Cracking the Coding Interview - nokunoの日記

    プログラミング面接について扱った名著Cracking the Coding Interviewの第5版が日Amazonに入荷された…と思ったらあっという間に在庫切れになっていました.Amazon.co.jp: Cracking the Coding Interview: 150 Programming InterviewQuestions and Solutions: Gayle Laakmann Mcdowell: 洋書 このは先日はてなブックマークで盛り上がっていたTwitter面接のエントリで紹介されていました.Twitter 社採用面接受験記 - elm200 のノマドで行こう! 同じ著者による書籍として,The Google Resumeがあります.Amazon.co.jp: The Google Resume: How to Prepare for a Career an

  • K-meansアルゴリズムの導出 - nokunoの日記

    引き続き東大の「創造情報学連携講義VII」より栗原さんの課題2を解きました。創造情報学連携講座 問題個のデータをk個のクラスタにクラスタリングしたい。このとき番目のクラスタの中心をとして、minimize: となるような各データからクラスタへの割り当てとクラスタ中心を求めるためのアルゴリズムとして以下のk-meansクラスタリングが導出できることを示せ。 クラスタ中心をランダムに初期化する 収束するまで以下を繰り返す ステップ1:それぞれのデータ点に最も中心が近いクラスタを割り当てる ステップ2:それぞれのクラスタの中心をクラスタ内のデータ点の平均によって計算する 回答 ステップ1ステップ1では、 を固定して を更新する。minimize: for all これの最小化は全てのに対し、データ点に最も中心が近いクラスタを割り当てることで達成される。minimize: for all iよって

  • Evernoteのアーキテクチャ概要 - nokunoの日記

    みなさん、Evernoteは使っていますか? Evernoteは「全てを記憶する」が合言葉のメモアプリで、クラウド上にデータを保存してWin/Mac/iPhone/Webから共通のデータにアクセスしたり同期したりできるのが特徴の便利なサービスです。開発元はシリコンバレーの会社ですが、日人のユーザも非常に多いそうで、Evernoteの使い方についての記事は日語でも星の数ほどありますのでここでは触れません。 今回は、そのEvernoteの裏側のシステム概要を解説する記事が今月開設されたばかりの技術ブログに公開されていましたので、翻訳してみました。Architectural Digest | Evernote Tech Blog はじめにこのブログの手始めとして、Evernoteの構築について大雑把な概要を述べる。ここではそれぞれのコンポーネントの詳細に踏み込むことはしない。それらについての

    agw
    agw 2011/05/29
  • 第6回アルゴリズム勉強会に参加しました - nokunoの日記

    というわけで、第6回アルゴリズム勉強会に初めて参加してきました。アルゴリズム勉強会 : ATND 場所は六木黒崎ビルの株式会社Speeeさんの会議室。以前GREEが入っていた(今はアリエルネットワークになっている)フロアの下らしいです。勉強会の内容はアルゴリズムイントロダクションを順番に読んでいくもので、自分は原著の分厚いIntroduction to Algorithmsを持って行って参加しました。今回は第5章「確率的解析と乱択アルゴリズム」でした。確率が出てくるので、慣れていないと躓きやすい&実装があまり出てこないので、飽きやすい部分です。自分も一年くらい前に12章まで読んだときは飛ばしてしまいました。なお、このは版によって内容と構成が大きく違うので、旧版をお持ちの方はご注意ください。雰囲気としては、発表なしの輪読会なので文を朗読したり黙々と練習問題をこなしたりホワイトボードで解

  • Googleのエンジニアに必要とされるスキルセットは何か? - nokunoの日記

    以下のQuoraの翻訳です。この質問に対して、秘密主義で知られるGooglerたちが答えているのがいいですね。What are the skill-sets needed to be a Google Engineer? - QuoraGoogleエンジニアに必要とされるスキルセットは何か? 回答1ほとんどのプログラマはブラックボックスを使用しています。データベースはブラックボックスです:SQLを与えると、答えが返ってきます。コンパイラもまたブラックボックスです:ソースコードを与えると、実行バイナリ(またはエラーメッセージ)が返ってきます。たくさんのプログラマがこれらのブラックボックスを所与のものとして扱うことでハッピーになります。よりよいプログラマは、そのなかで何が起こっているのかを不思議に思い、中身を開けてみてみるのです。私が言いたいのは、Googleエンジニアに必要とされているス

  • nokunoの日記

    nokuno Software Engineer at a Web Company. Interested in Natural Language Processing, Machine Learning, and Data Mining. Skillful in C/C++, Python, and Hadoop.

  • 動的計画法再入門(1) - nokunoの日記

    プログラミングコンテストチャレンジブックを読みながら、動的計画法の復習をしています。プログラミングコンテストチャレンジブックこのはコンテストの紹介とか環境構築の説明はほとんどなく、普通にアルゴリズムの教科書として優れているのでタイトルに騙されないようにしましょう(笑)。それはさておき、この記事ではp.52のナップサック問題を例に、動的計画法の考え方と実装方法について検討してみます。 ナップサック問題重さと価値がそれぞれw_i, v_iであるようなn個の品物があります。これらの品物から、重さの総和がWを超えないように選んだ時の、価値の総和の最大値を求めなさい。制約:1 1 1 <例>入力:n = 4(w, v) = {(2,3), (1,2), (3,4), (2,2)}出力:7 (0,1,3番の品物を選ぶ) 方法1最初に書いたコードがこれです。再帰による全探索で、荷物を左から順番に選んで

  • 協調フィルタリングのグラフィカルモデル - nokunoの日記

    協調フィルタリングとはAmazonのお勧めのように「この商品を購入した人はこんな商品も購入しています」という情報を用いて推薦をする手法です。グラフィカルモデルはベイジアンネットワークとも呼ばれ、最近一部で流行している機械学習の手法です。今回は、協調フィルタリングをグラフィカルモデルで表現したらどのようになるだろう、と考えて思いついたアイデアを紹介します。 今、ユーザuとアイテムiの組{u,i}のデータが大量に与えられているとします。例えばソーシャルブックマークならユーザとブックマークしているページの組み合わせ、E-commerseならユーザと購入した商品の組み合わせ、などです。ここではSBMを例に考えるので、はてブと同様にユーザはマイナスの評価を付けることはできないものとします。 このときユーザuに対してお勧めのページを推薦することを考えると、ユーザuがまだブックマークしていないページiに

  • Googleを支える技術 - nokunoの日記

    読んでいて楽しくなってくる技術書は久しぶりでした。Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)作者: 西田圭介出版社/メーカー: 技術評論社発売日: 2008/03/28メディア: 単行(ソフトカバー)Googleの公開論文や公式ブログをベースに、検索エンジンや分散処理の技術について、日語でわかりやすく解説されたです。著者の西田さんは、未踏ユースのスーパークリエータ。やはり未踏出身のエンジニアには、「文章も書ける、プレゼンもできるプログラマ」としての希少価値があるのだなあ、と思います。 目次第1章 Googleの誕生第2章 Googleの大規模化第3章 Googleの分散ストレージ第4章 Googleの分散データ処理第5章 Googleの運用コスト第6章 Googleの開発体制 このうち第1章が検索エンジンに関する部分で、残りはほと

  • 「Googleを支える技術」に載っていない日本語検索エンジンの技術 - nokunoの日記

    Web検索エンジンは、大きく分けて次の2つからなります。利用者からのクエリーを直接受ける検索サーバ検索サーバから利用されるインデックス世界中のWebサイトを集めてきて解析し、インデックスに登録するクローラインデックスというのは、利用者から検索される単語をあらかじめ列挙しておいて、単語からWebサイトのURLを引くのに必要なデータ構造のことです。検索エンジンはGoogleを支える技術にあるように、「下準備があればこその高性能」なわけです。 インデックスを作成するためには、あらかじめWebページの内容を単語に分割する必要があります。英語では単語と単語の間をスペースで区切るため、この作業はさほど難しくありません。しかし日語では、単語の境界はそれほど自明ではないため、日語特有の処理をする必要があります。 日語の文から単語に分解するには、形態素解析を使う場合と、N-gramを使う場合があり、そ

  • 1