タグ

algorithmに関するhoxo_mのブックマーク (48)

  • 統計学で用いる行列演算の小技 - Qiita

    はじめに 千葉大学・株式会社Nospareの川久保です.今回は,統計学(特に多変量解析)で多く出てくる行列演算の小技集を,線形回帰モデルにおける簡単な実用例を交えて紹介します. 転置に関する公式 行列の転置とは,$(i,j)$要素を$(j,i)$要素に入れ替えることです.$m$行$n$列の行列$A$の$(i,j)$要素を$a_{ij} \ (i=1,\dots,m; j=1,\dots,n)$とすると,$A$を転置した$n$行$m$列の行列$A^\top$の$(j,i)$要素が$a_{ij}$となります.また,自明ですが,転置行列の転置は元の行列になります.すなわち,$(A^\top)^\top = A$です. 行列の和の転置 行列$A$と$B$の和の転置は,転置行列の和です.つまり, が成り立ちます. 行列の積の転置 次に,行列$A$と$B$の積$AB$の転置としては,以下の公式が成り立

    統計学で用いる行列演算の小技 - Qiita
  • はじめに - アルゴリズムとデータ構造大全

    はじめに このドキュメントは,主に競技プログラミングで出題される問題を解く際に利用できるアルゴリズムやデータ構造をまとめたものです.特定の問題にはあまりフォーカスしないため,問題を解く際の考察の仕方等の内容はありません.詳しく,正確に,分かりやすく書いていこうと思っています. このドキュメントは執筆途中です. 想定する読者 C++を用いたプログラミングに慣れている方を読者として想定しており,C++言語の仕様や,文法にはあまり触れません.また,計算量という用語についても説明しません.ただし,償却計算量など,計算量の見積もりが複雑なものについては必要に応じて説明します. コードについて このドキュメントで登場するコードは,可読性向上のため,以下のようなコードがファイルの先頭に記述してあることを前提としています.また,適切な問題を用いてコードの検証がなされている場合は,コード周辺にのように,検証

  • numpy.arange関数におけるstepに0.1を指定したときの振る舞いとその原因を追ってみた話 - 備忘録

    はじめに 先日、接点QB氏による以下のツイートを見かけた: ?????? 俺の脳みそがバグってるのか?? pic.twitter.com/zyzzdb3ijS— 接点QB (@setten_QB) February 10, 2021 興味深いので少し調べてみたというわけである(少々長い記事)。 はじめに numpyのarange関数の振る舞い 浮動小数点数の表現形式と演算 浮動小数点数の倍精度表現 0.1の倍精度表現 1.0の倍精度表現 1.5の倍精度表現 1.6の倍精度表現 倍精度表現に基づく浮動小数点数演算 まとめ 参考 numpyのarange関数の振る舞い numpyのarange関数のステップ数に0.1を指定したときの振る舞いについて、 np.arange(1.0, 1.5, 0.1) とすると、0.1刻みで1.0, 1.1, 1.2, 1.3, 1.4までのarrayが得られた

    numpy.arange関数におけるstepに0.1を指定したときの振る舞いとその原因を追ってみた話 - 備忘録
  • 高速逆平方根(fast inverse square root)のアルゴリズム解説 - 滴了庵日録

    高速逆平方根とは? C言語のコード 検証 アルゴリズムの要点 [1] 逆平方根の計算を対数・指数の計算に置き換える [2] 浮動小数点型の内部表現を利用した対数・指数の近似計算 [2.1] 対数の近似 [2.2] σの最適値 [2.3] 整数型での解釈 [2.4] 逆平方根の計算とマジックナンバー0x5F3759DF [3] ニュートン法による収束で精度アップ 感想 高速逆平方根とは? 高速逆平方根(fast inverse square root)とは、平方根の逆数 を高速に計算するアルゴリズムです。平方根の逆数は逆平方根とも呼ばれます。逆平方根はベクトルの正規化などに用いられるので、これを高速に計算できるアルゴリズムには大きなご利益があります。 参照: Fast inverse square root - Wikipedia C言語のコード 高速逆平方根の関数を示します。0x5F375

    高速逆平方根(fast inverse square root)のアルゴリズム解説 - 滴了庵日録
  • PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記

    PHPPythonRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 稿では3言語の連想配列の従来実

    PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記
  • [PDF]陣内佑 (2020) ヒューリスティック探索入門

  • Bayesian Setsの特許について - のんびり読書日記

    別にブログに書いてもしょうがないかなーと思っていたのですが、同じような目に遭う方がいるかもしれないのでちょろっとだけ書いておきます。 先日Stupaという関連文書検索システムを公開したのですが、その中で使用していたBayesian Setsというアルゴリズムが既に特許を取得されているため、公開を停止してほしいってメールが来ました。以前に公開したBayesian SetsのCPANモジュールAlgorithm::BayesianSetsも同様に下ろしてほしいとのことでした。特許の内容は以下のページに書いてあります。 http://www.wipo.int/pctdb/en/wo.jsp?WO=2007063328 特許の出願者がBayesian Setsの論文の著者と大学の機関のようなので、おそらく論文発表の前に出願したのではないかと思います。請求項の内容などをすべて詳細に読んだわけではない

    Bayesian Setsの特許について - のんびり読書日記
  • Anomaly Detection in Streams with Extreme Value Theoryを読んだ - yasuhisa's blog

    Anomaly Detection in Streams with Extreme Value Theory Amossys-team/SPOT: SPOT algorithm implementation (with variants) KDD2017の異常検知の論文です。異常検知を行なうとき、何らかの閾値を設定しますがこの閾値の決定は難しいことが多いです(そして精度にはよく効いてくる...)。正規分布のように理論的によく知られていて、解析的にも扱いやすいような分布では、累積分布関数を逆に辿ると「99.9%に対応する閾値はこれ!」と設定することができます。しかし、確率分布を陽に仮定するとそれ以外の分布ではきちんと動かなかったり、データ毎にモデル化をする必要があります。陽に確率分布を仮定しない方法もありますが、そちらはデータが少ないor厳しめのパーセンタイルを指定したいときに難しさがありま

    Anomaly Detection in Streams with Extreme Value Theoryを読んだ - yasuhisa's blog
  • スツルムの定理 - Wikipedia

    スツルムの定理(スツルムのていり、英: Sturm's theorem)とは、実係数一変数多項式の任意に指定された実区間に含まれる(重複を含めない)実零点の個数を決定する方法である(扱える区間としては無限区間、半無限区間も含む)。 代数学の基定理によれば(一般には複素係数の)一変数多項式の重複を込めた複素零点の個数はその多項式の次数に等しいが、スツルムの定理では実係数多項式の実零点の個数を重複を考慮せずに扱っている。 スツルム列[編集] 実区間が与えられたとき、次の4つの条件を満足する実係数をもつ多項式列 は区間においてスツルム列(スツルム関数列)をなすという。 列中にある任意の隣り合う2つの多項式とは、区間に於いて共通の零点を持たない。 列中にある任意の隣り合う3つの多項式、、について、区間に於ける多項式の零点に対して、その両側の多項式のに於ける値の符号は逆になる(つまりかつならばであ

  • A Randomized Tensor Train Singular Value Decomposition

    The hierarchical SVD provides a quasi-best low rank approximation of high dimensional data in the hierarchical Tucker framework. Similar to the SVD for matrices, it provides a fundamental but expensive tool for tensor computations. In the present work we examine generalizations of randomized matrix decomposition methods to higher order tensors in the framework of the hierarchical tensors represent

  • Alternating Least Square (ALS) でCP分解 - でかいチーズをベーグルする

    テンソル分解の基中の基のCP分解を導出して実装した。最適化の方法は色々あるらしいけど多分いちばんよく使われる Alternating Least Square (ALS) を使った。ちなみにここでテンソルって呼んでるのはただの多次元配列のこと。 まとめ CP分解とは AlSによるCP分解の更新式を導出 ALSによるCP分解をpythonで実装 人工データを使って実験 CP分解とは CP分解が何かを知るためには、まず Matrix factorization (MF) について知ると良い。 MFでは、N x M 行列 X を以下のように分解する ここで、は N x R 行列で、は M x R 行列。この分解を要素ごとに書くとこうなる つまり要素 を なんかよくわからない次元のベクトル との内積で表現することにしましょうと言っているわけ。 じゃあこの と っていうベクトルたちをどうやって求

    hoxo_m
    hoxo_m 2017/12/06
    わかりやすい
  • Determining the number of clusters in a data set - Wikipedia

    Determining the number of clusters in a data set, a quantity often labelled k as in the k-means algorithm, is a frequent problem in data clustering, and is a distinct issue from the process of actually solving the clustering problem. For a certain class of clustering algorithms (in particular k-means, k-medoids and expectation–maximization algorithm), there is a parameter commonly referred to as k

  • Tokyo webmining 2017-10-28

    The document discusses Python programming and data science tools like NumPy, Scikit-learn, and Cython. It provides examples of using NumPy to quickly sum a large array and speed up a prime number calculation with Cython. It also briefly mentions past Python conference talks and techniques like spectral clustering and activation functions.Read less

    Tokyo webmining 2017-10-28
    hoxo_m
    hoxo_m 2017/11/06
    機械学習の実装〜手順と考え方〜
  • 差分検出アルゴリズム三種盛り - Object.create(null)

    こんばんは. 気がつけばもうずいぶんと涼しくなってきました. 勢い余って凍ってしまったりせぬよう, くれぐれも普段の言動にはお気をつけください. はじめに さて, 我々人類にはどうしても二つの文字列 (あるいは行ごとに区切られたテキスト) 間の差分を求めなければいけない瞬間が発生します. 先人たちはそういった時のために diff のようなツールを開発し, それを利用することで文明はめざましい発展を遂げてきました. しかしながら, 使用するアルゴリズムを比較検討したい場合, 「差分」の定義を変えるなどして既存のアルゴリズムに変更を加えたい場合, diff のない異世界に飛ばされて自分で実装しなければいけない時などにおいては, 差分検出アルゴリズムについての理解が必要不可欠です. というわけで, この記事では文字列間の差分検出とは何かということと, 差分を求める三種類のアルゴリズムの紹介・解説

    差分検出アルゴリズム三種盛り - Object.create(null)
  • 自動微分の基礎| GRC/ARCA Viewpoint | PwCあらた有限責任監査法人

    自動微分(Automatic Differentiationあるいは Algorithmic Differentiationともいわれ、ADと略される場合が多い)とは、コンピュータープログラムで表現された関数を効率的かつ正確に計算する技術です。 もともとは流体力学、原子核工学、気象科学などで使用されていた手法ですが、近年機械学習や金融への応用が注目されています。そこでここでは、自動微分の基礎について紹介します。 1. 数値微分 関数の微分係数を求めたい場合、数式がわかっていれば、数学的にはその関数式を微分すれば求まります。しかし、コンピュータープログラムで使用される関数は、何段階にも入れ子になっていたり、ループや条件分岐を含むコードにより表現されているため、数学的に微分することは必ずしも簡単ではありません。 しかし、そもそも微分の定義を考えると、

    自動微分の基礎| GRC/ARCA Viewpoint | PwCあらた有限責任監査法人
    hoxo_m
    hoxo_m 2017/07/13
    わかりやすい
  • [PDF]金森敬文 (2007) 等式制約あり最適化問題の解法 –拡張ラグランジュ関数と乗数法–

    数理情報学演習 I 第 10 回 等式制約あり最適化問題の解法 – 拡張ラグランジュ関数と乗数法 – 2007 年 6 月 28 日 担当: 金森 敬文 e-mail: kanamori@is.nagoya-u.ac.jp http://www.math.cm.is.nagoya-u.ac.jp/˜kanamori/Suuri1.html 解説 制約あり最適化問題 min x∈Rn f(x) s.t. gj(x) = 0, j = 1, . . . , m (1) の局所最適解を数値的に求める計算アルゴリズムについて解説する.さまざまな解法があるが,こ こでは乗数法を紹介する. 1 等式制約あり最適化問題とラグランジュ関数 点 x∗ ∈ Rn を問題 (1) の局所最適解とする.このとき 1 次の必要条件より,λ∗ ∈ Rm が存在し て以下の関係式 f(x∗ ) + m j=1 λ∗

  • [PDF]Ouyang+ (2013) Stochastic Alternating Direction Method of Multipliers

  • Pythonによるパーティクルフィルタの実装と状態空間モデルへの適用 - Qiita

    パーティクルフィルタ/粒子フィルタ(Particle filter)、逐次モンテカルロ法(Sequential Monte Carlo: SMC)など様々な呼び方がありますが、この記事ではパーティクルフィルタという呼び方を使います。このパーティクルフィルタをPythonで実装して状態空間モデルの潜在変数を推定することを試したいと思います。 状態空間モデルにはさらに細かくいくつものモデルが分かれていますが、今回はシンプルなモデルであるローカルモデル(1階差分トレンドモデル)を対象として扱います。この状態空間モデルのトレンドの種類に他に何があるかを知りたい場合はココをご参考としてください。 \begin{aligned} x_t &= x_{t-1} + v_t, \quad v_t \sim N(0, \alpha^2\sigma^2)\quad &\cdots\ {\rm System\

    Pythonによるパーティクルフィルタの実装と状態空間モデルへの適用 - Qiita
  • set.seed(123); rnorm(1e6); # Rの正規乱数生成法(既定)を振り返る - Qiita

    この記事は、R Advent Calendar 2016 の23日目の記事です。 2016年も残すところあと8日となり、今年1年を振り返る時期になりました。 日は、我々がよく使用している R のある関数について振り返ってみたいと思います。 1. はじめに ちょうどこの Advent Calendar の参加登録が開始した2016年11月後半は、Twitter 上で擬似乱数の生成に関する議論が熱くなっていました。 R ユーザーもシミュレーションをする際など、擬似乱数生成用の関数をよく使用しますよね。 例えば、標準正規分布に従う乱数を生成する場合、以下のようなコードを記述します。 set.seed(123) x <- rnorm(1e6) head(x) # [1] -0.56047565 -0.23017749 1.55870831 0.07050839 0.12928774 1.7150

    set.seed(123); rnorm(1e6); # Rの正規乱数生成法(既定)を振り返る - Qiita
  • Googleの旅行アプリで使われている280年前のアルゴリズムとは?

    By Celeste RC Googleが2016年9月20日にリリースした「Google Trips」は旅行に関する情報をまとめて管理できるアプリで、目的地までの移動方法や行き方、移動時間、観光地の場所や付近にあるレストランなど、さまざまな情報を元にして旅行の計画表を自動で作ることができます。Googleによれば、このGoogle Tripsに使用しているアルゴリズムは280年前のものを元にしているとのことで、その詳細をGoogleが公式ブログで明かしています。 Research Blog: The 280-Year-Old Algorithm Inside Google Trips https://research.googleblog.com/2016/09/the-280-year-old-algorithm-inside.html Google Trips - Google Pl

    Googleの旅行アプリで使われている280年前のアルゴリズムとは?