蟻本Python回答集 中級前編 (P127~P187)
はじめに
AtCoder青を目指しつつデータ構造など勉強するため、プログラミングコンテストチャレンジブック [第2版] ■ (通称、蟻本)を解くことした。 せっかくなのでPythonでの解答をここに記録する。
Pythonで解答してる人のブログを漁っても初級編の途中(DPとか)で挫折してる人が多そうだったので誰かの助けになれたらと思う。
著作権保護のため本の内容をすべて公開するわけではないので、解説などは本を見てほしい。 一方、変数名の説明なしにコード例が書いてある問題もいくつかあり、そういう問題はコードのコメントに意味合いを補足した。
この本の購入に関してはmynavi booksからPDFを購入するのがおすすめだ。ノートアプリを使っていろいろ書き込むことができる。
初級編はこちら
続きを読む蟻本Python回答集 初級編 (~P126)
はじめに
とうとうAtCoder水色になれた(過去問精進と夜活コンテストのおかげ)。さらなる高みを目指すべく、プログラミングコンテストチャレンジブック [第2版] (通称、蟻本)を解くことした。 せっかくなのでPythonでの解答をここに記録する。
Pythonで解答してる人のブログを漁っても初級編の途中(DPとか)で挫折してる人が多そうだったので誰かの助けになれたらと思う。
著作権保護のため本の内容をすべて公開するわけではないので、解説などは本を見てほしい。 一方、変数名の説明なしにコード例が書いてある問題もいくつかあり、そういう問題はコードのコメントに意味合いを補足した。
この本の購入に関してはmynavi booksからPDFを購入するのがおすすめだ。ノートアプリを使っていろいろ書き込むことができる。
続きはこちら
続きを読むConfident Learningは誤った教師から学習するか? ~ tf-idfのデータセットでノイズ生成から評価まで ~
概要
現実の判別問題において教師が完璧であることは珍しい。ラベリング作業において、知識不足や勘違いなどで引き起こされるヒューマンエラーはデータセットを汚染する。
このような間違った教師のことを、noisy label (corrupted label や polluted labelとも)という。誤った教師を用いると学習はうまく行かず判別性能は下がってしまう。近年ではこれに対処しようという研究が増えている。
ICML2020に Confident Learning: Estimating Uncertainty in Dataset Labels という論文が投稿された。しかも、よく整備された実装cleanlab
まで提供されていた。
今回はRCV1-v2という文章をtf-idf(特徴量)にしたデータセットを用いて、Confident Learning (CL)が効果を発揮するのか実験を行った。またcleanlabを用いた実装を公開する。
結論としては、CLを用いると確かにnoisy labelなデータセットでも判別性能がよくなった。更にpseudo-labelingと組み合わせるともっと良くなるという結果が得られた。
目次
- 概要
- 目次
- Confident Learning (CL)
- 実験計画
- 1. ML:clean
- 2. ML:noisy
- 3. CL:without noises
- 4. CL:pseudo for noises
- 5. CL:pseudo for noises and test
- データセットと実験設定
- データセット
- noise 生成
- 判別器と評価
- 実験結果
- cleanlabの一部機能の解説
- 学習に関して
- データ生成に関して
- 今回の実験の実装
- まとめ
- 参考
Confident Learning -そのラベルは正しいか?-
これは何?
ICML2020に投稿された Confident Learning: Estimating Uncertainty in Dataset Labels という論文が非常に面白かったので、その論文まとめを公開する。
論文 [1911.00068] Confident Learning: Estimating Uncertainty in Dataset Labels
超概要
- データセットにラベルが間違ったものがある(noisy label)。そういうサンプルを検出したい
- Confident Learningという方法を提案。現実的な状況下でSOTAを達成
- PyPIに実装を公開済みですぐに使用可能(
pip install cleanlab
)
目次
- これは何?
- 超概要
- 目次
- 私感
- 論文の概要
- Class-conditional classification Noise Process
- Confident Learningの概要
- 入力
- 出力
- CLの処理
- 同時分布Qの推定
- Cを作るカウント方法
- Qへの正規化
- データクリーニング
- 実験結果
- 同時分布Qをうまく推定できているか
- Noisy Labelを検出できているか
- 他手法との比較
- まとめ
- 参考
めぐる式二分探索 コピペで使えるPython実装
- はじめに
- めぐる式二分探索のメリットと参考文献
- コピペ用
- 例題
はじめに
AtCoderで二分探索を実装するときバグらせないように考えると結構時間かかりませんか?自分はかかります。
競技プログラミング界隈ではめぐる式二分探索という二分探索の書き方(流派?)があり、使いやすい、バグりにくくなど様々なメリットがあります。
Python実装を公開しているブログはパット見、見つからなかったのでおいておきます。使用例もおいておきます。
めぐる式二分探索のメリットと参考文献
めぐる式二分探索を使うメリットとして以下があげられます。
- 配列化できない関数を探索可能 (bisectモジュールでは不可)
- バグりにくい (終了状態がきちんとしている)
- ライブラリとして扱うことが可能で実装が高速化される
- 思考リソースの消耗を防げる (条件を満たすかそうでないかだけ考えれば良い)