StonksMaster:PythonとMLを用いた株価の予測−第2部



これは、我々の前のポストからの記事のフォローアップです.


前のポストでは、機械学習の基礎と株価予測のためのその回帰モデルについて議論しました.今日、教師の機械学習で使用されるアンサンブル法とブースティングモデルについて話しましょう.

アンサンブル法


アンサンブル法は,複数の機械学習アルゴリズムを併用して構成アルゴリズムのいずれかから得られない良好な予測性能を得るための機械学習手法である.ベースモデルが結合される方法は、平均化または最大投票のような単純な方法から、ブーストまたはスタッキングのように複雑になる.

我々が言うことができた基本的な比較を引くために、特定の議案のために投票しているメンバーで満たされる議会または彼らの意見を述べることを想像しましょう.メンバーはモデルであり、彼らの意見はモデルの結果である.それで、法案が通過するかどうか決めることはメンバーと彼らの票に依存します.同様に、アンサンブル学習では最終的な結果は、それぞれのベースモデルの結果に基づいています.これは二重分類問題の場合の正確な状況である.しかし、基本的な考えは、他のすべてのアンサンブル方法のためにも同じです.我々は、それが絵をより明確にしたことを望みます.

過去数年の間に、アンサンブル学習技術は人気の巨大なジャンプを見ました、そして、これの後の理由は全く明白です、彼らは少数の弱いベースモデルから本当に堅牢なモデルを構築するのを助けます.

アンサンブル


アンサンブルモデルを使用する複数の方法があります.最大の投票や平均化のような単純なものだけでなく、ブースト、バギングやスタッキングのようなより複雑なものがあります.
多数投票
多数の投票の3つのバージョンがあります、そこで、アンサンブル方法はクラスを選びます
  • すべての分類器が同意する
  • 分類器の半分以上の少なくとも1つによって予測される
  • 票の合計が50 %を超えたか否か
  • 平均化
    平均化は回帰問題に一般的に使用される単純な方法である.ここでは、我々は単により堅牢な結果を得るために予測の平均を取る.この方法は非常に単純に見えるかもしれませんが、ほとんどの場合、それゆえ、アンサンブル学習の目的に役立つ単一のモデルよりも良い結果を与える.
    加重平均
    予測を平均することは大きな結果をもたらします、しかし、それは大きな流れを持ちます、そして、それは大部分のケースにおいて、1つのモデルがより予測力を持っているか、他のものより入力問題に基づいてよりよく実行するので、我々は最終的な予測により多くの重さを与えたいです.
    袋掛け
    バギングは、ランダムな森のようなアルゴリズムで使用される人気のあるアンサンブル法です.それは、モデルを平均するだけでなく、彼らに異なるトレーニングセットを与えることによって可能にされる無相関のモデルを作成することによって正確さを得ます.
    ブースト
    ブースティングはシーケンシャルプロセスで、各モデルは前のモデルのエラーを修正しようとします.この理由により、後続モデルは前のモデルに依存しているので、並列に訓練するのではなく、順次モデルを訓練する.

    勾配ブースティング


    このチュートリアルでは、ストック予測に使用された以前のチュートリアルで使用されているデータセット上で、グラデーションブースティング回帰(GBR)に焦点を当て、使用します.
    勾配gradient boosting アルゴリズムが損失を最小にするために勾配降下を使用するという事実から来ます.
    グラデーション降下法を読む
    決定木は勾配ブースティングアルゴリズムにおいて弱い学習者やベースモデルとして用いられる.決定木はデータを木表現に変換する.ツリー表現の各内部ノードは属性であり、各葉ノードはクラスラベルを示す.
    どのように決定木は見えますか?

    上記のイメージのように?確かにではない.

    次のようになります.
    続きを読むDecision Trees .
    GBRは、現在の予測と既知の正しい目標値との違いを計算します.
    その後、勾配ブリーキング回帰は、それらの残差に特徴をマップする弱いモデルを訓練する.弱いモデルによって予測されたこの残差は既存のモデル入力に加えられ,この過程はモデルを正しい目標に向けた.繰り返し、このステップを繰り返し、全体モデル予測を改善する.

    GBRを実装するための一般的な手順は以下の通りです:
  • 弱学習者の選択
  • 加法モデルの使用
  • 損失関数の定義
  • 損失関数の最小化
  • 勾配ブーストの利点

  • ランダムな森のような大部分のベースモデルより良い精度と精度
  • データの前処理が少ない
  • 様々な種類の入力データによりよく生産するためのより高い柔軟性
  • 勾配ブースティングパラメータ


    推定量
    それはn_estimators .
    このパラメータのデフォルト値は100です.
    実行する昇圧ステージの数.グラデーションブースティングはかなりフィットするためにかなり堅牢であるので、大きい数は通常より良いパフォーマンスをもたらします.つまり、推定子の数は森林の木の数を表している.木のより多くのデータがより良い学習に役立ちます.他方、より多くの木は、より高いトレーニング時間をもたらすことができます.したがって、我々は右のバランス値を見つける必要がありますn_estimators 最適パフォーマンスのために.
    最大深度
    それはmax_depth .
    のデフォルト値max_depth は3であり、任意のパラメータです.最大深度は勾配ブースティング回帰器における決定木推定量の深さである.最大深度は、ツリー内のノード数を制限します.最高のパフォーマンスのためにこのパラメータを調整します最良の値は入力変数の相互作用に依存する.最良のパフォーマンスのためにこのパラメータの最適値を見つける必要があります.
    学習率
    それはlearning_rate .
    のデフォルト値learning_rate は0.1で、オプションのパラメータです.学習率は,最小反復関数の方へ移動しながら,各反復におけるステップサイズを決定する勾配ブースティングregressorアルゴリズムにおけるハイパーパラメータである.
    基準
    それはcriterion .
    のデフォルト値criterion は、任意のパラメータです.分割の品質を測定する機能.決定木は決定木の分割の質を測定するのに用いられる.MSEは平均二乗誤差を表します.FriedmanRank MSEの既定値は、一般的には、いくつかの場合により良い近似を提供することができます.
    損失
    それはloss .
    損失のデフォルト値はlsで、オプションのパラメータです.このパラメータは、最適化される損失関数を示す.最小二乗回帰を表すlsのような損失関数が存在する.LADと略称される最小絶対偏差は別の損失関数である.Huberは2つの組み合わせです.Quantileは、クォート回帰を使用します.
    サブサンプル
    それはsubsample .
    サブサンプルのデフォルト値は1.0であり、任意のパラメータです.サブサンプルは、個々の木学習者に合っているサンプルの分数です.If subsample は1.0より小さいので、分散の減少とバイアスの増加につながる.
    反復回数
    これはn_iter_no_change .
    副サンプルのデフォルト値はNoneです、そして、それは任意のパラメタです.このパラメータを使用すると、検証のスコアがさらに反復して改善されていないときに、初期停止がトレーニングを終了するために使用されるかどうかを判断できます.このパラメータを有効にすると、validation_fraction 検証スコアが改善されていない場合の検証データと終了トレーニングとしてのトレーニングデータのサイズ.
    このモデルのパラメタに関するより多くの洞察のためにdocumentation

    基本勾配ブースの改善


    グラデーションブースティングは貪欲なアルゴリズムであり、トレーニングデータセットを非常に迅速に克服することができる.したがって、我々はモデルを調整したり、様々なテクニックを使用してそれを改善する必要があります.
    基本的な勾配ブースティングアルゴリズムの性能を高めるいくつかの方法があります.
  • ツリー制約
  • 収縮
  • ランダムサンプリング
  • ペナルティド学習
  • GBRチューニングを参照here .

    基本実装


    以下は、この記事の前の部分でインポートされたiExFinanceデータセットに使用されるグラデーションブースティングregressorの基本的な実装です.
    # GBR
    from sklearn import ensemble
    # Fit regression model
    params = {'n_estimators': 500, 'max_depth': 4, 'min_samples_split': 2,
              'learning_rate': 0.01, 'loss': 'ls'}
    model = ensemble.GradientBoostingRegressor(**params)
    model.fit(x_training_set, y_training_set)
    
    from sklearn.metrics import mean_squared_error, r2_score
    model_score = model.score(x_training_set,y_training_set)
    # Have a look at R sq to give an idea of the fit ,
    # Explained variance score: 1 is perfect prediction
    print('R2 sq: ',model_score)
    y_predicted = model.predict(x_test_set)
    
    # The mean squared error
    print("Mean squared error: %.2f"% mean_squared_error(y_test_set, y_predicted))
    # Explained variance score: 1 is perfect prediction
    print('Test Variance score: %.2f' % r2_score(y_test_set, y_predicted))
    
    私たちはあなたがこの洞察力を発見願っています.
    訪問するwebsite 私たちについてもっと知り、私たちについても知っておきましょう.
  • Facebook


  • 閉じるこの動画はお気に入りから削除されています.
    それまでは
    安全に滞在し、ソースがあなたとすることがあります!

    この記事は共同で書かれている
    これについてアクションボタン
    背景色:こっち重要
    色:千円!重要
    ボーダーカラー:こっち重要


    リシャブラククマル


    Web Developer | ML Enthusiast | Blockchain | UI Developer | Graphic Designer
    -アクションボタン
    背景色:こっち重要
    カラー:竜華ffffff!重要
    ボーダーカラー:こっち重要


    ニルルクアガルワル


    Computer Science Student | Web Developer | Cyber Security | ML Enthusiast