線形回帰は、多くの場合、機械学習やデータサイエンスで最初に学ぶアルゴリズムです。シンプルでわかりやすいですが、機能が限られているため、実際のビジネスでは最適な選択とは言えません。ほとんどの場合、線形回帰は、研究中の新しい方法を評価および比較するためのベースライン モデルとして使用されます。 現実世界の問題に取り組む際に知っておくべき、試してみるべき回帰アルゴリズムは他にもたくさんあります。この記事では、Scikit-learn と XGBoost を使用した実践的な演習を通じて、9 つの一般的な回帰アルゴリズムを学習します。この記事は次のように構成されています。 序文今回使用したデータは、Python サードパーティの vega_datasets モジュールに隠された、よく知られたデータ サイエンスの公開データセットです。 vega_datasets のデータ セットには、統計データ、地理データ、データ量の異なるバージョンなど、多くのコンテンツが含まれています。たとえば、フライト データ セットには、2k、5k、200k、3m などの複数のバージョンが含まれています。 呼び出しは、df = data('iris') または df = data.iris() と記述します。データは、Anaconda3/Lib/site-packages/vega_datasets ディレクトリにあります。ローカル データは、local_datasets.json に記述されています。ローカルストレージは csv 形式と json 形式です。 データセットのインポートと使用df = データ.車( ) df . 情報() < クラス'pandas.core.frame.DataFrame' > データ処理# 特定の列に NaN がある行をフィルタリングする 1. 線形回帰線形回帰は、機械学習やデータサイエンスで最初に学習されるアルゴリズムであることが多いです。線形回帰は、入力変数 (X) と単一の出力変数 (y) の間に線形関係があると想定する線形モデルです。一般的に言えば、2 つの状況があります。
このアルゴリズムは非常に一般的であり、Scikit-learn[2]には単純な線形回帰LinearRegression()アルゴリズムが組み込まれています。次に、小さなサルの LinearRegression オブジェクトを作成し、トレーニング データを使用してトレーニングします。 from sklearn . linear_model import LinearRegression # モデルを作成してトレーニングする トレーニングが完了したら、LinearRegression の coef_ 属性でモデル係数パラメータを表示できます。 線形回帰係数 配列([[ - 0.15784473 ]]) 次に、トレーニング済みのモデルを使用して、トレーニング データに線を当てはめます。 # トレーニングデータの点と近似線をプロットする まとめ線形回帰に関するいくつかの重要なポイント:
2. 多項式回帰多項式回帰は、非線形に分離可能なデータのモデルを作成する場合に最もよく使用される選択肢の 1 つです。これは線形回帰に似ていますが、変数 X と y の関係を使用し、データ ポイントに適合する曲線を描く最適な方法を見つけます。 多項式回帰の場合、独立変数の一部は 1 より大きい累乗を持ちます。たとえば、次のような二次モデルを提案することができます。
Scikit-learn には多項式回帰 PolynomialFeatures が組み込まれています。まず、指定された次数の多項式特徴すべてで構成される特徴行列を生成する必要があります。 sklearn からの前処理インポートPolynomialFeatures 次に、LinearRegression オブジェクトを作成し、先ほど生成した X_poly 特徴行列に適合させます。 # 多項式回帰モデル このモデルをトレーニング データに線で当てはめると、X_plot は次のようになります。 # トレーニングデータの点と近似線をプロットする まとめ多項式回帰に関するいくつかの重要なポイント:
3. サポートベクター回帰サポートベクターマシンが分類問題の処理に非常に効果的であることはよく知られています。実際、SVM は回帰問題でもよく使用され、サポート ベクター回帰 (SVR) と呼ばれます。繰り返しになりますが、Scikit-learn には SVR() と呼ばれる組み込みメソッドがあります。 SVR モデルを適合する前に、データを正規化し、機能をスケーリングすることをお勧めします。データの正規化の目的は、各機能の重要性が同じになるようにすることです。 StandardScaler() メソッドを通じてトレーニング データを操作します。 sklearn . svm からSVR をインポートします 次に、カーネルを「rbf」に設定し、ガンマを「auto」に設定した SVR オブジェクトを作成しました。その後、fit() を呼び出して、スケーリングされたトレーニング データに適合させます。 svr_regressor = SVR ( カーネル= 'rbf' 、 ガンマ= 'auto' ) 次に、このモデルを使用して、次のようにトレーニング データ scaled_X に線を当てはめます。 plt .scatter ( scaled_X , scaled_y , color = 'DarkTurquoise' , まとめサポートベクター回帰のいくつかの重要なポイント
4. 決定木回帰決定木 (DT) は、分類と回帰のための非パラメトリックな教師あり学習法です。目標は、データの特徴から推論された単純な決定ルールを学習して、ターゲット変数の値を予測するツリー モデルを作成することです。ツリーは、区分的に定数近似として見ることができます。 決定木回帰も非常に一般的なので、Scikit-learn には DecisionTreeRegressor が組み込まれています。DecisionTreeRegressor オブジェクトは、次のようにして特徴スケーリングなしで作成できます。 sklearn.tree からDecisionTreeRegressor をインポートする 次に、トレーニング済みのモデルを使用してフィッティング曲線を描画します。 X_grid = np . arange ( 最小( X ), 最大( X ), 0.01 ) まとめ決定木に関するいくつかの重要なポイント:
5. ランダムフォレスト回帰一般的に、ランダム フォレスト回帰は、データセットのさまざまなサブサンプルに多数の決定木を適合させ、平均化を使用して予測精度を向上させ、過剰適合を制御するメタ推定器であるという点で、決定木回帰と非常によく似ています。 ランダム フォレスト回帰は、ツリー構築アルゴリズムに固有の微妙な過剰適合と不足適合のトレードオフにより、回帰では決定木よりもパフォーマンスが優れている場合とそうでない場合があります (ただし、分類では通常、パフォーマンスが優れています)。 ランダム フォレスト回帰は非常に一般的なので、Scikit-learn には RandomForestRegressor が組み込まれています。まず、次のように、指定された数の推定値を持つ RandomForestRegressor オブジェクトを作成する必要があります。 sklearn.ensemble からRandomForestRegressor をインポートする 次に、トレーニング済みのモデルを使用してフィッティング曲線を描画します。 X_grid = np . arange ( 最小( X ), 最大( X ), 0.01 ) まとめランダム フォレスト回帰に関する重要なポイントをいくつか紹介します。
6. LASSO回帰LASSO 回帰は、収縮を使用する線形回帰のバリエーションです。収縮とは、データ値を平均として中心点に向かって縮小するプロセスです。このタイプの回帰は、重度の多重共線性(特徴が互いに強く相関している)を示すモデルに適しています。 Scikit-learn には LassoCV が組み込まれています。 sklearn.linear_model からLassoCV をインポートする 次に、トレーニング済みのモデルを使用してフィッティング曲線を描画します。 plt .scatter ( X 、 y 、 color = 'teal' 、 edgecolors = 'black' 、 まとめLasso 回帰に関するいくつかのポイント:
7. リッジ回帰リッジ回帰は、両方の手法が収縮を使用するという点で、LASSO 回帰と非常によく似ています。リッジ回帰と LASSO 回帰はどちらも、重度の多重共線性 (互いに高度に相関する特徴) を示すモデルに適しています。それらの主な違いは、Ridge が L2 正則化を使用する点です。つまり、LASSO 回帰のように係数がゼロになることはありません (むしろゼロに近くなります)。 Scikit-learn には RidgeCV が組み込まれています。 sklearn.linear_model からRidgeCV をインポートする 次に、トレーニング済みのモデルを使用してフィッティング曲線を描画します。 plt .scatter ( X 、 y 、 color = 'teal' 、 edgecolors = 'black' 、 まとめリッジ回帰に関するいくつかの重要なポイント:
8. ElasticNet回帰ElasticNet は、L1 および L2 正則化を使用してトレーニングされた別の線形回帰モデルです。これは LASSO とリッジ回帰手法のハイブリッドであるため、重度の多重共線性 (特徴が互いに高度に相関している) を示すモデルにも適しています。 Lasso と Ridge のトレードオフの実際的な利点は、Elastic-Net が回転時に Ridge の安定性の一部を継承できることです。 Scikit-learn には ElasticNetCV モデルが組み込まれています。 sklearn.linear_model からElasticNetCV をインポートします。 次に、トレーニング済みのモデルを使用してフィッティング曲線を描画します。 plt .scatter ( X 、 y 、 color = 'DarkTurquoise' 、 edgecolors = 'black' 、 label = 'Train' ) まとめElasticNet 回帰のいくつかの重要なポイント:
9. XGBoost回帰Extreme Gradient Boosting (XGBoost) は、勾配ブースティング アルゴリズムの効率的な実装です。勾配ブースティングとは、分類や回帰の問題に使用できるアンサンブル機械学習アルゴリズムのクラスを指します。 XGBoostは、もともとtianqi-chen[3]が2016年に発表した論文「XGBoost: A Scalable Tree Boosting System[4]」で開発されたオープンソースライブラリです。このアルゴリズムは計算効率と効果を高めるように設計されています。 最初のステップは、まだインストールしていない場合は XGBoost ライブラリをインストールすることです。 xgboostをpip でインストールする XGBoost モデルは、XGBRegressor のインスタンスを作成することによって定義できます。 xgboost からXGBRegressor をインポートする
次に、トレーニング済みのモデルを使用してフィッティング曲線を描画します。 plt .scatter ( X 、 y 、 color = 'DarkTurquoise' 、 edgecolors = 'black' 、 label = 'Train' ) まとめXGBoost に関する重要なポイントをいくつか紹介します。
最後にこれでこの記事は終わりです。この記事では、Scikit-learn と XGBoost を使用した実践的な演習を通じて、9 つの一般的な回帰アルゴリズムを紹介しました。現実世界の問題を解決するときは、さまざまなアルゴリズムを試して、現実世界の問題を解決するための最適な回帰モデルを見つけることができます。 |
数日前、OpenAIはDALL·E 3をリリースしたばかりで、ビジュアルイメージは再び新たな段階に上...
[[418811]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitA...
[[408914]] 1. パドルライトとパドルスリム現在、ディープラーニングの分野には 2 つの派...
翻訳者 | 張毅校正 | 梁哲、孫淑娟出典: frimufilms が作成したビジネス写真 - ww...
家には鉱山も王座もありませんが、王子様やお姫様になりたいという夢を持たない人がいるでしょうか?最近、...
[[345484]]誰もが Google 翻訳をよく知っているはずですが、ほぼすべての既知の言語を私...
最近、Google は年次カンファレンス Google Cloud Next を開催しましたが、オー...
最近、GPT-4 は静かに更新され、マルチモーダル性や音声対話などの機能が追加されました。しかし、O...
1956 年の夏、アメリカの小さな町ハノーバーの静かなダートマス大学に、ジョン・マッカーシー (Li...
OpenAI はおそらく歴史上最も困難な AI 著作権訴訟に直面している。原告のニューヨーク・タイ...
51年前、アポロ13号が宇宙に打ち上げられました。打ち上げ直後、宇宙船は大きな爆発に遭遇した。宇宙船...
近年、OpenAI、Microsoft、Google など多くの企業やスタートアップチームが独自のチ...