「情報検索:検索エンジンの実装と評価」1章 イントロダクション

この記事は何? 情報検索とは何か 情報検索の例 情報検索の応用分野 情報検索の専門用語 性能評価に関する専門用語 電子テキストの取扱い ターム分布 言語モデル テストコレクション オープンソースIRシステム まとめ この記事は何? adventar.org「情報検索…

【Python】フィルタを利用してSlackに通知するログを振り分ける

この記事は何? Slack通知用ハンドラの定義 Slackに通知するログを振り分ける ログレベルでSlackに通知するログを振り分けるのは? 参考 この記事は何? PythonでログをSlackに通知したいとき、logging.handlers.HTTPHandlerを継承したSlackHandlerのようなS…

【Python】Mixinクラスの継承先でインスタンス変数の定義を強制したい

Mixinクラスのメソッドの中で、インスタンス変数にアクセスしたいとします。例えば、インスタンス変数nameにアクセスするMixinクラスHelloMixinを考えます。 class HelloMixin: def hello(self): return f"hello {self.name}" HelloMixinを継承した、MyClass…

Search Engineering Tech Talk 2019 Autumnに登壇しました

はじめに どんな発表をしたの? 登壇の経緯は? 発表の内容と話しきれなかったこと ランキングモデルとリアルタイムな予測 ランキング学習における特徴量の注意 ランキングモデルの更新 ランキング学習試したいんだけど、何から始めれば良い? ランキング学…

ランク学習 Advent Calendar 2018 まとめ

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの15本目の記事です この記事は何? ランク学習 Advent Calendar 2018 をゴリゴリやってきました。 adventar.orgもう書くネタ無い。。。ので、まとめ・ランク学習を勉強するにあた…

RankSVMで得られたランクモデルをSolrにデプロイしてみる

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの14本目の記事です この記事は何? 検索エンジンの有名どころとしてSolrが挙げられますが、Solrにはランク学習によるランキングモデルで文書をランキングする機能があります。Lea…

PyTorchを用いたListNetの実装

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの13本目の記事です この記事は何? ニューラルネットワークを用いたランク学習の手法として、ListNet*1が提案されています。以前下の記事で、同じくニューラルネットワークを用い…

PyTorchを用いたRankNetの実装

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの12本目の記事です この記事は何? ニューラルネットを用いたランク学習の手法として、RankNet*1*2という手法が2005年に提案されています。 RankNetの提案自体は10年以上前ですが…

SIGIR Learning to Rank sessionから見るランク学習研究の動向(4)

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの11本目の記事です この記事は何? 以下の記事の続編です。szdr.hatenablog.comszdr.hatenablog.comszdr.hatenablog.comこの記事ではSIGIR 2016・2017・2018のランク学習に関する…

SIGIR Learning to Rank sessionから見るランク学習研究の動向(3)

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの10本目の記事です この記事は何? SIGIR 2013 Personalized ranking model adaptation for web search Ranking document clusters using markov random fields A novel TF-IDF w…

SIGIR Learning to Rank sessionから見るランク学習研究の動向(2)

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの9本目の記事です この記事は何? SIGIR 2010 Learning to efficiently rank Ranking for the conversion funnel How good is a span of terms?: exploiting proximity to improv…

SIGIR Learning to Rank sessionから見るランク学習研究の動向(1)

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの8本目の記事です。 この記事は何? SIGIR 2007 A Support Vector Method for Optimizing Average Precision Ranking with Multiple Hyperplanes A Regression Framework for Lea…

SVM-rankを使ってRankSVMをサクッと試してみる

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの7本目の記事です。 この記事は何? 以下の記事でランク学習手法の1つであるRankSVMを紹介しました。 szdr.hatenablog.comこの記事では、SVM-rankというRankSVMライブラリを紹介…

RankSVMの気持ちをざっくりと理解してみる

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの6本目の記事です。 この記事は何? ランク学習の手法は数え切れないくらい提案されていますが、2018年現在のランク学習研究でもbaselineとして使われている手法として、RankSVM…

ランク学習ってどこで使われてるの?

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの5本目の記事です。 この記事は何? 前回までの記事でランク学習とは何か、どうやって学習・評価するのかを紹介してきました。 この記事では、実際にランク学習がどこで使われて…

ランク学習と検索結果の精度評価指標

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの4本目の記事です。 この記事は何? 前回の記事で、LightGBMを用いたランク学習によるランキングモデルを作りました。 www.szdrblog.info 機械学習モデルを作ったら、次にやるべ…

LightGBMでサクッとランク学習やってみる

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの3本目の記事です。 この記事は何? 1本目・2本目の記事で、ランク学習の大枠を紹介しました。www.szdrblog.infowww.szdrblog.infoこの記事では、実際にランク学習を動かしてみよ…

ランク学習ってどうやって学習するの?学習データ・特徴量・損失関数

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの2本目の記事です この記事は何? 前回の記事でランク学習の導入を紹介しました。 www.szdrblog.info この記事では、実際にランク学習ではどのような学習データを扱うのか、どん…

ゼロから始めるランク学習

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの1本目の記事です この記事は何? 「ランク学習」をご存知でしょうか?ランク学習は機械学習の枠組みの1つで、文書の並び順を予測する手法です。 ランク学習について日本語でま…

確率変数の比の分布における平均と分散をデルタ法で求める

この記事は何? そもそもデルタ法とは 2変数のデルタ法 確率変数の比の分布における平均と分散 その他 参考 この記事は何? Yandexが出したA/Bテストに関する論文 (R. Budylin, WSDM 2018) を眺めていたら、以下のような式が出てきました。 この式は、確率変…

対応のないt検定における正規性の仮定とサンプルサイズ

この記事は何? false positive rateの確認 まとめ この記事は何? 2つの母平均の差の検定を行うとき、まずは対応のないt検定(unpaired t-test)を考えると思います。 対応のないt検定には以下の仮定が存在します。 母集団が互いに独立に正規分布に従う(独…

SIGIR2018参加記

2018/7/8-12にSIGIR 2018に行ってきたので、感想を書いていこうと思います。SIGIRは情報検索分野のトップカンファレンスであり、検索システムやレコメンドなどに関する研究を対象としています。 41回目となる今回は、ミシガン州のアナーバーにあるミシガン大…

勾配ブースティング木を用いたランク学習手法:GBrankを実装した

この記事は何? GBrankのアルゴリズム GBrankの実装 回帰木の実装 GBrankにおける勾配ブースティングの学習の実装 実装の確認・実験 回帰木の実装の確認 GBrankの実装の確認 その他 この記事は何? ランク学習は様々な手法が提案されていますが、勾配ブース…

「ベイズ推論による機械学習入門」を読んだので実験してみた(その2)

この記事は何? szdr.hatenablog.com に引き続き、「ベイズ推論による機械学習入門」で紹介されているアルゴリズムを実装・実験していきます。www.kspub.co.jp 今回は4章の「ポアソン混合モデルにおける推論」で紹介されている、ポアソン混合モデルのための…

「ベイズ推論による機械学習入門」を読んだので実験してみた (その1)

この記事は何? ベルヌーイ分布の学習 カテゴリ分布の学習 ポアソン分布の学習 1次元ガウス分布の学習と予測 その他 この記事は何? 「ベイズ推論による機械学習入門」を読んでベイズ推論を理解した気がするので、本の3章で紹介されているアルゴリズムを実験…

/etc/shadowの暗号化されたパスワードを確認

CentOS7では/etc/shadowで各ユーザーのパスワードを管理しているとのことなので、どのように管理しているのかを確認してみます。まず、CentOS7で新しくユーザー(test)を追加します。 useradd test次に、追加したユーザーにパスワードを付与します、ここでは"…

複数のインターフェースを実装したクラスに対するオーバーロード問題

2つのインターフェース(interfaceA, interfaceB)を実装したクラス TestAandB を考えます。 interface interfaceA {} interface interfaceB {} class TestAandB implements interfaceA, interfaceB {} interfaceA型のオブジェクトを引数に取る関数 test(inter…

Chainerでマルチタスクニューラルネットワークを実装した

注:この記事の実装は非効率的かもしれません. この記事は何? マルチタスク学習をニューラルネットワークに適用した研究がいくつか報告されています. 適用例として,Georgeら(2014)の研究では,タンパク質に対する化合物の活性予測にニューラルネットワー…

CNNモデル比較論文 "An Analysis of Deep Neural Network Models for Practical Applications"を読んだ

深層学習を用いた画像認識分野では様々なCNNのネットワーク構造が提案されており,ImageNetデータセット等を用いた予測精度比較が広く行われています. じゃあどのCNNモデルを使うべきなんだろう…と考えていましたが,最近こんなtweetが目に入りました.代表…

予測ランキング評価指標:NDCGの2つの定義と特徴の比較

この記事は何? 機械学習の応用例としてランキング予測があります. ランキング予測の例としてウェブページランキングがあります.GoogleやYahoo!のような検索エンジンでは,ユーザーが入力したクエリに対して適合度の高い順にウェブページをランキングし,…