furukawa-laboratory / somf

Python codes of SOM-family launched by Furukawa-laboratory, Kyushu institute of technology
5 stars 2 forks source link

UKRにおいてデータの重要度を考慮 #147

Open ae14watanabe opened 4 years ago

ae14watanabe commented 4 years ago

Description 説明 close #145

Type of change 変更の種類

UKRに関して各データに対する重みを以下のように考慮するように修正. ↓1/Nのところは1/\sum_n \rho_nに置き換えてください image

コンストラクタでweightsとして重みの配列を与えると,上記の目的関数に対し以下のように勾配を計算する.なおデフォルトでは weights=None となっており,挙動はこれまでと変わらない. チームビルディング-23 2

How Has This Been Tested? どのようにテストしたか?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration 挙動を確認するために実行したテストを記述してください.再現できるように指示をお願いします.テストコードがある場合はtestに追加してください.

Test Configuration テスト環境: python 3.6.10 numpy 1.18.1 scipy 1.4.1 pytorch 1.4.0 scikit-learn 0.22.1

ae14watanabe commented 4 years ago

136 のコミットも含んでいるためこれだけ長くなっているが,First commit 以前はDon't careで.

ae14watanabe commented 4 years ago

データに重みが割り振られている際のUKRの導出.SOM likeに写像と潜在変数の目的関数から勾配の導出まで行なっている. チームビルディング-22 チームビルディング-23 2

ae14watanabe commented 4 years ago

元の目的関数から重要度を考慮すると,最終的に二乗誤差にも写像にも重要度がかかってくるのがポイント.

ae14watanabe commented 4 years ago

テスト項目多すぎて8分もかかったけど無事にテストにpassを確認.ここから実装を行う. image

ae14watanabe commented 4 years ago

破壊的な変更はしていないことを確認. image

ae14watanabe commented 4 years ago

あとはPyTorch版を修正して,weightを与えた時とそうでない時で一致するか確認する.

ae14watanabe commented 4 years ago

passを確認! image

ae14watanabe commented 4 years ago

136 がマージされるまではdraftにしとく.