機械学習の問題を解決する一般的な方法があります!この記事を1つだけ読んでみてください!

機械学習の問題を解決する一般的な方法があります!この記事を1つだけ読んでみてください!

[[205485]]

アビシェーク・タクル

編集者: Cathy、Huang Wenchang、Jiang Fanbo、Han Xiaoyang

1. はじめに

この記事は、Searchmetrics のシニア データ サイエンティストである Abhishek Thakur 氏によって寄稿されました。

平均的なデータ サイエンティストは毎日大量のデータを処理します。データのクリーニング、処理、機械学習モデルを適用できる形式へのデータ変換に、60% ~ 70% 以上の時間が費やされているという人もいます。この記事では、後者、つまり機械学習モデルの適用(前処理段階を含む)に焦点を当てます。この記事で説明する内容は、私が参加した何百もの機械学習コンテストから得たものです。ここで説明する方法は一般的に適用可能なものであり、もちろん専門家が使用するより複雑な方法も多数あることに注意してください。

次はPythonを使います。

2. データ

機械学習モデルを適用する前に、すべてのデータを表形式に変換する必要があります。下の図に示すように、このプロセスは最も時間がかかり、難しい部分です。

変換が完了すると、表形式のデータを機械学習モデルに取り込むことができます。表形式のデータは、機械学習やデータマイニングにおける最も一般的なデータ表現形式です。 x 軸にサンプル データ、y 軸にラベルが付いたデータ テーブルがあります。質問の形式に応じて、ラベルは 1 列または複数列にすることができます。 X を使用してデータを表し、y を使用してラベルを表します。

1. ラベルの種類

タグは、解決する問題の種類を定義します。問題にはさまざまなタイプがあります。例えば:

  • 単一列、バイナリ値(分類問題、サンプルは 1 つのクラスのみに属し、クラスは 2 つだけ)
  • 単一列、実数値(回帰問題、1 つの値のみを予測)
  • 複数の列、バイナリ値(サンプルが1つのクラスに属しているが、2つ以上のクラスがある分類問題)
  • 複数列、実数値(回帰問題、複数値の予測)
  • 複数のラベル(分類問題、サンプルは複数のクラスに属することができます)

2. 評価指標

どのようなタイプの機械学習の問題でも、結果を評価する方法、つまり評価基準と目的は何かを知っておく必要があります。たとえば、不均衡なバイナリ分類問題の場合、通常は受信者動作特性曲線の下の領域 (ROC AUC または単に AUC) を選択します。マルチラベルまたはマルチクラスの分類問題の場合、通常はカテゴリクロスエントロピーまたはマルチクラス対数損失を選択します。回帰問題の場合、平均二乗誤差を選択します。

問題に応じてさまざまな評価指標の種類があるため、ここでは詳しく説明しません。

3. 図書館

機械学習ライブラリの実験を始めるには、まず numpy や scipy などの最も基本的で重要なライブラリをインストールすることから始めます。

  • データ操作の表示と実行: pandas (http://pandas.pydata.org/)
  • さまざまな機械学習モデルの場合: scikit-learn (http://scikit-learn.org/stable/)
  • 最高の勾配ブースティング ライブラリ: xgboost (https://github.com/dmlc/xgboost)
  • ニューラルネットワークの場合: keras (http://keras.io/)
  • データプロット: matplotlib (http://matplotlib.org/)
  • 進行状況を監視する: tqdm (https://pypi.python.org/pypi/tqdm)

Anaconda は使いやすく、これらすべてが準備されていますが、私は自分で設定して自由に使用することに慣れているため、使用していません。もちろん、決定権はあなたにあります。

4. 機械学習の全体的な枠組み

2015 年から、自動機械学習フレームワークの開発に着手しました。現在も改良が続けられており、近々リリースされる予定です。以下に示すフレームワーク図は、この記事で説明する基本的なフレームワークです。

画像出典:

A. Thakur および A. Krohn-Grimberghe、「AutoCompete: 機械学習コンペティションのフレームワーク」、AutoML ワークショップ、機械学習に関する国際会議 2015

上記のフレームワーク図では、ピンクの線は最もよく使用されるパスを表しています。データを抽出して表形式にしたら、機械学習モデルの構築を開始できます。

最初のステップは、問題を特定(区別)することです。これは、ウォッチ タグを使用することで解決できます。この問題がバイナリ分類、マルチクラスまたはマルチラベル分類、あるいは回帰問題のいずれであるかを知っておく必要があります。問題が特定されると、データはトレーニング セットとテスト セットの 2 つの部分に分割できます。下の図の通りです。

データをトレーニング セットと検証セットに分割することは、ラベルに基づいて行う必要があります。分類の問題に遭遇した場合は、階層的セグメンテーションを使用するのが適切です。 Python では、scikit-learn を使用すると簡単にこれを行うことができます。

回帰問題が発生した場合、単純な K 分割で十分です。もちろん、トレーニング セットと検証セットの元の分布を維持しながらデータを分割する複雑な方法も数多くあります。これは読者の課題として残しておきます。

関連: スタートアップの教訓: 迅速に行動する必要がある理由

上記の例では、検証セットとして全データの 10% を使用することを選択しました。もちろん、特定のデータに基づいてサンプリング サイズを決定することもできます。

データを分割した後は、それを脇に置いて触れないようにしてください。トレーニング セットに対して実行されたすべての操作は保存され、検証セットに適用する必要があります。検証セットはトレーニング セットと決して混同しないでください。なぜなら、混ぜ合わせた後は、評価指標値はユーザーが満足する値に戻ったものの、モデルが過剰適合しているため使用できないからです。

次のステップは、データ内のさまざまな変数を識別することです。一般的に、変数には数値変数、カテゴリ変数、テキスト変数の 3 種類があります。人気のタイタニックデータセットを例として使用してみましょう。

(https://www.kaggle.com/c/titanic/data)。

ここでは、「生存」がラベルです。前のステップでは、トレーニング セットからラベルを削除しました。次に、pclass、sex、embarked 変数があります。これらの変数は異なるレベルで構成されているため、カテゴリ変数です。年齢、樹齢、乾き具合などは数値変数です。名前はテキストを含む変数ですが、生存を予測するのには役立たないと思います。

まず数値変数を分離します。これらの変数はいかなる種類の処理も必要としないため、正規化して機械学習モデルを適用することができます。

カテゴリ変数を処理する方法は 2 つあります。

  • カテゴリ変数をラベルに変換する
  • ラベルをバイナリ変数に変換する

OneHotEncoder を適用する前に、LabelEncoder を使用してカテゴリ変数を数値変数に変換することを忘れないでください。

タイタニック号のデータにはテキスト変数の良い例がないので、テキスト変数を処理するための独自の一般的なルールを作成します。いくつかのテキスト分析アルゴリズムを使用して、すべてのテキスト変数を結合し、数値に変換できます。

テキスト変数は次のように統合できます。

次に、CoutVectorizer または TfidfVectorizer を適用します。

または

TfidfVectorizer は、ほとんどの場合、単純なカウントよりも優れたパフォーマンスを発揮します。ほとんどの場合、次のパラメータ設定で良好な結果が得られます。

トレーニング セットでベクトル化 (またはその他の操作) を実行する場合は、後で検証セットに適用できるように必ずディスクに保存してください。

次にスタッカーモジュールがあります。スタッカー モジュールはモデルのスタッキングではなく、機能のスタッキングを行います。上記の処理手順の後に得られたさまざまな機能は、スタッカー モジュールを通じて統合できます。

すべての特徴を水平に積み重ね、密な特徴か疎な特徴かに応じて numpy hstack または sparse hvstack を使用してさらに処理を行うことができます。

PCA や特徴選択などの他の処理手順がある場合には、FeatureUnion モジュールを介してこれを実装することもできます (分解と特徴選択については後で説明します)。

特徴が得られたら、機械学習モデルの適用を開始できます。この段階では、次のようなツリーベースのモデルのみを使用する必要があります。

  • ランダムフォレスト分類器
  • ランダムフォレスト回帰
  • ExtraTrees 分類器
  • ExtraTrees リグレッサー
  • XGB 分類器
  • XGB リグレッサー

正規化が行われていないため、上記の特徴に線形モデルを適用することはできません。線形モデルを適用するには、scikit-learn の Normalizer または StandardScaler を使用します。

これらの正規化方法は密な特徴に限定されており、疎な特徴に対しては満足のいく結果が得られません。もちろん、平均を使用せずにスパース行列に StandardScaler を使用することもできます (パラメーター: with_mean=False)。

上記の手順で「良好な」モデルが完成したら、ハイパーパラメータをさらに最適化できます。これが不可能な場合は、次の手順を実行してモデルを改善できます。

次の手順では、モデルを分解します。

簡潔にするために、LDA 変換と QDA 変換は省略します。高次元データの場合、一般的に PCA を使用してデータを分解できます。画像の場合、10 ~ 15 個のコンポーネントから開始し、結果の品質が向上し続けるにつれて、コンポーネントの数を徐々に増やします。その他のデータについては、開始点として 50~60 個のコンポーネントを選択します (数値データについては、処理できる限り PCA を使用しません)

テキスト データの場合、テキストをスパース マトリックスに変換した後、特異値分解 (SVD) が実行されます。TruncatedSVD と呼ばれる SVD のバリアントは、scikit-learn にあります。

一般的に、TF-IDF に有効な特異値分解成分の数は 120 ~ 200 です。数値を大きくすると効果は向上しますが、その効果は明ら​​かではなく、コンピュータ リソースの消費量は非常に多くなります。

モデルのパフォーマンスをさらに評価した後、線形モデルを評価できるようにデータセットをスケーリングできます。正規化またはスケーリングされた特徴は、機械学習モデルまたは特徴選択モジュールで使用できます。

特徴選択にはさまざまな方法があります。最も一般的に使用される方法の 1 つは、貪欲アルゴリズム選択 (前方または後方) です。具体的には、特徴を選択し、固定された評価マトリックスでモデルをトレーニングしてそのパフォーマンスを評価し、次に特徴を 1 つずつ追加または削除して、各ステップでモデルのパフォーマンスを記録します。最後に、パフォーマンス スコアが最も高い機能が選択されます。貪欲アルゴリズムの AUC とその評価マトリックスの例は、次の場所にあります。

https://github.com/abhishekkrthakur/greedyFeatureSelection をご覧ください。

このアプリは完璧ではないため、要件に応じて変更する必要があることに注意することが重要です。

その他のより高速な特徴選択方法では、モデルから最適な特徴を選択します。ロジスティック回帰モデルの係数を使用したり、ランダムフォレストをトレーニングして最適な機能を選択したりして、それを他の機械学習モデルで使用することができます。

過剰適合しないように、推定値またはハイパーパラメータの数をできるだけ少なくすることを忘れないでください。

特徴選択は、Gradient Boosting Machine を使用して実現することもできます。 xgboost を使用できる場合は、GBM は使用しないでください。xgboost の方がはるかに高速でスケーラブルです。

スパース データ セットの場合、特徴選択にランダム フォレスト分類器/ランダム フォレスト回帰器または xgboost を使用することもできます。

正のスパース データセットから特徴を選択するためのもう 1 つの一般的な方法は、カイ 2 乗に基づく特徴選択であり、これは scikit-learn で利用できます。

ここでは、カイ二乗検定と SelectKBest メソッドを組み合わせて、データから 20 個の特徴を選択しました。これ自体も、機械学習モデルを改善するために使用するハイパーパラメータの 1 つです。

中間変換体を保存することを忘れないでください。これらを使用して、検証セットのパフォーマンスを評価します。

次の(または、その直後の)主要なステップは、モデルの選択とハイパーパラメータの最適化です。

一般的に、機械学習モデルを選択するには次のアルゴリズムを使用します。

(1)分類

  • ランダムフォレスト
  • 骨髄線維症
  • ロジスティック回帰
  • ナイーブベイズ
  • サポートベクターマシン
  • K近傍法

(2)回帰

  • ランダムフォレスト
  • 骨髄線維症
  • 線形回帰
  • リッジ
  • 投げ縄
  • SVR

どのパラメータを最適化する必要がありますか? 最適なパラメータを選択するにはどうすればよいでしょうか? これらは、よく遭遇する質問です。大規模なデータセットでさまざまなモデルとパラメータを扱った経験がなければ、これらの質問に答えることはできません。経験豊富な人は自分の秘密を公表したがりません。幸いなことに、私は共有したい豊富な経験を持っています。さまざまなモデルのハイパーパラメータの秘密を見てみましょう。

RS* = 適切な値が何であるかを判断するのは難しいため、これらのハイパーパラメータ間をランダムに検索します。

私の謙虚な意見(原作者の個人的な意見)では、上記のモデルは他のモデルよりも優れているため、他のモデルを評価する必要はありません。

繰り返しますが、これらの変換を保存することを忘れないでください。

次に、検証セットに対して同じことを行います。

上記のルールとフレームワークは、私が遭遇したデータセットではうまく機能しました。もちろん、特に複雑な状況では失敗することもあります。世の中に完璧というものは存在しません。機械学習と同じように、私たちは学びながら改善し続けることしかできません。

オリジナル:

http://www.iamwire.com/2016/10/approaching-almost-any-machine-learning-problem/142291?from=groupmessage&isappinstalled=0

[この記事は51CTOコラムBig Data Digest、WeChatパブリックアカウント「Big Data Digest(id: BigDataDigest)」のオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  ニューラルネットワークの問題を解決するための新しいアイデア: OpenAI は線形ネットワークを使用して非線形問題を計算します

>>:  マイクロソフト CEO ナデラ氏へのインタビュー: 人工知能の全体的な方向性と将来はどのようなものでしょうか?

ブログ    
ブログ    

推薦する

JD.comクラウドファンディング599元、業界最安値を突破、Nokelock X1セルフパワースマートドアロックがイノベーション革命をリード

2019年5月15日、深センIoTロックテクノロジー株式会社は北京金宇シェラトンホテルで「nokel...

NvidiaとFoxconnがAIに特化した新しいデータセンターの開発で提携

ジェンセン・フアンとヤンウェイ・リウが、AIイノベーションに特化した「工場」を建設するという新しいプ...

2019年の世界人工知能チップ産業の市場競争状況の分析

1. 世界の人工知能チップ産業の企業概要の分析近年、さまざまな勢力が AIチップに注目しています。参...

...

2021年12月のドローン業界の最新動向を3分で振り返る

[[442512]]現在、人工知能や5Gなどの技術の助けを借りて、我が国のドローン開発は急速な成長の...

ガートナー: 高等教育における人工知能

人工知能 (AI) は高等教育に大きな進歩を遂げており、何らかの形で AI を導入した教育機関は、学...

音声における GPT の瞬間: Meta が複数のタスクを解決するための普遍的なモデルである「画期的な」生成音声システムをリリース

GPT や DALL-E などの大規模な生成モデルが自然言語処理やコンピューター ビジョンの研究に革...

5G、自動運転、人工知能はどの段階にあるのでしょうか?一枚の写真でわかる

世界で最も権威のあるIT市場調査・コンサルティング会社であるガートナーは8月29日、新技術の2019...

...

Amazon AWSが新しいAIチップをリリース、Nvidia H200も提供

11月29日、米国時間火曜日に開催されたReinventカンファレンスにおいて、アマゾンのクラウドコ...

マイクロソフト、Bing Chat と Bing Search にダーク モードを導入開始

7月27日、Microsoft Bingエンジニアリングおよび製品責任者のJordi Ribas氏は...

ディープニューラルネットワークはディープフェイクを検出できる

開発者がディープフェイクのパンドラの箱を開けたことで、本物と区別がつかないほどリアルな写真を偽造する...

...

「ニューラル+シンボリック」:知識グラフの観点から見た認知推論の発展

[[376956]]過去10年間の人工知能の波の中で、ディープラーニングに代表される人工知能技術は、...

ディープラーニングにも欠陥があり、同質のAIスタートアップ間の競争は熾烈になるだろう

[[186262]]この人工知能の波は急速に到来し、画像認識、音声認識、自動運転など、多くの難題を次...