Kaggleは凄かった! 更に簡単な出品を目指して商品の値段推定精度を改善中
Kaggleは凄かった! 更に簡単な出品を目指して商品の値段推定精度を改善中:
皆さん、こんにちは機械学習エンジニアの @hurutoriya です。
2018/05/09 にメルカリが開催した Kaggle Competition である「Mercari Price Suggestion Challenge」の閉会式を行いました。
「Mercari Price Suggestion Challenge」では実際に米国版メルカリで販売された商品データを公開して、参加者の皆様に商品の値段推定精度を競い合っていただきました。
Mercari Kaggle Competition: Closing Ceremony 2018 - connpass
この閉会式は「Mercari Price Suggestion Challenge」の上位者(ロシア・ポーランド・中国)と日本人上位入賞者を招待して、各種上位者の解法やKaggleに対する考え方をパネルディスカッション形式でお話を聞かせていただきました。
今回はカーネルオンリー(計算機資源と計算時間の制約)というルールも相まって、面白いコンペになったのではないかと思います。
当日のパネルディスカッションの動画も公開準備を終えたのででこの場をお借りして共有させていただきます。
フリマアプリ「メルカリ」は、お客さまが自由に値付けが行った後にメルカリ上で出品されます。
この値付けに関連する問題として分かりやすい例では
解決策として、
値段推定タスクにおいては、Root Mean Squared Logarithmic Error: RMLSE で評価しています。
定義は
RMLSEは直感的にわかりにくい指標なので、可視化して説明します。
以下の図は¥3,000の値段の対するRMSLEの誤差の範囲を可視化したものになります。
横軸がRMSLEの値、縦軸が対応するRMSLEの誤差範囲となっています。
ログ基準での指標になっているので、RMLSEが1.0の場合、
今回開催したKaggle Competition 1st winner が公開しているモデルは RMLSE: 0.3875 (公開されている75行のカーネル) を叩き出しており、
1位のチームによる100行未満で書かれた Code Golf が公開され、機械学習チーム全員がこのコードの簡潔さと美しさに驚きました。
Mercari Golf: 0.3875 CV in 75 LOC, 1900 s | Kaggle
100行に満たない短さですが、洗練されたPythonコードでMLPのモデルを実現しています。
実際に1位のチームの解法を米国版メルカリ最新データに対して適用しても、米国版メルカリで既に運用されている既存手法よりも圧倒的な高精度を達成しました。
彼らの最終的なコードもGithubで公開されています。
github.com
同じく解説スライドもGithub上で公開されています
mercari-solution/yandex.pdf at master · pjankiewicz/mercari-solution · GitHub
Kaggleで提供したデータが英語のデータセットのため、日本版メルカリに適用する際には日本語の複雑性に起因する問題が発生します。
そのため 1位の手法も日本版メルカリのデータセットに適用時には、同程度のスコアは達成しませんでした。
ですが、開催した 「Mercari Price Suggestion Challenge」では商品値段推定のために多くのKagglerにより様々な手法・アイデアが議論されており、その内容は日本版メルカリの値段推定精度向上への大きな資産となっています。
値段推定機能の進展があり次第、詳細技術について技術ブログでご紹介させていただくのでご期待ください!
皆さん、こんにちは機械学習エンジニアの @hurutoriya です。
2018/05/09 にメルカリが開催した Kaggle Competition である「Mercari Price Suggestion Challenge」の閉会式を行いました。
「Mercari Price Suggestion Challenge」では実際に米国版メルカリで販売された商品データを公開して、参加者の皆様に商品の値段推定精度を競い合っていただきました。
Mercari Kaggle Competition: Closing Ceremony 2018 - connpass
この閉会式は「Mercari Price Suggestion Challenge」の上位者(ロシア・ポーランド・中国)と日本人上位入賞者を招待して、各種上位者の解法やKaggleに対する考え方をパネルディスカッション形式でお話を聞かせていただきました。
今回はカーネルオンリー(計算機資源と計算時間の制約)というルールも相まって、面白いコンペになったのではないかと思います。
当日のパネルディスカッションの動画も公開準備を終えたのででこの場をお借りして共有させていただきます。
Part1
www.youtube.comPart2
www.youtube.comメルカリにおける値段推定
メルカリにおける値段推定の重要性
まず、なぜ値段推定がメルカリにおいて重要なのかを解説します。フリマアプリ「メルカリ」は、お客さまが自由に値付けが行った後にメルカリ上で出品されます。
この値付けに関連する問題として分かりやすい例では
- メルカリの相場から外れて、高い値段で出品した場合売れない
- 逆にメルカリの相場より低い値段で出品してしまった場合、お客さまが損をする
解決策として、
- 自分が出品予定の商品をメルカリ内で検索して相場を調査して調べる
- お客さまに大きな手間がかかる
- そもそもメルカリに登録直後のお客さまはそんなことを思いつかない
出品時に商品情報から適切な値段を自動的に提示する
ことで出品時の手間を削減し、更に出品が簡単になります。値段推定についての解説
現在は機械学習チームインターン @lain_m21 さんに日本版メルカリの値段推定プロジェクトに取り組んでもらっています。値段推定タスクにおいては、Root Mean Squared Logarithmic Error: RMLSE で評価しています。
定義は
- : RMSLE スコア
- : 予測したデータの数
- : 予測した値段
- : 真の値段
- : xの自然対数
RMLSEは直感的にわかりにくい指標なので、可視化して説明します。
以下の図は¥3,000の値段の対するRMSLEの誤差の範囲を可視化したものになります。
横軸がRMSLEの値、縦軸が対応するRMSLEの誤差範囲となっています。
ログ基準での指標になっているので、RMLSEが1.0の場合、
- 真値: ¥3,000
- 推定値の誤差範囲: ¥1,103~¥8,156
今回開催したKaggle Competition 1st winner が公開しているモデルは RMLSE: 0.3875 (公開されている75行のカーネル) を叩き出しており、
- 真値: ¥3,000
- 推定値の誤差範囲: ¥2,051~¥4,387
1位のチームによる100行未満で書かれた Code Golf が公開され、機械学習チーム全員がこのコードの簡潔さと美しさに驚きました。
Mercari Golf: 0.3875 CV in 75 LOC, 1900 s | Kaggle
100行に満たない短さですが、洗練されたPythonコードでMLPのモデルを実現しています。
実際に1位のチームの解法を米国版メルカリ最新データに対して適用しても、米国版メルカリで既に運用されている既存手法よりも圧倒的な高精度を達成しました。
彼らの最終的なコードもGithubで公開されています。
github.com
同じく解説スライドもGithub上で公開されています
mercari-solution/yandex.pdf at master · pjankiewicz/mercari-solution · GitHub
まとめ
今回我々は日本版
メルカリの商品値段推定に取り組んでいます。 Kaggleで提供したデータが英語のデータセットのため、日本版メルカリに適用する際には日本語の複雑性に起因する問題が発生します。
そのため 1位の手法も日本版メルカリのデータセットに適用時には、同程度のスコアは達成しませんでした。
ですが、開催した 「Mercari Price Suggestion Challenge」では商品値段推定のために多くのKagglerにより様々な手法・アイデアが議論されており、その内容は日本版メルカリの値段推定精度向上への大きな資産となっています。
値段推定機能の進展があり次第、詳細技術について技術ブログでご紹介させていただくのでご期待ください!
オリジナルのエンクロージャ: |
コメント
コメントを投稿