exametrika 2.1.0 リリースのお知らせ #40
kosugitti
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
exametrika 2.1.0 が CRAN に公開されました(2026-09-25)。
install.packages("exametrika")マイナーバージョンにした理由
LRA(method = "SOM")の推定値が変わります(seedを指定した場合と,mic = TRUEまたはconfを使った場合)。パッチでは済まない変化なので 2.1.0 としました。移植元の Mathematica のルーチン(Module_LRA.wl)と R のコードを突き合わせて見つかった不具合の修正です。SOM 以外のモデルの推定値は変わりません。主な修正
seedを指定すると,全エポックで受験者の提示順が同じになっていました。**エポックのたびに同じ種で乱数を初期化していたためです。オンライン学習は提示順が毎回引き直されることを前提にしています。いまはエポック番号を種に足しており,再現性を保ったまま提示順がエポックごとに変わります。mic = TRUEの並べ替えが,受験者ごとではなくエポックの終わりに1回だけ行われていました。**移植元は受験者を1人提示するたびに並べ替えます。並べ替えた行列が次の勝者を決めるので,まとめて行うのは同じ計算の省略ではなく別のアルゴリズムです。confの制約も同様に受験者ごとに適用するよう直しました。convergeも常にFALSEだったため,正常な実行と異常な実行を見分けられませんでした。LRA(method = "SOM")が呼び出し側の乱数の状態を書き換えなくなりました。**シミュレーションの中で呼ぶと,それまでの乱数の流れが黙って失われていました。estimation = "isotonic")で,対数尤度が改善しなかった回を取り消す際に,2つある内部の配列の片方しか元に戻していませんでした。試した範囲では報告される数値に違いは出ていません。性能
SOM の内側のループを C++ に移しました。
J15S500・nrank = 6・maxiter = 1000で,mic = FALSEが 5.2 秒から 1.9 秒,mic = TRUEが 103.5 秒から 2.6 秒になりました。提示順は引き続き R 側で引いているので,set.seed()による再現性はこれまでどおりです。テスト
全 3,536 件が通っています。SOM にはこれまでテストがありませんでした。SOM は Mathematica と乱数の発生器が違うため数値を突き合わせることができないので,テストファイル内に書いた参照実装と照合する形で固定しました。
全変更点は NEWS.md をご覧ください。不具合のご報告や機能のご要望は Issues へお願いします。
All reactions