そのとき、筆者が思い浮かべたのが Web Traffic Time Series Forecasting という Kaggle コンペの上位チームのソリューションでした。そのコンペは Wikipedia の pageview を予測するコンテストだったのですが、とてもノイズの大きい時系列データに対する解析問題でした。優勝チームは RNN seq2seq を使って、ノイズが入ったデータであってもロバストにエンコード・デコードできるように学習することができており、素晴らしい解法でした。しかし、それよりさらに興味深かったのが8位チームの解法で、機械学習モデルではなく、カルマンフィルタ (kalman filter) でノイズを除去し、統計手法を加えることでロバストな予測モデルを構築するというもので、極めて簡潔かつ強力 (simple and powerful) であり、これこそが実務で追求するべき生産性の高い技術ではないかと当時とても感心した覚えがあります。
MFCC は、人の聴覚上重要な周波数成分が引き伸ばされてケプストラム全体における割合が増えることで、人が聞いた音の特徴をよく表すと考えられています。また、N 次のメルフィルタバンクを通すことにより、人の聴覚上重要な特徴を保ちながらケプストラムの次元を N まで減らすことができ、機械学習における計算負荷を減らせるメリットもあります。
import librosa fn = ‘audio file path’ y, sr = librosa.core.load(fn) mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=20) mfcc_mean = mfcc.mean(axis=1)
DataRobot における Custom Model
現在、DataRobot プラットフォーム上で pykalman、librosa などを利用することも実は可能になっています。Composable ML を使用することで、DataRobot にビルトインされた様々なタスクに加え、 Python または R でユーザーが設計したカスタムタスクを組み合わせることで、独自の機械学習パイプラインを簡単に構築することができるのです。また、タスク用のカスタムコンテナ環境を使用することで、依存関係の追加がいつでも可能です。
※カスタムコンテナ環境
※KalmanFilterを組み合わせるカスタムタスク
まとめ
ここまで説明してきましたとおり、機械学習モデルの精度向上とコスト削減を両立するためには、単に妥協してしまうのではなく、最適解を見つけるのが重要なポイントです。DataRobot の実際の顧客事例に基づいて、Kaggle コンペから学んだ簡潔かつ強力な技術を応用することで、低コストでありながら高パフォーマンスな予測モデルを実現できたことを説明してきました。DataRobot Composable ML は Python または R でカスタム環境、タスクを構築することができ、DataRobot プラットフォームと連携して、最適なモデルを構築することができます。また、全自動化による高い生産性とカスタマイズ性を両立する新機能である Composable ML につきましても、是非ご活用頂ければと思います。
DataRobot データサイエンティスト、Kaggle GrandMaster。主にはお客様のモデル精度改善の業務担当している。余暇ではいろいろな機械学習コンペティション(Kaggle、Signate、ProbSpace、Tianchi…)に取り組んでおります。Kaggle Meetup Tokyo、Kaggle Days Tokyo 登壇したことあり。