タグ

*algorithmとfuncに関するsh19910711のブックマーク (6)

  • モデルとアルゴリズム、圏と関手と自然変換 - xiangze's sparse blog

    お正月気分が抜けないのでほわっとした記事を書きます。 prompton.io モデルとアルゴリズムの素朴な理解 圏論による理解 構造を保ったデータの学習 Haskell(とscala)プログラミング情報 圏論やHaskell得意な人から見た機械学習、統計モデリング 微分可能な計算の一般化 その他雑感と宣伝 課題 モデルとアルゴリズムの素朴な理解 機械学習や統計におけるモデルとアルゴリズムの違いを説明するときに学習、分析の対象をパラメータを使って数式で表現したものがモデルで最適なパラメーター値を探索する方法、プログラムが(最適化)アルゴリズムであるとしていました。 しかしネットを見ていると「データをアルゴリズムに投入して、できたロジックがモデル」といった説明も見かけます。これではアルゴリズムによる学習をする前にモデルは存在しないように聞こえます。stanによるベイジアンモデルの記述やpyto

    モデルとアルゴリズム、圏と関手と自然変換 - xiangze's sparse blog
    sh19910711
    sh19910711 2023/01/13
    "モデルとアルゴリズムに対する素朴な考えをより精密に、プログラミングに近い言葉で表現する数学の分野として圏論(Category Theory)というのがあります(あるそうです) / 圏論は普通に暮らしていくには不必要に難しい"
  • 凸包を求めるアルゴリズム(ギフト包装法) - Qiita

    数学における凸包または凸包絡は、与えられた集合を含む最小の凸集合である。 Wikipedia: 凸包 上図のように点の集合が与えられた時にその凸包を求めるアルゴリズムを実装してみたのでメモとして残しておきます。 Linear Algebra まずは計算に必要になる点やベクトルと言った概念を定義しておきます。 -- | 2次元の点 type Point = (Double, Double) -- | 2次元ベクトル type Vector = (Double, Double) -- | 2点からベクトルを作成 to :: Point -> Point -> Vector to (x0, y0) (x1, y1) = (x1 - x0, y1 - y0) -- | ノルムを計算する norm :: Vector -> Double norm (x, y) = sqrt $ x ^ 2 + y

    凸包を求めるアルゴリズム(ギフト包装法) - Qiita
  • 遅延評価を活用して線形時間でGoogle Code Jam 2014 Round 1AのB問題を解く - tosの日記

    公式の解説で,「遅延評価を使ってもできる」と書いてくれなかったので。 注意:この記事は,Google Code Jam 2014 Round 1AのB問題 Full Binary Tree についてのネタバレを含みます。 この問題は木DPをする典型的な問題であり,公式の解説にもあるように, 木を根付き木にした後, 頂点でのスコアを,子のスコアのうち大きい方から2つを用いて計算する ことで解けます。何を根として選ぶかをすべて試すとO(N2)解法となり,すべての根の可能性について同時にDPをする*1とO(N)解法になります。だから,根の選び方によって隣接頂点のうち「親以外が子となる」ので,隣接頂点のスコアのうち大きい方から3つを保存するような構造を持つ――待ってください。 もちろん,降順ソートされたスコアのすべてを計算すると,O(N2)時間かかってしまいます。しかし,先頭3つを結果的に計算でき

    遅延評価を活用して線形時間でGoogle Code Jam 2014 Round 1AのB問題を解く - tosの日記
  • 教師あり学習の学習モデルを微分可能プログラミングと純粋関数型言語で記述する - Qiita

    仰々しいタイトルになってしまいましたが、内容はこんな便利な学習モデルの書き方が出来るよって紹介です。A Purely Functional Typed Approach to Trainable Models (Part 1)で語られているコードをベースにして説明していきたいと思っています。 この記事で紹介する内容は新しい機械学習の理論でもなければ明日から役に立つデータサイエンティストの知識でもありません。線形回帰やニューラルネットワークといった既存の学習理論を表題にもあるような微分可能プログラミング(Differentiable Programming)と純粋関数型言語を使って統一的に記述してみようというものです。こういった抽象化は理論に対する理解を深め、時に新しい構造の発見につながるでしょう。 微分可能プログラミング 編に入る前に微分可能プログラミングという概念について簡単に触れてお

    教師あり学習の学習モデルを微分可能プログラミングと純粋関数型言語で記述する - Qiita
  • Haskellの機械学習ライブラリHLearn - Qiita

    -- 引用元: http://izbicki.me/blog/functors-and-monads-for-analyzing-data -- いろいろな色のビー玉の定義 data Marble = Red | Pink | Green | Blue | White deriving (Read,Show,Eq,Ord) bagOfMarbles = [ Pink,Green,Red,Blue,Green,Red,Green,Pink,Blue,White ] -- カテゴリーデータ(このカテゴリーというのは離散変数・非数値データという意味で、圏論とは無関係の用語(https://en.wikipedia.org/wiki/Categorical_distribution)) marblesDist :: Categorical Double Marble marblesDist = t

    Haskellの機械学習ライブラリHLearn - Qiita
  • Karetta|Cパズルプログラミング-再帰編

    はじめに基的過ぎること階乗fact1.c (2)fact2.c (1)fact3.c組合せcomb1.ccomb2.ccomb3.c四則演算1行入力の動作確認expr1.cトークン処理の準備expr2.cトークンがやっと動き出すexpr3.c (1)数式もどきexpr4.c優先順位を考えた式の処理 (1)expr5.c整理expr6.c8クイーンボードの準備queen1.cqueen2.cクイーンを左端に置いてみようqueen3.cqueen4.cクイーンを8個置いてみようqueen5.cqueen6.cqueen7.c効き筋のチェックqueen8.cqueen9.cqueen10.cデバッグをする羽目にqueen11.cqueen11.txtqueen12.cqueen12.txtqueen13.c動くようになったので整理整頓queen14.cqueen15.c対称移動の研究対象移動の

  • 1