By ローマン・ジコフ、創設者/データサイエンティスト@ TopDataLab
データ分析に適切なツールを選択することは非常に重要です。 に Kaggle.com 国際的なデータサイエンスコンテストが開催されるフォーラムでは、どちらのツールが優れているかをよく尋ねられます。 RとPythonがリストの一番上にあります。 この記事では、Scalaプログラミング言語とに基づくデータ分析テクノロジーの代替スタックについて説明します。 スパーク 分散コンピューティングプラットフォーム。
どうやって思いついたのですか? Retail Rocketでは、非常に大きなデータセットに対して多くの機械学習を行っています。 以前は、IPython + Pyhs2(Pythonのハイブドライバー)+ Pandas + Sklearnを使用してプロトタイプを開発していました。 2014年の夏の終わりに、同じサーバーパークでパフォーマンスが3〜4倍向上することが実験で示されたため、Sparkに切り替えるという基本的な決定を下しました。
もう4つの利点は、本番サーバーで実行されるモデリングとコードにXNUMXつのプログラミング言語を使用できることです。 以前はHive、Pig、Java、PythonのXNUMXつの言語を同時に使用していたため、これは私たちにとって大きなメリットでした。 これは、エンジニアの小さなチームにとっては問題です。
Sparkは、APIを介したPython / Scala / Javaの操作を適切にサポートします。 Sparkが書かれている言語であるため、Scalaを選択することにしました。これは、ソースコードを分析し、必要に応じてバグを修正できることを意味します。 これは、Hadoopが実行されるJVMでもあります。
当時、チームの誰もScalaを知らなかったので、選択は簡単ではなかったと言わなければなりません。
言語でうまくコミュニケーションをとることを学ぶためには、その言語に没頭し、それを可能な限り使用する必要があることはよく知られている事実です。 そのため、モデリングと高速データ分析のためにScalaを優先して、Pythonスタックを放棄しました。
最初のステップは、IPythonノートブックの代替品を見つけることでした。 オプションは次のとおりです。
- Zeppelin –Spark用のIPythonのようなノートブック。
- イスパーク;
- スパーク ノートブック;
- IBMのSparkIPythonNotebook。
- アパッチ Tオリー
これまでのところ、選択はシンプルであるためISparkでした。これは、Scala / Spark用のIPythonです。 HighChartsとRグラフィックスを追加するのは比較的簡単です。 そして、それをYarnクラスターに接続することに問題はありませんでした。
仕事
質問に答えてみましょう:オンラインストアの平均購入額(AOV)は、決済、ブラウザーの種類(モバイル/デスクトップ)、オペレーティングシステム、ブラウザーのバージョンなどの静的な顧客パラメーターに依存しますか? あなたはこれを行うことができます 相互情報.
推奨アルゴリズムと分析にはエントロピーを多用します。古典的なシャノンの公式、カルバック・ライブラー発散、相互情報量です。 このトピックに関する論文も提出しました。 マーフィーの有名な機械学習の教科書には、これらの対策について説明した、小さいながらも別のセクションがあります。
実際の小売ロケットデータで分析してみましょう。 事前に、サンプルをクラスターからコンピューターにcsvファイルとしてコピーしました。
且つ
ここでは、ローカルモードで実行されているISparkとSparkを使用します。これは、すべての計算がローカルで実行され、プロセッサコア間で分散されることを意味します。 すべてはコードへのコメントで説明されています。 最も重要なことは、出力でRDD(Sparkデータ構造)を取得することです。これは、コードで定義されているRow型のケースクラスのコレクションです。 これにより、「。」を介してフィールドを参照できます(例:_。categoryId)。