REQLY開発ブログスマートフォン用の表示で見るREQLY開発ブログプロの料理レシピ専門検索エンジンREQLY(レクリー)の開発ブログです。この広告は、90日以上更新していないブログに表示しています。機械学習はじめにこんにちは。エンジニアのkenboです。レシピ検索エンジンREQLYでは、検索フィルタを活用することで検索ワードを入力せずに検索をすることも可能です。「スイーツ作りにチャレンジしたいけど何を作ろうかな・・・」という場合には、「スイーツ」と「簡単」をフィルタにセットして検索すれば、きっと良いレシピが見つかるはずです。ところで、REQLYではどのようにして各レシピが「スイーツ」であるか判断してるのでしょうか?今回はそんな機械学習の舞台裏をお見せします。reqly.tokyoルールベースによる分類?どのようにすれば、レシピがスイーツであるか判断できるでしょうか?例えば、多くのスイーツには「砂糖」と「卵」の両方が使われているように思います。この考えをもとに決定木を作ってみましょう。残念ながらこの条件では、チョコバナナ、ゼリー、だし巻き卵のような場合にうまく分類できないことがわかります。追加で「チョコ」や「みりん」を加えようと考えるかもしれませんが、それでも上手くいかない例は無数にあるでしょう。このように、スイーツかどうかの判断には複数の材料を考慮する必要がありますが、そのような識別器を人手でルールベースで構築していくことは現実的ではありません。Forestという方法です。Forestを用いれば、コンピュータが自動でルールを作成してくれます。Forestは、コンピュータが決定木を複数作りそれらの多数決を取ることで分類をおこなう手法です。イメージ図を見ながら、分類の流れを確認していきましょう。Forestの概念図まず、決定木をN本作成します。各決定木は、全データ集合から独立に生成されたN個のサブサンプルをそれぞれの教師データとして学習されたものです。この際、それぞれの決定木が使うことができる説明変数もランダムに選ばれます。従ってこれらの決定木は互いに異なり、同じ入力に対しても出力が異なる場合があります。識別の際には、N本の決定木の出力の多数決を取ることで全体としての出力を決定します。Forestの大きな特徴です*1。教師データと説明変数の両方をランダムに選択することで、互いに相関の低い決定木を作成し汎化性能をあげています。Forestのメリットは、以下のような点が挙げられます。Forestを用いてスイーツ識別器を作成してみましょう。教師データとして、正解ラベルが付与された計3305件(正例と負例がおよそ半分ずつ)のレシピデータを用意しました。それぞれのレシピデータは、各食材がそのレシピに含まれているかどうかの480次元のバイナリ特徴ベクトルに変換できます(図3)。レシピデータを特徴ベクトルに変換これらのデータに対し、Pythonの機械学習ライブラリであるscikit-learnを用いてスイーツ識別器を作成しましょう。デフォルトのパラメタで推定してみます。y_test)))結果Accuracyは95.81%ほどであり、この時点でほとんどのレシピを正しく分類できていることがわかります。精度はほぼ十分なのですが、念のためもう少し粘ってみます。Searchと呼ばれるものがあります。Searchを実際に試してみましょう。探索パラメタの候補は、それぞれ以下のように設定しました。Searchも、先ほどのscikit-learnを用いることで手軽におこなえます。{}".format(cv.beast_params_))その結果、最適だと判断されたパラメタと精度は以下のようになりました。Searchを用いることで1%ではありますが精度の改善が見られました。問題設定によっては大幅な改善が見られることもあります。最後に、どの特徴量がスイーツ識別に重要であるのか上位10件を見てみましょう。特徴量重要度Top10予想通り、砂糖が圧倒的に重要な要素となっており、次いでチョコレートや卵などが上位に現れていることが分かります。同時に、醤油やコショウのようにスイーツではないということを判断するのであろう情報も上位に現れているのが興味深いですね。まとめREQLYでは、この他にも様々な機械学習の手法を用いることで、高機能な料理レシピ検索を実現しています。一度使ってみてください。reqly.tokyo*1:このように複数の弱識別器の結果を統合する方法をアンサンブル学習と言います。こんにちは!エンジニアのkenboです。»プロフィールid:reqly-tokyoプロの料理レシピ専門検索エンジンREQLY(レクリー)の開発ブログです。アーカイブはてなブログをはじめよう!reqly-tokyoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。