Yahoo!不動産のフロントエンド、バックエンドの開発を担当しているアンドン聖司と申します。
Yahoo!不動産では、店舗での対面接客と同等の物件提案が体験できるようなサービスを目指し、AIがアシスタントとなってユーザーの物件探しをお手伝いをしてくれるような機能を提供しています。深層学習やクラスタリングといった技術・手法を用いて、このAIアシスト機能を提供しています。
先日のYahoo! JAPAN Tech Conference 2022の内容をベースに、これらの技術の紹介と、登壇で語りきれなかった内容をご紹介します。
AIアシスト検索とは
従来の不動産サイトでは、ユーザーが条件を設定して絞り込みを行い、物件の検索を行います。(市区町村や最寄り駅、間取りなど)
ユーザーの趣向や意図を適切にくんで、不動産サイト側から物件をレコメンドしてくれるような機能はほとんどありません。
それに対し、Yahoo!不動産のAIアシスト検索ではさまざまな軸で物件のレコメンドを行っています。
- 価格軸
- 家賃相場よりお得な物件をレコメンドしたり、敷金・礼金がない初期費用が安い物件などの物件の価格に関する切り口でレコメンド
- パーソナライズ軸
- ユーザーの今までの検索傾向からおすすめの物件をレコメンドしたり、ユーザーの属性に適した物件をレコメンド
- クチコミ軸
- ユーザーが投稿した各物件のクチコミ情報を用いて、ユーザーの総合的な評価が高い物件や、治安・安全の評価が高い物件などの指標ごとにクチコミ評価が高い物件をレコメンド
- 画像軸
- 機械学習で算出し、物件の外観画像が美しい物件を物件をレコメンド
- その他の軸
- 「一度は住みたい!人気デザイナーズ」といったデザイナーズ物件や、タワーマンションなど、テーマに沿った物件のレコメンド
現在AIアシスト検索では、これら5種類の軸を計27軸提供しています。
この中から、パーソナライズ軸、クチコミ軸、画像軸の3つにおける物件のレコメンドをどのような技術・手法を用いて実現しているのかを紹介します。
パーソナライズ軸のレコメンド実現手法
パーソナライズ軸では、まずユーザーの行動履歴を用いてユーザーを5種類のクラスタに分類をします。
その後、各クラスタに分類されたユーザーがよく見ている物件を、クラスタごとにまとめてリスト化します。
最終的リスト化した物件を「あなたの検索傾向からおすすめ」の軸としてレコメンドします。
まず、ユーザーのクラスタリングについて紹介します。
Yahoo!不動産に訪問したユーザーの行動ログを抽出し、クラスター分析を行っています。
クラスタリング手法としては、実行速度が速く拡張性の高いk-means法を用いています。
クラスタリングに用いるデータとして、今回は各ユーザーがアクセスした物件や、お問い合わせした物件などの物件情報。そして、各ユーザーの年齢・性別や、物件検索時の検索条件を素性データとして用いています。各素性データの組み合わせをいろいろなパターンに入れ替えてクラスタリングを行いました。
クラスタリングの結果としてこのような5種類の分類結果が得られました。
今回は各分類結果の特徴から、下の図のような5つのユーザークラスタを定義しました。
ユーザーのクラスタ分類ができましたので、次に各クラスタごとにレコメンドするための物件リストを生成します。
各クラスタについて主成分分析を行い、それぞれのクラスタにおいてどの指標が重要なのかを分析します。
分析により算出した重みをPV数、問い合わせ数、滞在時間などの指標に掛け合わせ、物件ごとのスコアを算出します。
これにより、各クラスタのユーザーが見ている物件をスコア化し、最終的にこのスコアが高い順で物件のレコメンドを行っています。
クチコミ軸のレコメンド実現手法
クチコミ軸では、物件のクチコミ内容と、各評点を元に独自の計算式でスコア化を行います。
算出したスコアを用いて、ユーザーの評価が高い物件、建物・お部屋の満足度が高い物件、デザイン・外観の評価が高い物件など、各指標ごとにスコアが高い順にレコメンドを行います。
Yahoo!不動産では物件のクチコミをユーザーが投稿するサービスを提供しています。
お部屋の満足度、周辺環境・交通など、9種類の観点でクチコミが投稿できます。また、各観点についてそれぞれ点数とコメントをつけられます。
クチコミ軸のレコメンドでは、このクチコミ情報を用いて物件のスコアを算出します。
クチコミ数による課題
計算式としては、クチコミ点数の平均点、クリック率、点数が3以上のコメントの総数、それぞれを足しあわせてスコアの算出を行っていました。
しかしこの計算式ではクチコミの数が考慮できていないため、信頼性の低い、クチコミ数が少ない物件が上位にきてしまいます。
下の図のようにクチコミ数が1件で平均点が5.0の物件のスコアが5.123点、クチコミ数が30件と多く、平均点が4以上と複数のユーザーから良い評価を得ている物件が4.842点となっています。
二項分布の信頼区間で改善
そこで、計算式の改善を行いました。
クチコミ件数が多く、平均のレビュー点数が高い物件を上位に表示させるために、二項分布の信頼区間の性質を利用しました。
二項分布の信頼区間にはクチコミ件数(サンプル数)が多いほど狭くなっていく性質があります。
下の図のように、クチコミ数が1で平均点が5の場合、信頼区間は広くなるため、その下限値は低くなります。
対して、平均点数が4.6、クチコミ数が30の場合、信頼区間が狭くなり、その下限値は高くなります。
このように、クチコミ点数の平均値ではなく、この信頼区間の下限値を用いてスコアの算出を行いました。
改善後のスコア算出結果がこちらです。
レビュー件数の少ない物件のスコアは単純な平均点数より小さく見積もられます。
また、クチコミ数が多いほど徐々に平均点数に近づいていきます。
クチコミ平均点が全て4でクチコミ数が10、100、1,000と増えていくと、徐々にスコアの方も上がっていきます。
このような計算式によって算出した物件のスコアを高い順に並べて、最終的に物件のレコメンドを行っています。
画像軸のレコメンド実現手法
続いて、画像軸のレコメンドについてです。
Yahoo!不動産の物件情報における、不動産会社から入稿される物件の外観画像には、入稿ミスなどによって物件の外観画像ではない、物件の間取り図の画像が含まれている場合があります。
そこで、画像軸のレコメンドでは、まず機械学習を用いて画像をカテゴリ分類し、間取り図を除外することで、外観画像のみを抽出します。
その後、外観画像を解析し、画像の美しさをスコアリングします。
最終的に外観画像のスコアが高い順に物件を並べ、ユーザーに対し「外観がかっこいい物件」としてレコメンドします。
このような画像軸を実現する際の技術・手法について次に説明いたします。
まず機械学習(深層学習)を用いて画像をカテゴリ分類し、間取り図を除外することで、外観画像のみを抽出します。
(EfficientNetベースモデルの画像の出典:EfficientNet: Improving Accuracy and Efficiency through AutoML and Model Scaling - Google AI Blog(外部サイト))
EfficientNetという画像認識において処理時間を抑えつつ、高精度な性能を持っているモデルをベースにモデルの作成を行っています。
Yahoo!不動産が持っている間取り図、洗面、外観といったラベル付けがされている画像を用いて、ベースのモデルから転移学習を行い、81カテゴリに画像を分類する、新たな不動産用のモデルを作成しました。
作成したモデルによる分類結果がこちらです。
学習データ170万枚、テストデータ19万枚でテストを行い、81カテゴリの分類では74.24%、間取りとそれ以外の画像の分類では99.24%と良い結果が得られました。
次に外観画像のスコアリングを行います。
外観画像のスコアリングにはGoogleのNIMAをベースにしたモデルを使用しています。
NIMAとは画像が技術的に審美的に美しいかを採点するCNNベースの画像評価モデルです。
今回はこのモデルを軽くするために蒸留を行い、軽いモデルで学習を行っています。学習には不動産のデータではなく公開データを利用しています。
作成したモデルによるスコア算出結果がこちらになります。
賃貸物件の外観画像1万枚を用いてテストを行いました。
上の図のように、結果としては、基本的に外観画像が綺麗なものがスコアが高く判定されましたが、間取り図のスコアが高くなることや、一部のスコアが高い画像に違和感があるといった課題が残っています。こちらについては今後不動産のデータを用いて学習を行うことで精度をあげていく予定です。
おわりに
以上がAIアシスト検索の物件のレコメンド機能の実現方法の紹介でした。
Yahoo! JAPAN Tech Conference 2022の登壇動画アーカイブもありますので、興味をもたれたかたはぜひご覧になってください。
今後の展望としては、学習モデルの改善や、ユーザーのクラスタリング精度の向上を行っていきたいです。
クラスタリングのデータ更新をリアルタイムに行ったり、Yahoo!不動産以外のデータを使った学習を行うことでより高精度なレコメンドができると考えています。
また、現状の画像軸では外観画像が美しい物件のみレコメンドしていますが、他に入稿されるお風呂、キッチン、トイレ、景観などを抽出し、それらが綺麗な物件をレコメンドする予定です。
さらに将来的には、地図UIや検索条件の拡張・緩和をレコメンドするような対話型学習を用いてよりインテリジェンスな機能を提供したいと思います。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました