タグ

最適化に関するisayaf884のブックマーク (12)

  • Adjoint法とは? – その考え方を解説します(2) | IDAJ-BLOG

    皆さま、こんにちは。 IDAJの伊藤です。 前回に引き続き、最適設計におけるAdjoint法の考え方をご紹介したいと思います。 Adjoint法は、Lagrangeの未定乗数法を応用した方法です。 Lagrangeの未定乗数法は、制約条件を考慮しながら関数の極値を求めるための方法です。制約条件とは、設計変数の取ることのできる範囲を等式で表したものです。不等式の場合もあるのですが、ここでは等式の場合のみを考えます。 いま、半径1の円に内接する長方形の面積を最大化する問題を考えます。なお、円と長方形の重心は共に原点にあるものとします。このとき、設計変数を長方形の長辺と短辺の長さの半分とし、目的変数は、最小化として定義したいので、長方形の面積に「-1」を掛けた値とします。また、円に内接するという条件から、長辺と短辺の長さはそれぞれ自由に決めることはできず、長方形の頂点が円周上にあるという条件式が

    Adjoint法とは? – その考え方を解説します(2) | IDAJ-BLOG
  • 【Python】バックテストを行う|ただかつ@株式投資を科学する

    「移動平均線がゴールデンクロスしたときに買う」など、一定の売買ルールに従って取引を行った場合の収支を、過去のデータを使って検証することをバックテストといいます。 バックテストを行うことで、移動平均線の日数やテクニカル指標の設定値などのパラメータについて、その有効性を確認したり最適値を求めたりすることもできます。 ここでは、トヨタの株価データを取得し、簡単なトレードルールに従った場合の収支をバックテストし、更に売買ルールのパラメータを最適化してみます。 なお、最低限のポイントのみの説明にするため、Pythonライブラリ、モジュール等のインストール方法については割愛させて頂きます。お使いのPC環境等に合わせてインストールしてもらえればと思います。 1.株価データを取得する下記を参考にOHLCV(始値 / 高値 / 安値 / 終値 / 出来高)形式のトヨタ株(7203.JP)データを取得します。

    【Python】バックテストを行う|ただかつ@株式投資を科学する
  • Multiple Time Frames

    Multiple Time Frames¶Best trading strategies that rely on technical analysis might take into account price action on multiple time frames. This tutorial will show how to do that with backtesting.py, offloading most of the work to pandas resampling. It is assumed you're already familiar with basic framework usage. We will put to the test this long-only, supposed 400%-a-year trading strategy, which

    isayaf884
    isayaf884 2024/03/13
    複数条件
  • sklearn準拠モデル作成をしてGridSearchCVを行いたい時にハマったこと - Qiita

    ちょこっと詰まったことのメモ 自作するクラスの__init__()において、 引数とインスタンス変数の名前を揃えないとエラーが出ちゃいます. 例えば、以下のような歪みのあるコイン投げで二値分類を行うようなsklearn準拠モデルを作成した時、self.p = thetaみたいな感じで引数とインスタンス変数の名前を揃えないと以下のようなエラーが出ます. from sklearn.base import BaseEstimator, ClassifierMixin from sklearn.model_selection import GridSearchCV import numpy as np class MyClassifer(BaseEstimator, ClassifierMixin): def __init__(self, theta=0.5): self.p = theta de

    sklearn準拠モデル作成をしてGridSearchCVを行いたい時にハマったこと - Qiita
  • 情報学広場:情報処理学会電子図書館

    ※ユーザ登録は無料です. 電子図書館のご利用にあたっては「情報処理学会電子図書館利用規約」をご遵守下さい。 掲載されているコンテンツには無料のものと有料のものがあります。有料コンテンツのご購入はクレジットカード決済のみとなります。 領収書をご希望の方は「電子図書館専用領収書発行依頼」(送信フォーム)にてご連絡ください。 複写および転載をされる方へ一般社団法人情報処理学会では複写複製および転載複製に係る著作権を学術著作権協会に委託しています。当該利用をご希望の方は、学術著作権協会が提供している複製利用許諾システムもしくは転載許諾システムを通じて申請ください。 尚、会会員(賛助会員含む)および著者が転載利用の申請をされる場合については、学術目的利用に限り、無償で転載利用いただくことが可能です。ただし、利用の際には予め申請いただくようお願い致します。

  • 交差検証(Python実装)を徹底解説!図解・サンプル実装コードあり

    何かを「正しい」と判断するとき、読者の皆様は何を根拠としますか。例えば、経験を元にする場合、一度だけの経験では偶然の可能性も考えられます。これが複数の経験からの判断であれば、少しは信憑性が増すと思います。一度の結果では信憑性が薄くとも、多くの結果を得られればある程度の精度で判断できる材料となります。 機械学習も同様です。様々な特徴量を扱う機械学習では、予測モデル(以下:モデル)の評価が当に「正しい」のかを判断することは難しい問題です。特に、過学習などの問題は機械学習技術が発展している近年でも残り続けています。 稿では、機械学習を扱う上で重要な交差検証(クロスバリデーション )について解説します。前半ではデータ分割の基と、交差検証の定義を解説をします。後半では実際のデータセットを用いて交差検証の実装を行います。交差検証は様々な場面で紹介されていますが、実際に学ぶと詰まるポイントが多い

    交差検証(Python実装)を徹底解説!図解・サンプル実装コードあり
  • [Python] product関数を使って多重ループを1つのループにする - 青色の地図帳

    多重ループを書くとネストが深くなり、読みにくさが倍増する。 関数を使うなど、ループを浅くする方法はいくつかあるが、ここではPython標準ライブラリのitertoolsライブラリを使う方法を紹介する。 例えば次のようなコードがあったとしよう。 コード 1: for i in range(3): for j in range(2): print([i, j]) 出力 1: [0, 0] [0, 1] [1, 0] [1, 1] [2, 0] [2, 1] このコードには二重ループが含まれている。二重ループであればそれほど読みにくさは感じないが、他の処理と組み合わさって三重以上のループになってしまった場合、読みにくさを感じる人も多いのではないか。 そこで、Python標準ライブラリであるitertoolsライブラリに用意されている、product関数を使って、この二重ループを一重ループにする。

    [Python] product関数を使って多重ループを1つのループにする - 青色の地図帳
  • 確率的勾配降下法の大雑把な意味 - 具体例で学ぶ数学

    確率的勾配降下法とは、勾配法という最適化手法において必要な勾配の計算を、確率を使うことで高速に行う方法です。 このページでは、確率的勾配降下法の意味を解説します。また、確率的勾配降下法を理解するために必要な前提として「普通の」勾配降下法についても説明します。

  • ハイパーパラメータとは?チューニングの手法を徹底解説(XGBoost編)

    macOSmacOS Mojvabe 10.14.6 Python 3.6.9 NumPy 1.14.6 Pandas 0.22.0 Scikit-Learn 0.20.1 XGBoost 1.0.2 ハイパーパラメータ(英語:Hyperparameter)とは機械学習アルゴリズムの挙動を設定するパラメータをさします。少し乱暴な言い方をすると機械学習のアルゴリズムの「設定」です。 この設定(ハイパーパラメータの値)に応じてモデルの精度やパフォーマンスが大きく変わることがあります。例えば男女を分類するモデルを構築していた場合、特に調整を行わずに初期設定のままモデリングを行なった結果、最初は90%の正解率を得ることができたとします。90%の精度では使い物にならないと上司に怒られたので、ハイパーパラメータ(モデルの設定)を調整したところ93%へ改善することがあります。ハイパーパラメータチュ

    ハイパーパラメータとは?チューニングの手法を徹底解説(XGBoost編)
  • 時系列データでのGrid Search - Qiita

    はじめに 意外と情報が見つからなかったのでまとめてみました。 sklearn.model_selection.TimeSeriesSplitを用いた実行例を以下に示します。 実行例 import numpy as np import xgboost as xgb from sklearn.model_selection import TimeSeriesSplit, GridSearchCV X = np.array([[40, 15, 36, 11, 100, 22, 21, 76, 3, 32], [3.1, 3.5, 1.3, 2.1, 8.3, 1.1, 3.4, 2.0, 2.4, 5.6]]).T y = np.array([3, 21, 13, 7, 4, 1, 19, 2, 1, 1]) tscv = TimeSeriesSplit(n_splits=3) for trai

    時系列データでのGrid Search - Qiita
  • 予測モデルは機械学習パイプライン化しよう(Python)

    予測モデルなどを構築するとき、パイプライン化することがあります。 もちろん、探索的なデータ分析でも、パイプラインを使いながら実施することもあります。 例えば、Rなどでは伝統的に、パイプラインを使いながら探索データ分析をします。しかし、そうでなければならないというわけでもありません。 一方で予測モデルは、機械学習パイプライン化したほうが、分かりやすいですし扱いやすいです。 今回は、「予測モデルは機械学習パイプライン化しよう(Python)」ということで、PythonのScikit-learn(sklearn)を使い、パイプラインの構築の仕方について簡単に説明します。 パイプラインとは? 「パイプライン」というキーワードは、色々な分野で使われています。今回の「パイプライン」(pipeline)は、「パイプライン処理」と呼ばれるコンピュータ用語です。 パイプライン処理とは、複数の処理プログラムを

    予測モデルは機械学習パイプライン化しよう(Python)
  • https://scikit-learn.org/stable/model_selection.html

  • 1