タグ

関連タグで絞り込む (316)

タグの絞り込みを解除

algorithmとAlgorithmに関するyukimori_726のブックマーク (472)

  • NLP若手の会 (YANS 2016) に参加 & スポンサーしました - Gunosyデータ分析ブログ

    はじめまして。データ分析部の大原です。最近家での作業中は、「雨 強め」などの自然音を聞いています。歌詞も無いので音楽に惑わされることなくリラックスして作業できるので良い感じです。 さて、少し前の事になりますが、8月28日(日)〜8月30日(火)にNLP若手の会 (YANS)に参加しました! YANSとは YANSとはYoung Researcher Association for NLP Studiesの頭文字を取ったもので、自然言語処理関連の若手研究者・若手技術者のアクティビティを高めることを目的としたコミュニティで、2006年から毎年この時期に開催されています。 NLP関連の研究をしている多くの大学から、または業務でNLP関連の技術を活用している企業の方が多く集まり、互いに自分の研究の紹介・意見の交換などをでき、有意義な時間を過ごせます。 今年の開催地は、和歌山県白浜で、海沿いで非常に

    NLP若手の会 (YANS 2016) に参加 & スポンサーしました - Gunosyデータ分析ブログ
    yukimori_726
    yukimori_726 2016/09/15
    [[yans]
  • Next lexicographical permutation algorithmについてのメモ - Qiita

    参考というか大元です Next lexicographical permutation algorithm HackerRankの問題を解いていたらつまづいた問題を解くために必要なアルゴリズム。以前どこかで見知った気もするが、覚えていないので、今回学んだことを整理しておく。 Next lexicographical permutation algorithmは、「辞書順での次の順列を求めるアルゴリズム」とでも訳したらいいのかな。lexicographical orderといったほうが一般的かもしれない。 問題 初めに文字列 S が与えらる。 その文字列 S の文字の順序を入れ替えて S’ を作成する。 このS'は辞書順で S よりも後に来るものとする。 複数パータンある場合は「辞書順で S よりも後」かつ「辞書順で最小のもの(次にくるもの)」を作成する。 具体的には、文字列S=xyzikd

    Next lexicographical permutation algorithmについてのメモ - Qiita
  • 【 比較 】 深層強化学習 と 深層カルマンフィルター - Qiita

    ※ 作成中 両アルゴリズム と 比較させる対象 として、さらに 以下 の 「遺伝的ファジィ決定木アルゴリズム」 が 面白いかもしれない。 HirofumiYashima Qiita記事(2016/09/10)「【 調査メモ 】先端AI設計 に おける「遺伝的ファジィ決定木」アルゴリズム の 有用性 ~ RaspberryPi上で動作可能 な 軽量 無人戦闘機(UCAVs) 制御プログラム "ALPHA"(米国 Psibernetix社)が 示す その可能性」 ( 共通点 ) 選択した行動の結果が、時間的に遅延して観測 or 報酬取得 される 予測値と(事後的に得られる)観測値との誤差、(期待と)報酬との誤差(正負)を次の行動を決めるモデルを(誤差)修正するための情報として、自律的、積極的・能動的に用いる これにより、刻々と変化する環境に適応した行動をとるように、行動決定モデルをリアルタイム

    【 比較 】 深層強化学習 と 深層カルマンフィルター - Qiita
  • 機械学習アルゴリズムの絵本

    機械学習のアルゴリズムの中には�名前のついていない「素朴な方法」がある。 複数の方法を組み合わせて使っている場合に�素朴な方法を無視して混乱が生まれる。 そこで素朴な方法にライトを当てて、�各種アルゴリズムを図解することで�「あー、こういう組み合わせで動いてんだ」�とわかってもらう。 Read less

    機械学習アルゴリズムの絵本
  • 高速な文字列検索 Crit-Bit Tree コンテナ(C++) - Qiita

    Crit-Bit Tree をご存知でしょうか。 基数木 (Radix tree) は知っている人が多いかもしれません。 Crit-Bit Tree は基数木をさらに発展させたもので、 基数木同様、高速な検索が可能な木構造です。 基数木はハッシュマップのようなハッシュ値の衝突が発生しないため hashdos1 対策として有効な手段ですが、メモリ消費量が大きい問題がありました。 Crit-Bit Tree ではハッシュ値の衝突は発生しない上に、 基数木に比べてメモリ消費量を抑えることができます。 アルゴリズム 基数木では、文字列を文字ごとに扱っていました。 例えば "AAA" "AAB" "ABC" というキー値があるとき、 以下のようなツリーが構築されます。 基数木のメモリ消費量が大きい問題は、この黒丸の部分、分岐にあります。 各分岐点では、複数の子ノードを保持する必要がありますが、 1バ

    高速な文字列検索 Crit-Bit Tree コンテナ(C++) - Qiita
  • 株式会社ALBERT(レコメンドエンジン)

    データ分析から導き出されたインサイト無しにAI人工知能)の活用は始まりません。私たちは、各業界知識とデータ・アナリティクス技術を駆使しデータドリブン経営を強力に支援します。 データ、アナリティクス、AIは企業にとって競合他社との差別化を図るかつてないほど大きな要因になっています。今日の経営幹部が効率を向上しながら新たな収益源を開拓し、新しいビジネスモデルをタイムリーに構築する方法を模索する中、価値を生み出し成長を続ける企業には「データ活用」という共通項があります。私たちは、無数のデータから企業にとって当に必要なデータを活用するための方法を知っています。 将来を見据えたオペレーション体制を備えている企業の半数以上(52%)は、すでにデータとアナリティクスを大規模に活用しています。データとAIに関する取り組みをビジネス戦略に沿って実施することで投資利益率を迅速に最大化し、最終的にはAIをビ

    株式会社ALBERT(レコメンドエンジン)
  • デッドロックとタイムアウト - STANDALONE NETWORKS

    とある駅前のロータリーにて。 右折待ちの車で詰まっちゃって、クルマがロータリーに入ることも出ることもできなくなってました。 ソフトウェアの世界では、このような状態を「デッドロックしている」と言います。 アプリとかが固まっちゃって動かなくなってる時は、こういう事が中で起こってる場合があります。 あ、流れが止まっちゃってるので、後続でプチ渋滞が始まりましたよ。クラクションなんか鳴らされちゃったりして。 どうすんのかなーと暫く眺めてたところ、右折待ちをしていた一台が右折を諦めて直進レーンに進み、それでようやく車列が動き出しました。 ソフトウェアの世界では、このような状態を「タイムアウトした」と言います。 固まっちゃったアプリとかが暫く待ってると動き出したりする時は、こういう事が中で起こってる場合があります。 一般的な世界では、このような振る舞いは「空気を読んだ」と言いますね。 とても高度でスマー

    デッドロックとタイムアウト - STANDALONE NETWORKS
  • NMFアルゴリズムの紹介 その① HALS - 北の大地から

    2015-10-04 NMFアルゴリズムの紹介 その① HALS 昨日は,NMFの簡単なまとめをしたが,今回は,その一つの手法を取り上げることにします. 当はMultiplicative Update ruleを最初に取り上げるべきなのでしょうが, 既に多くの記事で取り上げられているので,同じ内容を二度もやる必要はないだろうということで省きます. わかりやすい記事としては, Non-negative Matrix Factorization(非負値行列因子分解) - あらびき日記 Natureの例などを載せてくれていて,非常にわかりやすいです. smrmkt.hatenablog.jp リコメンデーション等の例もあり,直観的にわかる内容の記事になっています.なんとなくNMFを試してみるかという場合は,Multiplicative Update ruleで問題ありません. し

  • 非負値行列因子分解(NMF)によるレコメンドのちょっとした例 - About connecting the dots.

    最近線形代数についていろいろ読みなおしたりしてるのですが(線形代数チートシートを前の記事でまとめてあります),その一環でレコメンドアルゴリズムについていくつか試してみたので,それを解説します.順序としては,基の協調フィルタリング(ユーザベースド,アイテムベースド)→特異値分解(SVD)→非負値行列因子分解(NMF)になります. 基的な考え方 ここで取り扱うのは,すべて以下のようなユーザ×商品のマトリックスをベースとしたレコメンドになります*1.ここでは映画レンタルサービスを例にして考えます.6人のユーザが,4つの映画*2のうちレンタル視聴したものについては,1-5点の5段階評価を行いました.0になっているものは「みていない」ということになります. まずはざっと評価の状況をみると,「千と千尋の神隠し」が最もよく視聴されていて,6人中4人がみています.次にみられているのは「となりのトトロ」

  • C++: マルチコアCPUを利用した並列化による高速な階層的クラスタリング

    比較的データ数の多い階層的クラスタリングを行う必要があり、手元にあるRで処理を始めたのだが思ったよりも遅かった。そこで、マルチコアCPUを利用した並列化で高速化することにした。RでもGPGPUを使って高速化したプログラムがあるようなのだが、すぐに使える高性能GPUを用意できなかったし、それに、TBBライブラリを使った並列化は手間も時間も掛からないので作ってしまった方が良いと判断した。 尚、このプログラムで作成したクラスタデータのデンドログラム描画や閾値による区分けについては一つの記事で書くには大きすぎるので、記事を分けて、「Python: 階層的クラスタリングのデンドログラム描画と閾値による区分け」に回すことにする。 まずは、「集合知プログラミング」にPythonによる階層的クラスタリングのソースコードが載っていたのでそれをC++で書き直した。アルゴリズム自体はそれほど複雑なものではないの

  • ElasticsearchのAnalyzerを理解するため全文検索の仕組みをシンプルに考える - $shibayu36->blog;

    Elasticsearchを使おうとしているとAnalyzerという概念が出てくるが、このAnalyzerという概念は最初理解することが難しかった。全文検索の仕組みを理解すれば分かるだろうと思い、https://speakerdeck.com/johtani/elasticsearchru-men?slide=5 やhttp://www.atmarkit.co.jp/ait/articles/1111/18/news148.html の記事などを読んで勉強してみたものの、こちらもいろんな言葉が出てきて非常に混乱した。例えば転置インデックス、tf-idf、トークナイズ、ストップワード、N-Gram、正規化などといった言葉が出てくる。 いろいろ調べてみて整理すると、全文検索の技術には、なぜ検索ができるかの話以外に、類似度の話、検索を高速に行うための話、あいまいな検索に対応する話など、いろんな話

    ElasticsearchのAnalyzerを理解するため全文検索の仕組みをシンプルに考える - $shibayu36->blog;
  • 分子動力学法ステップ・バイ・ステップ その1 - Qiita

    はじめに 古典分子動力学法(Molecular Dynamics Method, MD)は多くの優れた実装があり、もはやゼロから手で書く時代ではないかもしれない。でも、アプリケーションをブラックボックスとして使うのは危険だし、自分が使う手法くらい、一度はフルに自分で書いてみる経験をしておくのも悪くないと思う。 というわけで、MDをゼロから書いてみる。目標は、カットオフのあるLennard-Jones (LJ)ポテンシャルのMDにおいて、アルゴリズムでの高速化を一通り実装すること。具体的には、 ポテンシャルはLJのみ 原子は一種類のみ 系は三次元 シミュレーションボックスは立方体 周期的境界条件 といったMDを組む。実装する高速化アルゴリズムは メッシュによるO(N)隣接粒子探索 Bookkeeping法による相互作用粒子リストの使い回し 相互作用相手でのソート 程度にとどめ、原則としてチュ

    分子動力学法ステップ・バイ・ステップ その1 - Qiita
  • 3次元空間、複数三角形内に均一に、点をばらまく - Qiita

    目的 乱数を散らすとき、複数の三角形にまたがり均一に分布させたい時があります。 例えばパーティクルをメッシュの形状に合わせて発生させたり、 レイトレーシングにおける光源の直接サンプリングといったものが、今回想定する用途です。 乱数 何はともあれ、ソースになる連続した乱数が必要です。 ただ、当然ながら、一般に実数の表現もビットで構成されている以上、離散的な数値になってしまいますが。 あまり踏み込むと脱線しすぎるので、ここについては、コードを張るだけにします。 以下のような乱数モジュールを使います。 エンジンをテンプレートで挿げ替えることだけは想定しています。 まあ、状況によっては必要ないかもしれませんが。 struct Xor { Xor() { } Xor(uint32_t seed) { _y = std::max(seed, 1u); } uint32_t generate() { _

    3次元空間、複数三角形内に均一に、点をばらまく - Qiita
  • Pythonで川渡り問題「宣教師と人喰い」を解く 【探索的(発見的)プログラム・再帰】 - Qiita

    #coding:utf-8 left = [ 0,0,0,1,1,1 ] right = [] RideChoices = [[0],[1],[0,0],[0,1],[1,1]] #乗る組み合わせ。 def boat(way): if len(way[-1][1]) == 6: #終了条件。6人が右岸に渡ったら print("done") print("step count:", len(way) - 1) #それまでの渡り方を表示 for i,position in enumerate(way): print(position) if i % 2 == 0: print("-------> ") else: print("<------") exit() else: for riders in RideChoices: print("test:",riders) checked, new

    Pythonで川渡り問題「宣教師と人喰い」を解く 【探索的(発見的)プログラム・再帰】 - Qiita
  • 精度保証付き数値計算(その1) - kivantium活動日記

    コンピュータ上で実数を表現する際には浮動小数点数を使うのですが、浮動小数点数の計算では誤差が発生します。 簡単な例を見てみます。 #include <cstdio> int main(void) { float a = 0.0; for(int i=0; i<10000; ++i) a += 0.01; printf("%.10f\n", a); } という0.01を10000回足すプログラムを実行すると結果は100.0029525757となり、期待される100.000000000に比べて0.003ほどの誤差が発生しています。 浮動小数点数計算での誤差を抑える一番簡単な方法はfloatではなくdoubleなどのより精度の高い型を使って計算精度を上げることですが、どうしても限界はあります。 他にも問題ごとにテクニックは存在しますが、誤差を完全に無くすことはできません。 正確な計算のためには誤

    精度保証付き数値計算(その1) - kivantium活動日記
  • K-means hashing (CVPR'13) とハッシング周り

    K-means hashing (CVPR'13) の論文解説と、関連する iterative quantization や optimized product quantization の紹介、最近のhashing系論文リスト。

    K-means hashing (CVPR'13) とハッシング周り
  • 要素数ができるだけ均等になるように配列を分割する - tmtms のメモ

    例えば10個の要素を持つ配列があって、これを3つに分割したい時に、 a = [1,2,3,4,5,6,7,8,9,10] n = 3 m = Rational(a.size, n).ceil a.each_slice(m).to_a #=> [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]] みたいにすると、3つには分割できるんですが、要素数が 4, 4, 2 と偏ってしまいます。これを例えば 4, 3, 3 のようにしたい。 a = [1,2,3,4,5,6,7,8,9,10] n = 3 n.times.map{|i| a[a.size*i/n ... a.size*(i+1)/n]} #=> [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]] …のようにやればできました。 なお、a.size よりも n の方が大きいと、結果に空配列を含

    要素数ができるだけ均等になるように配列を分割する - tmtms のメモ
  • 勾配降下法の最適化アルゴリズムを概観する | POSTD

    (編注:2020/10/01、2016/07/29、いただいたフィードバックをもとに記事を修正いたしました。) 目次: さまざまな勾配降下法 バッチ勾配降下法 確率的勾配降下法 ミニバッチ勾配降下法 課題 勾配降下法を最適化するアルゴリズム Momentum(慣性) Nesterovの加速勾配降下法 Adagrad Adadelta RMSprop Adam アルゴリズムの可視化 どのオプティマイザを選ぶべき? SGDの並列化と分散化 Hogwild! Downpour SGD SGDのための遅延耐性アルゴリズム TensorFlow Elastic Averaging SGD 最適化されたSGDに対する更なる戦略 シャッフル学習とカリキュラム学習 バッチ正規化 早期終了 勾配ノイズ 結論 参考文献 勾配降下法は、最適化のための最も知られたアルゴリズムの1つです。これまではニューラルネット

    勾配降下法の最適化アルゴリズムを概観する | POSTD
  • EMアルゴリズム

    パターン認識と機械学習(PRML)の第9章「混合モデルとEM」について説明したスライドです。文字多め。 潜在変数を持つモデルの最適化を行うことができるEMアルゴリズムについて、最初は具体的でイメージしやすいk-meansクラスタリングから説明し、最後は数式を詳細に見ていきその意味を考察します 9.1 K-meansクラスタリング 9.2 混合ガウス分布 9.3 EMアルゴリズムのもう1つの解釈 9.4 一般のEMアルゴリズム

    EMアルゴリズム
  • BSDiffバイナリ差分アルゴリズムの解説

    BSDiff はバイナリ差分を扱うプログラムです。bsdiffとbspatchの二つのコマンドから成ります。bsdiffは旧ファイルと新ファイルを比較してパッチファイルを出力します。bspatchは旧ファイルにパッチファイルを適用して新ファイルを出力します。コマンドライン引数はbsdiff、bspatch共に旧ファイル、新ファイル、パッチファイルの三つをその順番で指定します。 Usage: bsdiff oldfile newfile patchfile Usage: bspatch oldfile newfile patchfile BSDiffは実行ファイルの修正差分を取ることを念頭に置いて設計されています。 一般にソースコードのある行に修正を加えた場合、実行ファイルの変化はその修正した行に直接対応する部分だけに留まりません。その行をコンパイルして出来たコード(マシン語列)の長さが変化

    BSDiffバイナリ差分アルゴリズムの解説