機械学習における機能工学の技術

こんにちは、Habr!







前の記事( 「PythonとScikit-Learnによる機械学習の概要」 )で、機械学習の問題を解決するための基本的な手順を紹介しました。 本日は、開発したアルゴリズムの品質を大幅に向上させることができる手法について詳しく説明します。 これらの手法の1つは機能エンジニアリングです。 これは一種の芸術であり、膨大な数の課題を解決することによってのみ学習できることに注意してください。 それでも、経験を積んで、いくつかの一般的なアプローチが開発されています。これについては、この記事で説明します。



したがって、すでにわかっているように、ほとんどすべてのタスクは属性の作成( Engineering )および選択( Selection )から始まります。 特性を選択する方法は非常によく研究されており、すでにこのための多数のアルゴリズムがあります(次回はそれらについて詳しく説明します)。 しかし、標識を作成するタスクは一種の芸術であり、完全にデータサイエンティストの肩にかかっています。 このタスクは実際には最も困難であることが多く、非常に高品質のアルゴリズムが得られるのは、サインの選択と作成の成功のおかげです。 多くの場合、適切に選択された属性持つ単純なアルゴリズムがkaggle.comで受賞します (優れた例は、 KDD Cup 2010Heritage Provider Network Health PrizeまたはFeature Engineering and Classifier Ensembleです



フィーチャーエンジニアリングの最も有名で理解しやすい例でしょう。多くの人はすでにAndrew Ngのコースで見ています。 たとえば、線形モデルを使用すると、家の長さや幅などの多くの特徴に応じて家の価格が予測されます。 この場合の線形回帰は、家の価格を幅と長さの線形結合として予測します。 しかし、結局のところ、健康な人は家の価格が主に家の面積に依存していることを理解しています。これは長さと幅の線形結合では決して表現されません。 したがって、製品の長さと幅に気づくと、アルゴリズムの品質が大幅に向上します。 したがって、私たちは家の価格に最も強く影響する新しいサインを取得し、サインスペースの次元も縮小します。 私の意見では、これは属性を作成する最も簡単で明白な例です。 特定のタスクの属性を構築するための手法を提供するメソッドを考案することは非常に難しいことに注意してください。 そのため、この投稿は「アートフィーチャエンジニアリング」と呼ばれています。 ただし、私自身の経験から共有したいいくつかの簡単な方法とテクニックがあります。



カテゴリー標識



オブジェクトに、有限集合の値を取る機能があるとします。 たとえば、青、赤、緑、またはその値が不明な色があります。 この場合、 is_redis_blueis_greenis_red_or_blueおよびその他の可能な組み合わせの形式の機能を追加すると便利です。



日時



記号の間に日付または時刻がある場合-原則として、時刻、特定の瞬間からの経過時間、季節、季節、四半期を強調する記号を追加すると非常に役立ちます。 また、時間を時間、分、秒に分割するのにも役立ちます(時間がUnix-TimeまたはISO形式で指定されている場合)。 この場所には多くのオプションがあり、それぞれが特定のタスク用に選択されています。



数値変数



変数が実数である場合、全体または実数部分への丸めまたは分割(その後の正規化を伴う)が役立つことがよくあります。 または、数値記号をカテゴリカル記号にキャストすると役立ちます。 たとえば、質量などの記号がある場合、 「質量がXよりも大きい」「XからYへの質量 という形式の記号を入力できます。



文字列特性の処理



値が有限行数である記号がある場合、行自体に情報が含まれていることを忘れないでください。 良い例は、 タイタニック号のタスクです水泳の参加者の名前に接頭辞「Mr。」「Mrs 。」 、および「Miss。」があり 、性別を簡単に抽出できます。



他のアルゴリズムの結果



多くの場合、サインとして、他のアルゴリズムの結果を追加することもできます。 たとえば、分類問題が解決された場合、最初に補助クラスタリング問題を解決し、最初のタスクでオブジェクトクラスターをサインとして取得できます。 これは通常、オブジェクトが適切にクラスター化されている場合のデータの初期分析に基づいて発生します。



集約された属性



また、特定のオブジェクトの機能を集約する機能を追加することは理にかなっています。これにより、機能の説明の次元も削減されます。 原則として、これは1つのオブジェクトに同じタイプの複数のパラメーターが含まれるタスクで役立ちます。 たとえば、価値の異なる複数の車を持っている人。 この場合、この人の車の最大/最小/平均コストに対応する兆候を考慮することができます。



新機能の追加



この項目は、機械学習の競争よりも実際の生活の実際のタスクに関連している必要があります。 これについては別の記事がありますが、問題を効果的に解決するには、特定の分野の専門家であり、特定のターゲット変数に影響を与えるものを理解する必要があることが多いことに注意してください。 アパートの価格の例に戻ると、誰もが価格が主に地域に依存していることを知っていますが、より複雑な対象地域では、そのような結論を出すことは困難です。



そこで、既存のアルゴリズムの品質を大幅に向上させるのに役立つ、機械学習タスクで( エンジニアリング )機能を作成するためのいくつかの手法を検討しました。 次回、機能の選択方法について詳しく説明します。 幸いなことに、ここですべてが簡単になります。これは、読者がおそらく気づいているように、機能を作成する一方で、機能を選択する技術が既に開発されているためです。



All Articles