私は、機械学習の「バケット化」について、運が悪ければ明確な説明を探して回りました。これまで私が理解しているのは、バケット化は、連続する値の範囲が1つの離散値に置き換えられるデジタル信号処理の量子化に似ているということです。これは正しいです?
バケット化を適用することの長所と短所(情報を失うことによる明らかな影響以外)は何ですか?バケット化の適用方法に関する経験則はありますか?機械学習を適用する前にバケット化を適用するためのガイドライン/アルゴリズムはありますか?
私は、機械学習の「バケット化」について、運が悪ければ明確な説明を探して回りました。これまで私が理解しているのは、バケット化は、連続する値の範囲が1つの離散値に置き換えられるデジタル信号処理の量子化に似ているということです。これは正しいです?
バケット化を適用することの長所と短所(情報を失うことによる明らかな影響以外)は何ですか?バケット化の適用方法に関する経験則はありますか?機械学習を適用する前にバケット化を適用するためのガイドライン/アルゴリズムはありますか?
回答:
これは幅広いトピックであり、データをバケット化する必要がある、または既にバケット化されている理由はさまざまです。それらのすべてが予測精度に関連しているわけではありません。
まず、モデラーがバケット化したい例を次に示します。クレジットスコアリングモデルを構築しているとしましょう。ローンをデフォルトに設定する人々の傾向を知りたいのです。私のデータには、信用報告書のステータスを示す列があります。つまり、私は格付け機関にレポートを注文し、機関は、たとえば、独自のスコアと、このスコアの信頼性を示すカテゴリ変数を返しました。この指標は、私が目的に必要とするよりもはるかに細かい粒度である場合があります。たとえば、「信頼できるスコアに十分な情報がない」は、「20歳未満」、「最近国に引っ越した」、「以前の信用履歴がない」など、多くのクラスに分類される場合があります。これらのクラスの多くは人口がまばらで、回帰モデルやその他のモデルでは役に立たない場合があります。これに対処するために、統計的な検出力を「代表的な」クラスに統合するために、クラスのように一緒にプールしたいと思うかもしれません。たとえば、「適切な情報が返された」と「情報が返されなかった」というバイナリインジケータを使用するのは、私にとっては妥当なことです。私の経験では、バケット化の多くのアプリケーションはこの一般的なものに分類されます疎に配置されたカテゴリタイプの折りたたみ。
一部のアルゴリズムは内部的にバケット化を使用します。たとえば、ブースティングアルゴリズムの内部に収まるツリーは、多くの場合、各ノードの連続データが離散化され、各バケットの応答の平均値が計算される集計ステップで時間の大部分を費やします。これにより、ブースティングによる精度の大幅な犠牲なしに、適切な分割を見つける計算の複雑さが大幅に軽減されます。
また、単にバケット化されたデータを受信することもできます。離散データは、圧縮して保存する方が簡単です。浮動小数点数の長い配列は圧縮できませんが、「高」、「中」、「低」に離散化すると、データベースのスペースを大幅に節約できます。データは、非モデリングアプリケーションを対象とするソースからのものである可能性もあります。これは、分析作業の少ない組織からデータを受け取ったときに頻繁に発生する傾向があります。彼らのデータはしばしば報告に使用され、一般の人への報告の解釈可能性を助けるために高レベルに要約されます。このデータは引き続き役立ちますが、多くの場合、電力が失われます。
修正できる可能性はありますが、価値が低いと思うのは、モデリング目的での連続測定の事前バケット化です。非線形効果を連続予測子に当てはめるには非常に強力な方法がたくさんありますが、バケット化するとこれらを使用できなくなります。私はこれを悪い習慣と見なしがちです。
記事「高レベルと低レベルのデータサイエンス」によると、バケット化は
バケット化ステップ(多変量ビニングと呼ばれることもあります)は、高い予測力でメトリック(および2〜3のメトリックの組み合わせ)を特定し、それらを適切に組み合わせてビニングして、バケットを十分に大きく保ちながらバケット内の分散を減らします。
したがって、私の理解では、最も予測的な特徴に従ってデータを貪欲にビニングし、サブグループを分析します。