序文ちょうど夏休み中に、KaggleのZillow Prizeコンペに参加し、データマイニングと機械学習の初心者からレベル1への転換を完了することができました。Zhihuプラットフォームを使用して、コンペでの経験をまとめたいと思います。この記事は決して名詞を並べただけの記事ではないことを明記しておきます。各ポイントの背後には対応するテキストの説明があります。お気軽にご利用、ご議論ください。 次に、この記事はあなたを Kaggle のトップ 1% に連れて行くことを約束するものではなく、また、これを読んだ後にデータ マイニングと機械学習を理解できることを約束するものでもないということを強調したいと思います。この要約の共有は、次のような問題を抱えている次の人々だけを対象としています。
この2つの質問については、プロセス全体を紹介する際に議論されるので、まずは一般的なプロセスを要約しましょう。プロセスは
これらについては以下でそれぞれ説明します。 データ前処理ここでは特定のテクノロジーについては触れません。これらの技術用語は時代遅れだからです。正規化と標準化は、おそらくデータ マイニングの最初のレッスンです。ここでは、次の 2 つの問題のみについて説明します。前処理にどのような技術的手段をいつ使用すればよいか知っていますか。前処理の目的が何であるかご存知ですか? 私の理解では、データ自体がモデルのパフォーマンスの上限を決定し、モデルとアルゴリズムはこの上限に近似するだけです。これは、ほとんどのデータマイニングの教科書にある RIRO 原則に対応しています。したがって、データの前処理 (および特徴エンジニアリング) の目的は、モデルの近似の上限を高め、モデルの堅牢性を向上させることです。 これら 2 つの目標を理解すると、前処理段階で何を行う必要があるかを簡単に推測できます。 モデルの近似限界を改善するにはどうすればよいですか?
モデルの堅牢性を向上させるにはどうすればよいでしょうか?
一般的に、ここで必要なのは、データをさまざまな側面から記述し、元のデータをわずかに拡張することです。 機能エンジニアリング特徴エンジニアリングには、特徴抽出と特徴選択の 2 つの部分が含まれます。インターネット上には特徴選択に関する情報がたくさんあるため、ここでは特徴抽出についてのみ説明します。なぜでしょうか?料理が上手な人でも、ご飯がないと料理ができません。特徴のない赤ちゃんを選びますか?
簡単に言えば、分類・予測したい分野の事前知識を抽出することです。例えば、男の子と女の子を区別する場合、身長や体重などの他のデータよりも、性別の特徴を直接使用した方が間違いなく精度が高くなります。もちろん、誰もがすべての知識に精通することは不可能であることを考慮すると、なじみのないビジネス分野に直面したときは、X1/X2(ここでのX1とX2は必ずしも変数ではなく、数式である場合もあります)の形式で特徴を抽出することを優先することをお勧めします。これは、伝統的な統計学派が特にX1/X2を使用して***率と呼ばれる指標を形成することを好み、時には奇跡的な効果をもたらす可能性があるためです。
線形モデルには、単純さやスピードなどの利点がありますが、欠点も明らかです。線形関係しか表現できず、一般的な現実の問題にはこのような単純な線形関係はありません。したがって、解決策は線形モデルで非線形機能を使用することです。 学生の中には少し混乱している人もいるかもしれません。線形モデルと非線形機能を組み合わせるとはどういう意味でしょうか?次の例を読めば明らかになります。 回帰予測問題を想定すると、解は y=f(x) であり、次の 2 つの形式の表現があります。 ……(1) ……(2) 式(1)は線形回帰であり、線形関係のみを表現できるが、式(2)は多項式回帰であり、非線形関係も表現できる。今回注文するのは: 、、、、、 さて、式(2)をもう一度見てみると、 ……(3) 皆さんの中には、線形モデルで非線形機能を使用する原理は、非線形機能を新しい変数 t として記録し、それを線形モデルに投入することであると気づいた方もいるかもしれません。得られるのは t に関する線形モデルですが、x の非線形関係を表現できます。 非線形特徴の抽出に関しては、多項式などを手動で特徴として抽出するほか、ディープラーニングや SVM などの非線形モデルの中間出力を非線形特徴として利用することもできます。これらの非線形モデルの方法は、低次元を高次元に投影してから線形モデルに挿入すると思われます。抽出に非線形モデルを使用する理由としては、1つは人手を節約するためであり、もう1つは、人間が常識的に認識していない特徴をモデルが学習できることが多いためです。エンドツーエンドで直接非線形モデルを使用しないのは、各非線形モデルには非線形特徴の抽出方法が異なるため、抽出される非線形特徴も当然異なるためです。 ただし、注意すべき点は、モデルを使用して非線形特徴を抽出するかどうかの決定は、実際の状況を考慮する必要があることです。複数のモデルの非線形特徴を組み合わせたり、モデル融合技術を使用したりすると、計算量や遅延が許容できないほど大きくなるためです。一部の方法は、エンジニアリングの実践では(分散コンピューティング環境でも)実行できない可能性があります。言うまでもなく、Kaggle に参加する人のほとんどがデスクトップまたはラップトップのみを持つ個人ユーザーです。 モデルのトレーニングと選択データセットとトレーニング セットの適切な分割、バランスのとれたサンプル、クロス検証などは古くからある手法であり、インターネット上にも多数存在するため、この記事ではこれ以上説明しません。 まずモデルの選択についてお話ししましょう。機械学習は形而上学と呼ばれることがよくあります。最初は、アルゴリズムの原理を知らないからそう呼ばれているのだと思いましたが、後になって、アルゴリズムの原理を知っていても、それはやはり形而上学だということが分かりました。 なぜそう言うのでしょうか? 他の種類のプログラム エラーがどのように解決されるかを比較してみましょう。大法を印刷しますか?バグを見つけるためにバイナリソートしますか?どの方法を使用しても、バグが再現可能である限り、プログラムのパフォーマンスを通じて常にエラーを見つけることができます。ただし、機械学習の場合はそうではありません。モデルが過剰適合しているかどうかは、いくつかの指標を通じて確認でき、対応するパラメータを調整できますが、他の問題では、現象を通じて修正する必要があるエラーを見つけることは不可能です。 たとえば、予測効果が良くない場合、機能を追加する必要があることはわかっていますが、どの機能を追加する必要がありますか?この機能には新しいデータ ディメンションの導入が必要ですか、それとも既存のデータから抽出できますか?それとも、現在のデータの価値はすでに絞り出されているのでしょうか?つまり、特徴量と予測値の相関係数を計算した場合、相関係数が低い特徴量は役に立たないということでしょうか?明らかにそうではありません。単一の変数の結果のみを計算しており、順列や組み合わせの結果は計算していないからです。順列や組み合わせの結果の計算に関しては、本当に計算できるのでしょうか? ... このようなことに関しては 100% 正確なガイドはありません (おそらく 90% 正確なガイドすら存在しないでしょう)。 もちろん、解決策はあります。それは、機能とモデルを継続的に積み重ね、融合の後の波を選択し、異なるモデルが異なる側面を学習して互いに補完できることを期待することです。 行動に関しては、古い格言の通り、大胆な仮定を立てて、それを慎重に検証します。 ここまで述べてきたことは、機械学習モデルは理論科学かもしれないが、実際には実験科学でなければならないということを意味しています。これは実装可能な科学であるため、まずシンプルに、次に複雑に、という原則に従わなければなりません。時期尚早な最適化は諸悪の根源であり、無思慮な最適化は時間の無駄です。シンプルとは、モデルのシンプルさを指します。数値型の場合、単純な線形回帰から始めることができます。(画像分野の場合は、事前トレーニング済みの vgg シリーズなどの基本的な DL モデルを選択できます。) これにより、他の煩雑で複雑なモデルよりも確実に結果が早く得られます。結果が速いということは、より適切なテスト方法とベースラインをできるだけ早くオフラインで決定し、他のアイデアをすばやく検証してから、ゆっくりとパラメータを最適化して調整できることを意味します。 このセクションの最後に、このコンテストでディープラーニングを使用することについての私の考えをお話ししたいと思います。 一般的に、データ量が少ない場合にはディープラーニングは適さないと認識されていますが、一般的に言えば、参加者が提供するデータの量は非常に多いため、データ量の条件は満たされるはずです。 2 番目に一般的に認識されている不適切さは、データにローカル相関特性がないことです。これは、画像/自然言語などの領域では、データ間に局所的な相関関係があることを意味します。たとえば、1 つのピクセルでは十分な情報を表現できませんが、ピクセルの束があれば子犬なのか子猫なのかを示すことができます。言語の文章は単語で構成されており、これらを組み合わせる順序が崩れると、表現される全体的な情報も崩れてしまいます。ローカル相関特性を持つこれらのデータは、特定のネットワーク トポロジを通じて抽出できると同時に、深度を使用して階層的な特徴を抽出できるため、より良い結果が得られます。最新の手書き数字認識における 3 層 MLP と CNN のパフォーマンスを比較すると、この点がよくわかります。ローカル相関特性を持たないデータの場合、独自のネットワークトポロジを使用してその情報を取得することは不可能です。ディープラーニングでは、MLPのみを使用してモデルのトレーニングを完了できます。MLPの効果は、GDBTやRandomForestなどの従来のモデルよりも一般的に弱いです。 従来の方法と比較して、ディープラーニングの最大の利点は、特徴の自動抽出です。ただし、他の専門家の経験によると、人工特徴エンジニアリングが一定のレベルに達すると、従来のモデルがディープラーニングを上回る可能性があります。詳細については、Quora類似テキストマッチングコンテストのyesofcourseチームのビデオを参照してください。このビデオには、ディープラーニングと従来の機械学習モデルの比較が含まれています。さらに、xとyの関係が単一の推論である場合、ディープラーニングは非常によく学習できると指摘する人もいます。2層または多層の推論の場合、ディープラーニングは従来のモデルと比較して完全に不利になります。ただし、ディープラーニングとナレッジグラフを組み合わせると、この問題を効果的に解決できます。 (個人的には、ここで専門家が話している推論は、数学的な関係 y=f(x) ではなく、父方の母方の叔父の妻の妹を何と呼ぶべきかといった論理的な関係を指すべきだと思います) この競争における実際の状況はもっと興味深い。データセットの基本的な処理(欠損値の補完と外れ値の除去)の後、特徴抽出を行わずに、それぞれxgboostと3層128ユニットMLPに詰め込みました。LBとオフラインのパフォーマンスでは、2つのモデルの結果は非常に近く、その差は基本的に小数点以下6〜7桁です。しかし、その後、いくつかの特徴を手動で抽出すると、2 つのモデル間の違いが明らかになり始めました。オフラインでは大きな違いはありませんが、LB では xgboost によってランキングが大幅に上昇しますが、MLP によって LB スコアがかなり低下します。最初はオーバーフィッティングだと思ったので、ドロップアウトや正則化項を追加してみましたが、改善はありませんでした。また、特徴抽出にオートエンコーダーを使用して、それを従来のモデルに適用してみましたが、結果は満足のいくものではありませんでした。最終的に、DL法は使用しないことにし、代わりに従来の機械学習モデル+手動特徴抽出を採用しました。しかし、DL をあきらめる前に、試行錯誤に多くの時間を費やしすぎました (DL に盲目的に自信を持ち、悪い結果が自分のパラメータの問題によるものだと常に考えていたため)。特効薬はなく、具体的な状況を分析する必要があります。これも、今後注意すべき点です。 実際、分析を通じて、DL がより深刻なエラーを生成する理由は、ラベルが実際には半分正で半分負であるにもかかわらず、モデルの出力がほぼすべて正であるためである可能性が高いことがわかりました。負の数であっても、予測値の値は非常に小さく、適切な解決策が見つかりませんでした。 しかし、xgboostでも線形回帰でも、予測値はそれぞれ50%がプラス、50%がマイナスになる可能性があります。そのため、現在の解決策は、2つのモデルの最終結果の加重平均を取ることです。現在(2017.7.22)の順位は342/1702に達しています。ルーチンによると、次はモデル融合の波があるはずです。ある程度の地位まで上がる自信はありますが、今年はまだ大学院入試を受けなければならず、この競争経験を通じて十分な進歩を遂げたと感じているため、続ける予定はありません。続けるとしても、大学院入試が終わってからになります。 モデル融合モデル融合に関しては、インターネット上にはまだ多くの方法があり、近年はあまり革新されていません。 重要なのは、モデル融合の前にエラー曲線を描いて、モデル間の融合が必要かどうかを判断する必要があるということです。 たとえば、あるモデルが別のモデルよりも完全に優れている場合、融合値は非常に低くなります。 あとがき1 万冊の本を読むことは 1 万マイルを旅することほど良くはありません。1 万マイルを旅することは数え切れないほどの人々に会うことほど良くはありません。数え切れないほどの人々に会うことは専門家に案内してもらうことほど良くはありません。社会全体に開かれたコンテストに参加することは、名前を挙げたくない特定の学校のコンテストに参加するよりも、実はもっと有意義です。賞を獲得するのは難しいですが、ほぼ実際のプロセス、さまざまなレベルや業界の背景を持つ人々に触れることができます。特に、1人と友達になった後は、もっと素晴らしい友達を作ることができます。これらの機会は、人の知識、スキル、ネットワークの蓄積に大きな利益をもたらします。あなたがまだ学生であれば、この機会の潜在的な価値は2倍になります。 最後に、このコンテストはまだ進行中なので、コードは公開しませんが、本当にフリーローダーになりたいのであれば、Kaggle には私のものより上位にランクされているカーネルがたくさんあります。問題について議論したいだけであれば、コメントエリアまたはプライベート メッセージにメッセージを残してください。テキストだけで十分です。 最後に、一部のトップスクールを除いて、機械学習やディープラーニングにおける中国の他の学校の研究レベルがどの程度なのかはわかりません(サブディレクションについてはあまり気にしません)。そのため、広東地域の候補者は、学校や研究室を推薦していただければ幸いです。 、よろしくお願いします。お勧めで食べないことを約束します。 :P |
<<: 対話 | QingCloud CTO: AI が到来し、基本的なクラウド サービス プロバイダーもそれに備える必要があります。
>>: ML 向け勾配降下法アルゴリズム 機械学習初心者向け勾配降下法アルゴリズム
概要: この記事では、主にコンピューター ビジョンにおける 5 つの主要テクノロジ、つまり画像分類、...
...
2019年12月10日、北京で百度地図生態系会議が開催され、「新世代人工知能地図」の生態パノラマが...
マルチモーダル生体認証とは何ですか? マルチモーダル生体認証は、さまざまなシナリオやセキュリティ レ...
マッキンゼーの「2022年世界産業用ロボット調査」によると、産業企業は世界的な労働力不足に対処するた...
注目の人工知能がインターネットの「伝統的なプロジェクト」情報サービスと出会うと、業界にどのような A...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
[[393303]] 2020年から2021年にかけて、ほぼすべてのビジネス分野の組織が多くの予期せ...
AI が世界中のコード品質を低下させています。最近、GitClear が発表した調査レポートによると...
[[281197]] [はじめに] 顔認識はコンピュータビジョンにおける最大の研究分野の一つです。...
現在、AI チップ市場全体はディープラーニングを中心に展開しています。ディープラーニング (DL) ...
最新の3Dアニメーションをご覧になった方は、その壮大な世界に衝撃を受けるかもしれません。もしこれらの...
最近、少し時間ができたので、Java で A* 検索を作成し、表示に swing を使用しました。ア...
AI(人工知能)を中心とした技術がインターネットのさまざまな分野を席巻し、旅行や位置情報サービスを...