表現: 良い特徴の質

元データを適切な特徴ベクトルにマッピングする方法を説明してきましたが、これは取り組みの一部にすぎません。次に、それらの特徴ベクトル内で実際に良い特徴となる値の種類を調べる必要があります。

使用頻度の低い個別の特徴値を避ける

良好な特徴値は、データセットに 5 回以上出現する必要があります。これにより、この特徴値がラベルとどのように関連しているかをモデルが学習できるようになります。つまり、同じ個別の値を持つ多くのサンプルがあると、モデルは異なる設定で特徴を確認し、ラベルの適切な予測子であるかどうかを判断できます。たとえば、house_type 特徴には、値が victorian である例が多数含まれている可能性があります。

house_type: victorian

逆に、特徴の値が 1 回だけ表示される場合、またはほとんど出現しない場合、モデルはその特徴に基づいて予測を行うことができません。たとえば、unique_house_id は、各値が 1 回だけ使用され、モデルがそこから何も学習できないため、不適切な特徴です。

unique_house_id: 8SK982ZZ1242Z

明確でわかりやすい意味を好む

各機能は、プロジェクトのすべてのユーザーにとって明確でわかりやすい意味を持つ必要があります。たとえば、次の優れた対象物にははっきり名前が付いており、その名前については意味をなしています。

 house_age_years: 27 

逆に、次の特徴値の意味は、それを作成したエンジニア以外は解読できません。

house_age: 851472000

場合によっては、ノイズの多いデータ(不適切なエンジニアリング選択ではなく)が原因で、値が不明瞭になることがあります。たとえば、次の user_age_years は、適切な値を確認していないソースから取得されています。

user_age_years: 277

「マジック」な値を実際のデータと混同しない

適切な浮動小数点特徴には、範囲外の不連続性や「魔法」の値は含まれません。たとえば、特徴が 0 ~ 1 の浮動小数点値を保持するとします。そのため、次のような値は問題ありません。

quality_rating: 0.82
quality_rating: 0.37

ただし、ユーザーが quality_rating を入力しなかった場合は、次のようなマジック値で、データセットが存在しないことを表す可能性があります。

quality_rating: -1

マジック値を明示的にマークするには、quality_rating が指定されているかどうかを示すブール値を作成します。このブール値の特徴に is_quality_rating_defined などの名前を付けます。

元の特徴で、マジック値を次のように置き換えます。

  • 有限の値のセットを取る変数(離散変数)の場合は、そのセットに新しい値を追加し、それを使用して特徴値が欠落していることを示します。
  • 連続変数の場合は、特徴のデータの平均値を使用して、欠損値がモデルに影響しないようにします。

アップストリームの不安定性を考慮する

特徴の定義は、時間の経過とともに変化してはなりません。たとえば、次の値は都市名がおそらく変更されないため、便利です。(「br/sao_paulo」のような文字列はワンホット ベクトルに変換する必要があります)。

city_id: "br/sao_paulo"

ただし、別のモデルから推測される値を収集すると、追加コストが発生します。おそらく値「219」は現在サンパウロを表しますが、この表現は今後他のモデルを実行すると簡単に変更される可能性があります。

inferred_city_cluster: "219"