選別プロセスにはオフライン選別とオンライン選別があります:
オフラインソート
前日のユーザー行動データをトレーニングセットとして読み込み、オフラインモデルをトレーニングします。トレーニングが完了した後、昨日のユーザー行動データを検証セットとして読み込み、予測を行い、予測結果に基づいてオフラインモデルを評価します。評価が合格した場合、オフラインモデルをその日のタイムドタスクに更新し、予測タスクを一定間隔で実行することができます。更新されたオフラインモデルの予測結果は、今日のユーザー行動データに基づいて明日観察することができます。
オンライン仕分け
前日のユーザー行動データをトレーニングセットとして読み込み、オンラインモデルをトレーニングします。トレーニングが完了した後、昨日のユーザー行動データを検証セットとして読み込み、予測を行い、予測結果に基づいてオンラインモデルを評価します。評価に合格した場合、オンラインモデルを同日中にオンラインで更新し、ソートタスクをリアルタイムで実行することができます。明日、今日のユーザー行動データに基づいて更新されたオンラインモデルの予測効果を観察することができます。
データセット分割のヒントがもう一つあります。ランダムに、あるいはユーザーやその他のサンプル選択ストラテジーによって水平に分割することもできますし、タイムスパンによって垂直に分割することもできます。例えば、1週間分のデータでは、月曜日から木曜日がトレーニングセット、金曜日と土曜日がテストセット、日曜日が検証セットです。
ソートモデルは評価予測やユーザー行動予測に使用することができ、通常、レコメンダーシステムは、クリックスルー率予測のようなユーザー行動予測にソートモデルを使用し、クリックスルー率に従ってアイテムをソートします:
- ワイドモデル+特徴量作業 LR / MLR+非ID特徴量
- 広いモデル+ Wide&Deep,DeepFM
- ディープ・モデル: DNN + 特徴の埋め込み
ここでいう幅広いモデルとは線形モデルのことで、線形モデルの利点は以下の通りです:
- 比較的シンプルで、学習と予測の両方で計算量が比較的少ない
- 効果的な新機能の発見に集中でき、作業の並列化が可能
- 解釈は、特徴量の重みに基づいて行うことができます。
以下では、最初の「ワイドモデル+特性評価手順」に焦点を当てます。
LR+離散特徴の利点
産業界では、連続値を特徴量として直接ロジスティック回帰モデルに与えることはまれです。代わりに、連続特徴量は、ロジスティック回帰モデルに与えられる一連の0と1の特徴量に離散化されます:
スパースベクトルの内積乗算は高速で、結果の保存が便利で、スケーラブルです。
離散化された特徴量は、異常なデータに対してロバストです。例えば、ある特徴量が30歳以上であれば1、そうでなければ0になります。もし特徴量が離散化されていなければ、「300歳」という異常なデータは、モデルに多くの乱れを引き起こします。
ロジスティック回帰は、限定された表現力を持つ一般化線形モデルです。各変数に個別の重みを持つN個の変数に1つの変数を離散化することは、モデルに非線形性を導入することと同じで、モデルの表現力を高め、適合度を高めることができます。
離散化により、M+N 変数から M*N 変数に変化する特徴のクロスオーバーが可能になり、非線形性がさらに導入され、表現力が向上します。
例えば、ユーザーの年齢を離散化した場合、20-30という区間は、ユーザーが1歳年上だからといって全く別人になってしまうことはありません。もちろん、区間近傍のサンプルは正反対になるので、区間をどのように分割するかは学習プロセスです;
李穆紹は、モデルで離散的特徴量を使うか連続的特徴量を使うかという問題は、実際には「多数の離散的特徴量+単純なモデル」と「少数の連続的特徴量+複雑なモデル」のトレードオフであると指摘しました。離散化して線形モデルを使うこともできますし、連続特徴を使ってディープラーニングを使うこともできます。特徴量とモデルのどちらを優先するかは人それぞれです。一般的に言えば、前者は簡単でn人が並行してやって成功します。後者は今のところ凄そうですが、どこまでできるか未知数です。
一般的な理解です:
1) 単純計算
2) 簡易モデル
3) ノイズの影響を受けにくいモデルの汎化能力の向上
LR+離散特徴の理由
人工的特徴と機械的特徴の比較
第一に、大規模な離散的特徴+LRは業界では一般的ですが、聖杯ではありません。実際、これは一般的にLRの最適化アルゴリズムがより成熟しており、計算のスパース性を利用することでより最適化できるからです。
GBDTとディープラーニングの特徴は、CTR予測に積極的に役立つことが証明されました。
この問題についてもう少し深く考えてみると、実は、現在のディープラーニングネットワークの最終層は、二値分類であれば、実は、LRと等価なのです。つまり、手動/半手動の方法で生成された特徴と、ディープニューラルネットワークが最終的に学習した表現とでは、実は、次のような違いがあるのです。一般的に深層学習は密な表現を学習するのに対し、特徴工学は疎な表現の束を生成するという違いです。
ある時点では、人工的な特徴は、数層の非線形性を経た後のニューラルネットワークの結果に非常に似ています。高次/非線形の特徴を激しく抽出するという点では、機械は間違いなく人間を凌駕します。しかし、どんなに優れた機械知能でも、「人間の常識」にはかなわないことがあります。特に、ビジネスのロジックの一部は、人間の脳がより大きなデータセットで事前に訓練した特徴として考えることができ、予測に使用するデータセットよりも多くの情報を含んでいるはずです。
この場合、多くの場合、素晴らしい人工的な特徴が、暴力的な機械的手法を凌駕します。つまり、特徴を離散化することは、数学的な観点からロバスト性を高めることであると考えることができますが、より重要なことは、データの意味を理解し、人間が理解し検証できる形式に変換することです。もちろん、人間のビジネスロジックは完璧ではありません。
現時点では、機械知能はまだ「常識」の分野を征服しておらず、人間のビジネス洞察力は依然として強力な補完物です。囲碁のように機械がゲームを完全にマスターできるようになると、人間が誇る直感はもはや機械計算の暴力に耐えられなくなります。したがって将来的には、従来は人間の「センス」に頼っていると考えられてきた分野に、ますます多くの機械知能が侵入してくるに違いありません。ですから将来、従来は人間の「感覚」に依存していると考えられてきた分野に、ますます多くの機械知能が侵入してくるに違いありません。
広告業界もこのメガトレンドと無縁ではありません。
LRは疎な特徴因子に適用
この問題についてはずっと考えていて、普段のプロジェクトでもかなりのケースに遭遇しています。
それでも、なぜなのかわからなくて、モデルの特徴をもう少し深く考えてみたら、面白いことがわかりました。
1wのサンプル、yのカテゴリ0と1、100次元の特徴があり、そのうちの10サンプルがカテゴリ1であり、特徴f1の値0、1、およびf1の特徴値のちょうどこれらの10サンプルが1であり、9990サンプルの残りの部分は0であるとします(高次元スパースの場合、これは非常に一般的な状況です)、ツリーモデルでこのような状況を認識している、それは分割ノードにf1の使用を含むようにツリーモデルを最適化することは非常に簡単です。木は直接非常によくデータを分割しますが、テストが、この機能は、しばしばオーバーフィッティングであると言われている、この法則にフィットyと偶然に起こるので、効果は非常に悪いことがわかります。しかし当時は、線形モデルがなぜこのようなケースをうまく扱えるのか、まだ理解できませんでした。実際のところ、線形モデルは最適化後にこのような式を生成します:ここで
は、この10個のサンプルに適合させるために特に大きな値です。
大きすぎても、他の9990個のサンプルには効果がありません。
後で考えてみると、その理由は、最近のモデルは一般的に正規項を持ち、lrのような線形モデルの正規項は重みに対するペナルティ、つまり一度大きすぎるとペナルティが大きくなり、さらに圧縮されて
ツリーモデルは同じではありませんが、彼は大きすぎないように、値は、ペナルティ項のツリーモデルは、通常、リーフノードの数と深さなどであり、すべての上記の場合、ツリーはノードが完全に9990と10サンプルを分割することができます必要とすることを知って、ペナルティ項は非常に小さいです。
正則化された線形モデルは、疎な特徴にオーバーフィットする可能性が低くなります。
LRが離散的な特徴にのみ適している理由
LRは非常に単純な線形モデルです。 y = w*x + b という式をもう一度思い出してください。先ほど申し上げたように、一次関数の表現力には限界があり、活性化関数はLRに非線形の関係を加えるために導入されました。これは直線を曲線に変えるものです。そうすることで、よりフィットするようになります。
離散化と直列化の最大の違いは、フィールドを直列化した結果が1つの特徴量であるのに対し、列を離散化すると列内のキーの数だけ特徴量が抽出されることです。
- これは、活性化関数の作用の下で、モデルに非線形性を追加することに等しく、モデル表現を改善し、フィッティングを向上させることができます。
- 特徴量が離散化されていない場合、「年齢300歳」という異常なデータがあると、モデルに多くの干渉が生じます。
- 第三に、離散的な特徴は足し算や引き算が簡単なので、モデルを素早く反復することができます。
- 第四に、機能が多すぎると動作が遅くなると心配する学生もいるはずですが、LRは線形モデルであり、内部計算は反復ではなくベクトル化されています。スパースベクトルの内積乗算は高速で、結果の保存や展開も簡単です。 そのため、特徴量が多くなると実行できなくなるGBDTアルゴリズムを心配する必要はありません。
ですから、大量の離散的特徴量+LRは、業界では一般的な手法です。また、少数の連続フィーチャー+複雑なモデルは、GBDTのような別のプラクティスです。
連続と離散の相互変換
今回は、離散と連続の違いと、その適用シーンについて説明します。しかし、データは離散的でも連続的でも思いのままではありません。
資産フィールドを離散化し、各キーがフィーチャーである場合、フィーチャーの数が膨大になり、1000と1001と999が3つの異なるフィーチャーになってしまいます。 私たちが望むのは、ある範囲の数字が1つの特徴にマッピングされることです。 例えば、資産が100W未満の人は貧困層、100Wから1000Wの人は中流層、1000W以上の人は富裕層とみなされます。
このフィールドから抽出したい3つの特徴かもしれません。そこで、連続特徴量を離散特徴量に変換するために、連続値バケット法が用いられます。連続特徴量の区間を異なるバケットに分割して変換します。 同様に離散特徴も連続特徴に変換することができます。おそらく、データを時間フィールドにソートし、時間ウィンドウ内のデータの値に基づいて離散データを数値に変換します。 詳細はよくわかりません。情報を確認してください。
正規化
正規化もかなり重要なステップです。 特徴量を抽出した後、これらの特徴量は異なる値間隔を持っていることがわかります。特に連続特徴量の場合。 特徴量1の間隔は0~1、特徴量2の間隔は0~1000です。従って、勾配降下は次のようになります:
左側は正規化されていないグラフで、勾配降下アルゴリズムは平らなボウルのようなもので、勾配降下を完了させるためにより多くの反復を必要とします。 右は正規化された勾配降下で、より丸みを帯びたボウルで、勾配降下をより速く実行します。 結局何が正規化なのかというと、実は正規化とは、特徴量を0~1の区間に圧縮して、すべての特徴量が相対的に等しい状態にすることなのです。下図
もともとは左端のように分布していた特徴が、正規化によって徐々に右端のように分布するようになりました。
ですから、正規化は特徴量が異なる分布にある場合に有効です。ディープラーニングでは、バッチノルムという操作もあります。実際には、各層の出力を次の層に渡す前に正規化します。
GBDT コーディング、LRモデリング
LRでヒット予測を行うには、多くの特徴エンジニアリングが必要です。連続特徴量を離散化し、離散化された特徴量をOne-Hotコーディングし、最終的に非線形特徴量を得ることを目的として、特徴量を2次または3次特徴量に結合します。特徴工学にはいくつかの課題があります:
- 連続変数のカットオフ・ポイントはどのように選ばれるのですか?
- 何分割するのが合理的ですか?
- どのフィーチャー・クロスオーバーを選ぶべき?
- クロスオーバーのオーダーは2番目、3番目、あるいはそれ以上?
経験に従い、いくつかの組み合わせを試し続け、オフラインでの評価に基づいて適切なパラメーターを選ぶのが普通です。
しかし、GBDT コーディングを用いることで、上記の問題は一挙に解決します。主観的な経験に基づいてカットポイントを決定するのではなく、情報利得に基づいてカットポイントと共有数を客観的に選択します。各決定木のルートノードからリーフノードへの経路は異なる特徴を通過し、この経路は特徴の組み合わせであり、2次、3次、さらにそれ以上を含みます。
なぜGDBT+LRではなくGDBTを使用しないのですか?なぜなら、GDBTはオンラインで予測するのが難しく、学習時間の複雑さがLRよりも高いからです。したがって、実際には、GDBTをオフラインで学習し、そのモデルをオンラインETLの一部として使用することができます。
Facebook の論文では、GBDT + LR は純粋な GBDT よりも優れており、LR の性能は GBDT よりも優れていると述べられています。実際、私は懐疑的だったので、ローカルで実験してみました。データソースはmlbenchの5つのパケット糖尿病、衛星、ソナー、車両、船舶です。
その他の命題分:
以下は、後で検討するために、論文の他の側面からのトピックを簡単に記録したものです。
- オンライン学習におけるLRとBOPRの比較。BOPRの方がLRより若干うまくいきますが、LRの方がシンプルなので、最終的にはLRが好まれます。
- GDBTの反復回数を用いれば、ほとんどの最適化はGBDTモデルのわずか500回の反復で行うことができます。
- GDBTの木の深さはあまり深くする必要はなく、一般的には2~3層で十分です。
- 機能は多ければ多いほど良いというわけではありませんが、重要度上位400の機能は非常に優れたパフォーマンスを発揮します。
- 過去の特徴は、ユーザーの現在のコンテキスト特徴よりも重要であり、予測時間に対してより安定しています。しかし、ユーザーコンテキストデータはコールドスタート問題の解決に有効です。
- 全サンプルを使用する必要はありません。トレーニングデータの10%を使用することは、100%と大差ありません。
- 負のサンプルが再サンプルされた場合、モデルによって計算された確率を再修正する必要があります。補正式はq=p+/wで、qは補正されたデータ、pはモデルによって予測されたデータ、wは再サンプリングされた負のサンプルの割合です。