サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
lab.synergy-marketing.co.jp
機械学習のツールとして、scikit-learnは非常に使いやすいPythonのパッケージとされています。 このパッケージには、例えば交差検定の評価を繰り返して、 分類器に良さそうなパラメータを「検索」してくれるGridSearchなど、 研究をスムーズに進行させるための便利な機能がたくさん搭載されています。 一方、言語処理におけるクラスタリングやクラス分類問題の手がかりとして、 文書にある単語がよく使われます。 これらの単語は、文書/文によって頻度分布に偏りがあるため、 単語頻度からなる素性ベクトルに対してtf-idfによる正規化を行うことが普通です。 scikit-learnでtf-idfを計算 scikit-learnでは、テキスト群に対してtf-idf値を計算する機能が用意されており、 TfidfVectorizerと呼ばれるクラスによりこの機能を簡単に実現できます。
こんにちは、馬場です。 シナジーマーケティングの技術者向けサイトTECHSCOREで行われているTECHSCORE Advent Calendar 2014に参加しました。この記事でGoogle の論文を紹介しましたが、ここではこの論文の翻訳メモを公開します。参考になれば。 機械学習:技術的負債を生む高金利なクレジットカード 論文はここにあります。 Abstract 機械学習を利用すれば、複雑ですばらしいシステムがすぐできる。 でも、それが「ただ」で手に入る、と考えているのなら、それは危険だ。 機械学習を利用しているシステムは、簡単に【技術的負債】をもつシステムになってしまうから。 この論文では、機械学習をシステムに導入する場合の「アンチパターン」を紹介する 1.機械学習と複雑なシステム システムには「技術的負債」というアイディアがある 解消するには「リファクタリング」「テストのカバ
東です。 諸般の事情で、手元にある大量の画像をマスク処理するという事案が発生しました。 簡単に図で説明するとこんな感じです。 PhotoShopとかその手のソフトでやればできるんでしょうが、 ・PhotoShop持ってないし。 ・PhotoShop以外でよさげなソフトってどれ? ・1,000枚とか2,000枚とかの画像を手動で処理したくないし。 そういうわけで開発することにしました。OpenCV触りたかったし。 お題 素材画像(カラー)、マスク画像(グレースケール)を与えると、素材画像のうちマスク画像の黒色の部分が透過した画像を出力せよ。 ただし、素材画像の大きさは統一されていない。 ただし、素材画像の大きさがマスク画像の大きさを超えることはない。 どうやるの? OpenCV CookBookのこのあたりにアルファチャンネル付PNG(=透過PNG)の取り扱い方が書かれていま
シナジーマーケティング株式会社R&Dでは今年で3回目となる「オープンラボ2014」を東京は2014年11月15日(土)に、大阪は2014年11月21日(金)に開催いたします。人と人、人と物との出会いから生まれる 「感じる」をより心地よいものに。 巨大な情報空間からの価値創出。その情報空間の中に散在する無数の心。 私たちは、何を社会に還元するのか。 遠くを見つめても、何も見えません。 常に自分たちを批判し、目前の現実に向き合うのです。 それが私たちの仕事です。 コミュニケーションの未来が変われば、世界は変わります。 人の心も変わります。 私たちと共に、面白い、を感じましょう、 心地よい、を感じましょう。
こんにちは、馬場です。 最近弊社R&Dでは脳の活動情報をコミュニケーションに活かす研究がホットですが、他にも観測できる生体反応はあります。例えば、声や表情、心拍や身振り手振りなどです。これらの情報は近年安価な機器で比較的簡単に測定ができるようになってきており、Intel はカメラの情報から手や指、顔の動きを記録するSDK(Software Development Kit)を公開しています。そこで、今回はこのSDKに含まれる表情認識機能を利用して簡単なアプリケーションをつくってみます。 Intel Perceptual Computing SDK とは Intel Perceptual Computing SDK (以下、PerC)は、顔や音声、手や指の動作によってアプリケーションを操作するNUI(Natural User Interface)を開発するためのSDKです。手の指の認識などには
こんにちは、馬場です。 Solrとelasticsearchを比較するシリーズ、最終回は類似文書検索機能について比較します。 Solrとelasticsearch、両方のベースとなっているLuceneにはMoreLikeThisという類似文書検索の機能が実装されています。両者とも当然LuceneのMoreLikeThisを利用して類似文書検索機能を提供していますが、API の形式などはかなり異なります。 Solrの場合 Solrでは、類似文書検索のプログラムは以下のようになります。 import org.apache.solr.client.solrj.impl.HttpSolrServer import org.apache.solr.client.solrj.SolrQuery import org.apache.solr.common.util.NamedList import
こんにちは、馬場です。 前回に続き、全文検索エンジンのSolr と elasticsearchの比較を行いたいと思います。今回はドキュメントの登録です。 クライアントプログラムはScalaで実装します。どちらもJavaのAPI を提供しているので、それを利用しようと思います。 ※ この記事では、Solr 4.6.0 とelasticsearch 0.90 の比較を行います。 Solr の場合 SolrでJava クライアント APIを利用する場合、sbt に以下のjarを登録します。 "org.apache.solr" % "solr-solrj" % "4.6.0" 次にドキュメントを登録するサンプルコードです。 import org.apache.solr.client.solrj.impl.HttpSolrServer import org.apache.solr.common.S
Stanford大学のNLP(Natural Language Processing=自然言語処理)の講義をオンラインで見ることができる、ということがわかり、さっそく復習を兼ねて基礎から勉強することにしました。 コースの全概要 https://class.coursera.org/nlp/lecture/preview 今回から、私・藤井と、同じく研究開発グループの久保のリレー形式で、このオンライン講義についてのブログを書いてまいります。乞うご期待。 1-1 Course Introduction - Stanford NLP まず初めに。NLPとは何ぞや?というイントロダクションです。 ちなみに…私の英語ヒアリング能力は、”Hi! I'm Dan Jurafsky”という最初の挨拶が “Hi! I'm dangerousなんとか”と聞こえて「センセったら危険な男なのかしら?ムフフ♡」
こんにちは、馬場です。 Luceneベースのオープンソースの全文検索エンジンとしては、Solrとelasticsearchが知られていますが、この記事では日本語の類似文書検索機能に関して、両者を比較します。この記事は機能の比較はせずに、日本語の類似文書検索を実現するにあたり設定やプログラムの実装がどのように違うのか、具体的な設定やプログラムとともに紹介します。 ※ この記事では、Solr 4.6.0 とelasticsearch 0.90 の比較を行います。 実現したいこと 類似文書検索機能をScalaで実装する 文書は日本語。 文書はID、タイトル、本文、公開日からなる。 顔文字の検索も可能にしたいので、記号もインデクシングする。ユーザ辞書を利用する ドキュメント Solr のサイトは以下です。 http://lucene.apache.org/solr/ 簡単なチュートリアルがあり
「ネットワークが遅くて、数百 MB のファイルを送るのにかなり時間かかるんですよねぇ」という話を聞いたので、使っているツールを聞くと gzip だというので、bzip2 や xz を使うといいかもしれない、というふうに答えました。あとになって実際のところどうなのかと思ったので、実際にいくつかのパターンで圧縮、伸張にかかる時間と圧縮率を測ってみました。 用意したのは 20MB, 107MB, 1.1GB の3種類のファイルで、すべてプレインテキストですが、内容はバラバラです。使ったツールは gzip, bzip2, xz です。 圧縮時間 (sec.) 20 MiB 107 MiB 1.1 GiB gzip (default)
「2013年は彗星ラッシュだ!」と騒いでいたくせに、未だ今年最初の彗星が見れていない東です。 さて前回は、LIBLINEARにおける分類時のバイアスの効果について説明しました。 では、学習時にはバイアスはどのように働くのでしょうか。 ■ バイアスと学習の関係。 前回引用したLIBLINEARの論文の2章を再掲します。 In some cases, the discriminant function of the classifier includes a bias term, . LIBLINEAR handles this term by augmenting the vector and each instance with an additional dimension: , where is a constant specified by the user. 識別関数にはバイアス
<サービス終了のお知らせ> 『声タイプ診断』に興味を持っていただきありがとうございます。 サービス開始より、予想をはるかに上回る多くの皆様に ご利用いただいてまいりましたが、音声研究活動の休止により、 本アプリの提供を 2018年2月19日(月)をもちまして 終了させていただきました。 既にインストールされている場合も、ご利用できません。 本アプリで収集させていただいたデータは、 弊社R&Dにおける音声研究活動に大きく寄与しました。 ご利用いただいた皆様、長らくのご愛顧ありがとうございました。 Synergy Marketing 研究企画チーム
2012年のゴールドラッシュに続き、2013年は彗星ラッシュということでテンション上がりまくりの東です。 さて、クラス分類(classification)ライブラリの雄LIBLINEARを試してみました。コマンドを2回叩くだけで簡単にクラス分類ができて素適なのですが、学習データによってはうまく分類できない場合があります。また、オプションもたくさんあるので、何をどう設定すればどういう効果があるのかピンとこないなど、なかなか難しいものがあります。 ここでは簡単な例を手始めに、いろいろ試して分かったことをお伝えできればと思います。 ■ まずはインストールから。 Ubuntu等にはパッケージも用意されているのですが、最新のものを使いたかったので今回はソースからインストールします。 こちらからソースファイルをダウンロードします。今回使用したのはバージョン1.93です。以前のバージョンはこちらから
こんにちは。高椋です。 先日【声タイプ診断アプリ】をリリースしましたが、アプリ開発の参考情報として、 法人で【iOS Developer Program】に登録する際のポイントと、実際にかかった時間をご紹介します。 (詳しい登録手順などは、色々なサイトで紹介されていますのでそちらをご覧ください) 【事前準備】 手続には、実在企業かどうかの確認の為、以下のどちらかが必要です。 ■登記簿謄本等をApple本社にFAX ■D‑U‑N‑S® 番号 ※「D‑U‑N‑S® 番号」は東京商工リサーチに登録があれば、無料で照会が可能です。 https://duns-number-jp.dnb.com/search/jpn/find_result.asp 照会申請後30分ほどで返信がきました 【手続き】 Apple ID作成 iOS Developer Programs 登録 ※企業の場合は
人は言葉に始まりR 言葉に終わる。R 言葉と人の心の関係をR 解き明かしたい。R どんな世界の・・・R どんな物語も・・・R 言葉に始まりR 言葉に終わるR この取り組みにR 明確なゴールはない。R 直感で進むと壁にぶつかる。R ぶつかるたびにR 何かが壊れて破片が砕け散る。R その破片からいろんなものをR 見つけるだけだ。R R 自分たちを信じよう。R 自分たちの直感を信じてR 前に進もう。R R 研究企画チームR 谷田 泰郎R
前回に引き続き PROBABILISTIC REASONING IN INTELLIGENT SYSTEMSの第4章を読みます。 おまけとして、ベイジアンネットワークの実装で良く用いられるJunction Tree Algorithmについても解説資料をまとめてみました。 実用的なベイジアンネットワーク上の推論ではループ(loop≠cycle)の存在を考慮する必要があります。 確率伝播のメッセージは矢印の逆向きにも伝わるため、循環して結果が揺らぐためです。 ループの対処法は大きく三つ存在し、ここでは一つ目の手法をいくつか取り上げています。 グラフを変形してループを無くしてから推論を行う シミュレーションで求める ループがあっても気にせず確率伝播を計算し、結果が収束するのを期待する 二つ目と三つ目については別のメンバが解説してくれた/してくれる予定、なのでそのうち共有できるかも知れませ
7月15日(日)に実施された UX KYOTO #05 に参加してきました。 今回は、前回の半構造化インタビューと評価グリッド法で整理されたデータを用いて、シナリオを作成する「構造化シナリオ法」です。 浅野先生がかねてより、この「構造化シナリオ法」を体験することで、ペルソナ・シナリオ法の理解がグッと深まるとおっしゃってましたのでワクワクしながら参加でしたが、期待通り「アハ体験」できました! 先生の講座やワークショップのポイントだと感じた事を、徳見の感想も交えて紹介します。 ビジネスニーズ サービスやプロダクト制作の構成要件は以下の3つがあります。 技術的シーズ デザイナやエンジニアがやりたくなるアプローチ 利用状況の分析 HCDによるアプローチ ビジネスニーズ デザイナやエンジニアはここが弱い そこで、最近注目されている「ビジネスモデル・キャンバス」を3つの視点に分けて紹介してくだ
久保です。 自然言語処理のStanford大学の講座シリーズの続きです。 前回はWord Tokenazionをやりました。 今回は『Word Normalization and Stemming』、単語の正規化(Normalization)と語幹化(Stemming)です。 講義の映像は下記から見られます。 Word Normalization and Stemming (11:47) Normalization 例えば情報検索(IR)においては、インデクシングされたものとクエリの単語が同じform(形式)である必要があるので、単語の正規化が必要になります。 今「USA」と「U.S.A」を考えてみると、対応の仕方として U.S.Aのピリオドを削除する 検索の単語を展開する(window -> window, windows) という方法があります。 Case folding 情報
こんにちは、東です。 お仕事でScalaからRDBをアクセスするのにScalaQueryを使っています。 ScalaQueryで「格納できる値が制限されているカラム」を素敵に取り扱う方法についてご紹介します。 条件設定 下記のような社員管理用の簡単なテーブルを考えます。 CREATE TABLE employee ( id INT, name CHARACTER VARYING, department CHARACTER VARYING ); 部署名には'FINANCE'や'RESEARCH'などの英語部署名が文字列で格納されるとします。 また、この会社には'FINANCE'、'RESEARCH'、'MARKETING'の3つの部署しかなく、これ以外の文字列は登録されないものとします。 素直な実装 上記のテーブルにアクセスするコードをScalaQueryで素直に実装すると、以下のよう
前回に続き「2. 与えられたデータセットを使ってネットワーク構造を学習する」の手順を説明します。 Wekaではベイジアンネットワークは分類器の一種です。 分類器とは、あるデータを少数のカテゴリに分類するもので、既知のデータから未知のデータを推測することが出来ます。 既知のデータを使って、分類器がデータを分類できるようにすることを「学習」といいます。 Weka Explorer を使うと分類器の学習と評価が出来ます。 例題として、ユーザの行動から予想される購入サービスを「分類」するという問題を考えます。 「集合知プログラミング」第7章、表1のデータを使います。 これは、あるウェブサイトでのユーザの行動と購入サービスを関連付けたものです。 操作の流れは以下のようになります。 ユーザの行動とそのユーザが購入したサービスのデータを入力する 学習アルゴリズムを決定し、パラメータを入力する
日曜日に、UX KYOTO #03 に引き続き #04 に参加してきました。 今回も懐かしい御池ビルにあるはてな さんにて。(昔この御池ビルの会社で働いていた) 今回は、半構造化インタビューと評価グリッド法の体験です。 ワークショップに入る前に、浅野先生より説明がありましたので、ポイントだと思うところをピックアップします。 ペルソナ/シナリオ法(半構造化インタビューと評価グリッド法) たった1人のためにデザイン 100%の人を満足させるより10%の人が100%満足 「すべての人」「より多くの人」ためのデザインをという考えは、結果的に誰も満足しない、というのは、デザインに携わる人には当然になってきていると思いますが、そうでない人にはまだまだ浸透していない気がします。 浅野先生が分かりやすい例をいくつかあげて下さっていたので、紹介します。 右手でも左手でも使える物を作ると結局使いづらい。
最近気になっている「パターンランゲージ」。 学生時代、建築学科であった私は習ったはずだけど、キレイサッパリ忘れてしまったので勉強しなおそう! と思ったのはいいけど、本がとっても高いぞ、うーむ・・・ そんな感じでウダウダしていたら、HCD-net で講演されていた井庭先生の講義が iTunes U で公開されている事を知ったので、まずは授業を受けてみることにしました。(馬場さんを真似っこ) KEIO SFC on iTunes U:http://itunes.sfc.keio.ac.jp/ アウトプットから始まる学び Output-Driven Learning 与えられた知識をインプットするだけが、学びではない。 「はなす」ことでわかる Release of Thoughts 自分の考えを「話す」ことは、自分からその考えを「離す」こと。 井庭先生の「学習パターン」より 井庭先生
こんにちは、馬場です。 はい。無事完走しました! 報告がだいぶ遅くなりましたが、第9週、第10週の内容と講義全体の総括をしたいと思います。 16. 異常検出 今回は異常なデータを検出するアルゴリズムです。例えば、洪水などの災害の検知や製品を作る上で異常なものを除く場合に利用します。まず、データが平均μ、分散σの正規分布だと仮定します。この平均や分散は、学習データから算出します。すると、この情報から特定のデータの出現確率が求められます。そして出現確率があるしきい値εよりも小さい場合に、異常と判定するのです。 異常検出モデルを作成する場合にデータを収集した場合、当然異常データが含まれているとしてもほんのわずかでしょう(だって異常なのですから)。このデータをクロスバリデーション用のデータと学習データに分ける場合、学習データは正常データのみで作成し、クロスバリデーションデータやテストデータに、異
8月26日(日)に一旦最後となる UX KYOTO #06 に参加してきました。 今回は、ペーパープロトタイピングです。 ポイントを徳見の感想を交えて紹介します。 ペーパープロトタイプと ペーパープロトタイピング ペーパープロトタイプとは、仕様書段階で作成される手書きなどのラフなプロトタイプ。 ペーパープロトタイピングとは、ペーパープロトタイプを使ったユーザ評価のことを言います。 ペーパープロトタイピングの種類 スケッチ(観察) ◯ ワイヤーフレーム(ストーリーボード) ◯ モックアップ プロトタイプ(評価) ◯ 思考発話法 ◯ オズの魔法使い ◯ ストーリーボーディング 思考発話法はユーザビリティ問題点の発見に向いていますが、ストーリーボーディングは画面単体ではなくユーザのやりたいコトをビジュアル化できるので、UXのデザインに向いています。 また、シナリオとタスクとシー
久しぶりの投稿です。 ベイジアンネットワークの理論についての社内勉強会で作った資料を共有します。 PROBABILISTIC REASONING IN INTELLIGENT SYSTEMS を分担して読むというもので、私は4章の前半を担当しました。 ポイントは以下の通りです。 確率分布の変化を計算する方法として確率伝播法がある 確率伝播法はループの無いネットワークでしか使えないが、大きなメリットがある 証拠が与えられたノードが隣接ノードに対して”メッセージ”を送り、隣接ノードはさらにその隣接ノードにメッセージを送る、という計算モデルである メッセージの計算において、グラフの形から読み取れる条件付き独立の性質を使うことで、個々が局所的に計算出来るような式に分解できる 複数のノードがお互いに影響を及ぼし合い続ける、という堂々巡りの状態を避けるために、元々の確率分布は変えずに、変化した後の
こんにちは、馬場です。 本番の講義終わりました! あとは、この連載も完走します。今回は第7週、8週の内容です。 13. サポートベクターマシン 教師あり学習のオオトリは、SVM=サポートベクターマシンです。 SVM も ロジスティック回帰のように、分類をするアルゴリズムです。特徴は、「large margin classifier」と呼ばれるもので、 「境界線を引く場合、学習データより遠いところになるように引く」というものです。 また、「カーネル」を変更することにより、境界線の形が変わります。linear kernel の場合、境界線の形が直線になりますが、Gaussian kernel の場合は、境界線が複雑な形になりますので、ロジスティック回帰で高バイアスが原因でうまく分類できない場合はおすすめです。ただし、Gaussian kernel を選択した場合入力ベクトルが学習データの
皆さんこんにちは。増田です。 研究開発GではBlog執筆レースが密かに繰り広げられており、記事数、PV数を競って各メンバーが空き時間を見つけては、涼しい顔して実は必死にBlogを書いています。スタートが出遅れた私ですが、Herokuというネタの金脈を掘り当てたので時間さえあればバンバン記事を書いていきたいと思います。 今回のテーマは、Heroku上でコマンドを定期実行するためにはどうするの? といったテーマに触れてみたいと思います。 コマンドの定期実行 そもそも指定時刻にコマンドを実行するには、どのようにしていますか?まさか、PCの前にスタンバイし、時計とにらめっこして時間が来たらEnterをエイヤッ!と叩いてるなんて訳ないですよね。Unix系のOSには、コマンドを定時実行するためのとても便利なコマンドが備わっています。 crontab(クロンタブ、あるいはクローンタブ、クーロンタブと
こんにちは。馬場です。 ブログさぼっている間に、講義はとうとうラスト10週目に突入です! が、今回は第5週、第6週の講義の内容を紹介します。 9. ニューラルネットワーク 前回ニューラルネットワークがどのようなモデルなのか、説明していました。今回は学習データよりモデルを計算する方法について説明しています。まずは、尤度関数です。ベースはロジスティック回帰の尤度関数と同じなのですが、それが組み合わせているので、強烈なΣ祭りとなっていました。思わず面食らったのでここでは紹介しません! 次に、尤度関数の値が最小になるようなパラメータΘの算出方法について、説明していました。要は学習データの数だけ、フォワードプロパゲーションとバックプロパゲーションを繰り返すのですが、ここでAndrew先生。 今までのアルゴリズムよりかなりごちゃごちゃしているので、今からその心を教えます。 といって、説明を始めまし
こんにちは、馬場です。 今回は第3週、第4週の講義の内容を紹介します。 6. ロジスティック回帰 ロジスティック回帰は教師あり学習の一種で、正解が離散値となるような問題を解決するためのモデルです。 例えばこんな問題です。 モデル関数で、腫瘍の大きさと患者の年齢から腫瘍が悪性である確率を計算します。 ○と×の境界に直線をひくような感じです。直線の右上にいけばいくほど悪性の可能性が高く、左下に行くほど良性の可能性が高くなります。 授業では具体的にモデルの関数とその尤度関数を紹介した後、最急降下法でパラメータを算出する手法を紹介していました。 そこで、最終的に解く式がなんと線形回帰と同じに!これなら以前作ったプログラムをロジスティック回帰問題を解くのにも使えます!! まあそうなるように、かつそれらしくなるようにモデルを作ったんでしょうけど。 この分野は、他の自然科学より「私は世界をこ
次のページ
このページを最初にブックマークしてみませんか?
『Synergy LAB | シナジーマーケティング株式会社 R&D』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く