分析用のデータを正しく準備する





機械学習タスクでは、モデルの品質はデータに大きく依存します。

しかし、実際のタスクにおけるデータ自体が理想的となることはめったにありません。 原則として、データ自体はそれほど多くなく、分析に使用できるパラメーターの数は限られています。データにはノイズや欠落があります。 しかし、どういうわけかあなたは問題を解決する必要があります。



機械学習の問題をうまく解決した実践的な経験を共有したいと思います。 また、データを最大限に活用するための簡単な手順を示します。



データ分析タスクの解決は、2つの大きなステップで構成されています。



  1. データ準備。
  2. 準備されたデータモデルに基づいて構築します。


実際には、最終モデルの品質は、モデル自体の選択とその最適化よりも、準備されたデータの品質に大きく依存します。



たとえば、XGBoostは、ランダムフォレストと比較してモデル品質を約5%改善できます。これは、XGBoostと比較して最大3%のニューラルネットワークです。 ハイパーパラメーターの最適化、正則化、および選択により、依然として1〜5%増加する可能性があります。



ただし、既に存在する同じデータから抽出された情報サインを追加するだけで、モデルの品質を最大15%向上させることができます。



属性空間の構築







特徴抽出とは、モデルの品質を向上させるのに役立つかもしれないが、モデルはそれ自体では抽出できない新しいデータで情報特徴の空間を拡大することです。



ニューラルネットワークなどの最新の機械学習アルゴリズムは、データ内の非線形パターンを個別に見つけることができます。 しかし、これを実現するには、大量のデータが必要です。 時々たくさん。 これは常にそうではありません。 そして、モデルを支援することができます。



私の仕事では、次の基本原則を順守します。



1.オブジェクトのモデルによって記述されたすべての可能な特性を見つけます。

2.これらのデータから抽出されたパラメーターの重要性について仮定しないでください。

3.回復可能なパラメータには意味があります。



各項目について詳しく説明します。



モデルをトレーニングするデータは、実世界のオブジェクトです。 最初は、ベクトルとテンソルはありません。 私たちが持っているのは、サンプル内の各オブジェクトのある種の複雑な記述です。 これは、たとえば、電話番号、パッケージの色、身長、さらには匂いです。



すべてが私たちにとって重要です。 そして、これらの複雑な属性のそれぞれから、デジタル情報を抽出できます。



施設のあらゆる側面を何らかの形で特徴付けることができるすべてのデジタル情報を抽出します。



このアプローチはかつて悪い習慣と見なされていました。 線形モデルは、相関パラメーターを使用できませんでした。これは、マトリックスの不十分な条件付け、無制限の重みの増加につながるためです。 今日、多重共線性の問題は、高度なアルゴリズムと正則化手法を使用することでほぼ使い果たされています。 あなたが人の身長と体重を持っている場合-これらのパラメータの両方を取ります。 はい、それらは相関していますが、多重共線性は過去のものです。 最新のアルゴリズムと正則化を使用するだけです。



したがって、オブジェクトのあらゆる側面を見て、すべての数値特性を見つけてください。 最後に、もう一度見て考えてください。 あなたは何かを見逃しましたか?



いくつか例を挙げましょう。



電話番号があるとします。 役に立たない情報に思えます。 しかし、電話番号で多くを言うことができます。 番号の所有者の地域、番号が属する演算子、地域内の演算子の頻度、演算子の相対ボリュームなどを見つけることができます。 領域がわかっている場合、解決する問題に応じて、その領域を特徴付ける多くのパラメーターを追加できます。



梱包に関する情報があれば、その幾何学的寸法がわかります。 幾何学的特性には、高さ、幅、深さだけでなく、それらの関係も含まれます-寸法も記述します。 包装材料、さまざまな色、それらの明るさなど。



抽出された各フィーチャの変数値の範囲を調べます。 たとえば、場合によっては、パラメーターの対数がパラメーター自体よりもはるかに優れた機能を発揮します。 対数は順序の特性であるため。 値の範囲に大きなばらつきがある場合は、必ずパラメーターをログに記録してください。



パラメーターに周期性がある場合は、三角関数を使用します。 非常に豊富な追加属性のセットを提供できます。 たとえば、オブジェクトの特性の1つが閉曲線の場合、三角関数の使用は必須です。



外部ソースを使用します。 外部ソースの使用における唯一の制限は、解決される問題の予算に対する抽出コストです。



これらのデータから抽出されたパラメーターの重要性について推測しないでください。

対象分野の専門知識が何であれ、統計法のすべてを知っているわけではありません。 一見重要でないと思われることが、モデルの品質をどのように改善し、重要な機能の最上位に移動するかを疑問に思うことは止められません。 最終的には、まったく機能しない多くの症状が現れます。 しかし、一見重要ではないパラメータのどのトリッキーな組み合わせがうまく機能するかを事前に知りません。



通常、抽出した兆候は単独では機能しません。 また、各パラメーターのターゲット変数と個別に相関関係を見つけることはできません。 しかし、それらは一緒に機能します。



そして最後に、意味のない機能で情報標識のスペースを乱雑にしないでください。 これは上に書いたものとは逆のように見えますが、ニュアンスがあります-常識。

情報が少なくとも何らかの形でオブジェクトを説明している場合-それは有用です。 単純にすべてのフィーチャをペアで取得して乗算した場合、ほとんど意味を追加しなかった可能性がありますが、属性空間の次元を二乗しました。



フィーチャをペアで乗算するためのアドバイスを見つけることができます。 そして、線形モデルがあれば本当に機能します。 したがって、非線形性を追加し、属性空間の分離性を改善します。 しかし、最新のアルゴリズム、特にニューラルネットワークでは、このような人為的で意味のない非線形性の追加は必要ありません。

ただし、十分な計算能力がある場合は、自分で確認して確認できます。



ラベルのないデータの大きなセットとラベルの小さなセットがある場合、教師なしでトレーニングを使用して機能を追加できます。 自動エンコーダーはうまく機能します。



データに秩序をもたらす







データを収集したら、それらを整理する必要があります。



属性空間の一部のコンポーネントが一定であるか、統計的有意性なしで非常にわずかな変動性を持つことがあります。 後悔せずに捨ててください。



相互相関を確認します。 相互相関の絶対値に0.999のしきい値を設定します。 タスクによって異なる場合があります。 しかし、いくつかの記号は、互いに直線的に簡単に表現できます。 この場合、1つだけを残す必要があります。 直接線形依存の場合、相関ペアから両方のパラメーターを除外しても意味がありません。 これは単に機能的な依存関係には当てはまらないことに注意してください。



最後に、機能の重要性を数えます。 これには2つの理由があります。



第一に、率直に言って弱い情報サインは、有用な情報を導入することなく、非生産的にコンピューティングリソースをロードします。



次に、最も重要な兆候を見つけて分析する必要があります。



情報サインを削除する必要はありません。 今、慢なモデルを教える良い方法があります。 価格は計算時間になります。

しかし、最も重要な兆候は慎重に検討する必要があります。 実際、ターゲット変数を特性スペースにドラッグすることは、一見すると思われるよりもはるかに簡単です。 特に、データの出所が完全に管理されていない場合。

重要度のサインチャートにこのような画像が表示される場合、







これは喜びの理由ではなく、標識の空間から機能を完全に除外する理由かもしれません。



TL; DR



抽出可能なすべてのデータを取得しますが、常識を使用します。

早めに症状を取り除き、専門家の電源を入れないでください。



正当化される場合は、情報サインから機能的な表現を使用します。



統計的に重要でない変数および他の変数と強く相関する変数を削除します。



症状の重要性のチャートを作成します。 おそらく最も重要でないものを削除してください。

最も重要なことを学びます。



最も重要なものが他のものより際立っている場合は、特に綿密に研究してください。 分布プロットを作成します。 それらがなぜそんなに影響するのかを理解してみてください。 それらを削除することを検討してください。



テストだけでなく、実際のデータでもモデルをテストする機会がある場合。 最初に、疑わしいほど重要なパラメーターを除外してからオンにしてください。 そして結果を比較します。



ここで与えられる推奨事項は、モデルの構築に使用されるアルゴリズムによって異なります。 私は通常、ニューラルネットワークを使用します。 ロジスティック回帰および線形回帰を使用する場合、これらの推奨事項は間違いなく適切ではありません。



この記事は、データ収集の広範なトピックを扱っていません。 分析のためにデータがどのように収集されたかを理解してください。 特に、ターゲット変数の形成に注意してください。



記事のボリュームではすべての側面に触れることはできませんが、要点を述べようとしました。

ほとんどの機械学習出版物は、アルゴリズムの説明に焦点を当てています。 ただし、データの収集と準備は、モデルの構築作業の95%です。 私のメモがレーキをあまり頻繁に踏まないようにする助けになることを願っています。



また、モデルの品質を向上させるためにどのような方法を使用していますか?

著者-ヴァレリー・ドミトリエフローター

編集してくれたMikeKosulinに感謝します:)



All Articles