タグ

accuracyに関するyukimori_726のブックマーク (46)

  • Complement NaiveBayesを実装したよ - kisa12012の日記

    レッドブルとカレーが美味しい季節になりました. 前回,ナイーブベイズを実装した後, 「どうせならComplement NaiveBayesも実装してしまいなよ.」 という天からの声が聞こえた気がしたので,実装してみました. Complement NaiveBayesとはなんぞや,という方は,以下の記事で非常に丁寧に解説されているので,そちらを参照ください. こちらでも簡単に説明すると,Complement NaiveBayesはそのクラスに「属しない」記事を用いて,文書に対する尤度を計算します.そして,尤度が一番「低い」クラスを予測結果として出す手法です.NaiveBayesと反対ですね.その性質上,2クラスの場合はNaiveBayesとComplement NaiveBayesは結果が一致します. 新はてなブックマークでも使われてるComplement Naive Bayesを解説するよ

    Complement NaiveBayesを実装したよ - kisa12012の日記
  • Perceptron を勉強する前にオンライン機械学習ライブラリを試してみる (nakatani @ cybozu labs)

    今度は CLUTO を試してみた話を書こうと思っていたのですけど、あまりふくらみそうにないので、保留。 オンライン学習(逐次学習)に興味があるので、まずは Perceptron 周辺を勉強し始めてます。 が、その前に動くものをさわっておこうということで、岡野原さんのオンライン機械学習ライブラリをちょっぴり試してみました。 oll プロジェクトページ(日語) ビルド Linux なら ./configure & make でOK。 Windows の場合 oll.hpp の先頭のどこかに #include <algorithm> を追加すれば VC++ でもコンパイルできました。 サンプルデータ サンプルデータには、プロジェクトページにも実験としてあがっている news20.binary をまずは使ってみることにしましょう。 「シャッフルし、15000例の訓練データと4996例のテストデー

  • マルチラベル分類器の評価指標(Micro-F1/Macro-F1)の振る舞い - Qiita

    概要 機械学習で分類問題をするときに、複数のラベルについての予想をしたい場合があります。この際にも分類問題と同じようにRecall, Precision, F値を使用するようです。例えばScikit-learnにも同様に関数は実装されていますし、マルチラベルに対応しています。ただマルチラベルのF値については binary micro macro weighted samples など、様々な指標が存在するようです。そこで、論文で多く使われているように見えるmicro-F1とmacro-F1が学習データの変化でどう振る舞うのか調べてみました。Excelで(出落ち)。 なお、micro-F1とmacro-F1の計算方法についてはsa-wa-mさんの分類器の学習方法と評価方法1(指標の説明)に纏められています。 パターン1:初期状態 計算結果が1000事例、クラスが10個で、各クラスに正解が10

    マルチラベル分類器の評価指標(Micro-F1/Macro-F1)の振る舞い - Qiita
  • アニメ推薦くんの精度について - はこべにっき ♨

    今季見るべきアニメを機械学習で推薦する に対してなんか精度評価のしかたおかしくない? とご意見をいただきました (指摘1, 指摘2 ) 調べたところたしかにいろいろおかしくて、F値が0.9をこえるスコアも実際よりもかなり高いことがわかったのでご紹介します。ご指摘ありがとうございます :bow: 。 おかしかったところ 教師データをあたえるときには1とラベル付けされたデータと0と、ラベル付けされたデータの数が同じになるように、オーバーサンプリングしました。 と元の記事にはあったのですが、このオーバーサンプリングが問題でした。オーバーサンプリングを教師データとバリデーションデータに分ける前に行ってしまっていたため、同じアニメの特徴とそのラベルが教師データとバリデーションデータの両方に含まれていました。 教師データに含まれるアニメを正しく分類できるのは当然ですから、教師データと同じアニメをバリデ

    アニメ推薦くんの精度について - はこべにっき ♨
  • C++0x ratio - Faith and Brave - C++で遊ぼう

    C++0x では、有理数(分数)定数である、 std::ratio メタ関数が用意されます。 (レイシオと読みます) // <ratio> namespace std { template <intmax_t N, intmax_t D = 1> class ratio { public: static const intmax_t num = N; static const intmax_t den = D; }; } // namespace std ratio は、 C++0x の DateTime ライブラリである で、時間を表すために使用されて たとえば、 1/3 秒のようなものを表現できるようになります。 また、 ratio のためには以下のようなものも提供されます。 加減剰余 namespace std { template <class R1, class R2> stru

    C++0x ratio - Faith and Brave - C++で遊ぼう
  • 時間計測の精度(C++) - glace雑記

    プログラムの高速化を図るとき、無駄な処理を減らしたり、より計算量の少ないアルゴリズムを使ったりすると思います。そしてその結果、実際にどれくらい速くなったのか気になりますよね。 ここでは、プログラムの処理時間を計測する方法とその精度を調べたいと思います。 処理時間の計測 プログラムの処理時間を知る方法として、以下の2つが一般的でしょう。 プログラム内で時間を計測する プロファイラを使う プログラム内で時間を計測する方法は、ここからここまでの時間を調べたいといった場合に重宝します。 プロファイラは、ボトルネックとなる処理やメモリ使用量も含めて調べる場合に役立ちます。 今回は、プログラム内で時間を計測する方法に焦点を当てます。 C++で時間を調べる方法 少し調べたところ、だいたいこれくらい見つかりました。 clock (C標準) gettimeofday (Unix) QueryPerforma

    時間計測の精度(C++) - glace雑記
  • 「そのモデルの精度、高過ぎませんか?」過学習・汎化性能・交差検証のはなし - 渋谷駅前で働くデータサイエンティストのブログ

    今年の1月にこんな話題を取り上げたわけですが。 この記事の最後にちょろっと書いた通り、実際にはこういう"too good to be true"即ち「そのモデルの精度いくら何でも高過ぎるんじゃないの?」→「実は汎化性能見てませんでした」みたいなケースって、想像よりも遥かに多くこの世の中存在するみたいなんですね。ということで、それこそ『はじパタ』の2章とかPRMLの最初の方に出てくる初歩中の初歩なんですが、その辺の話を改めてだらだら書いてみようと思います。 そもそも「精度100%」とか「相関係数0.9以上」とか見たら身構えるべき 冒頭に挙げた例は、そもそも「精度100%なんておかしい」という声があちこちから挙がったことで話題になり、蓋を開けてみたらleakageはあるわ訓練誤差でしか評価してないわで散々だったわけです。 一般に、実世界のデータセットで統計モデリングにせよ機械学習にせよモデリン

    「そのモデルの精度、高過ぎませんか?」過学習・汎化性能・交差検証のはなし - 渋谷駅前で働くデータサイエンティストのブログ
  • C++11による高精度なカウンター

    パフォーマンスを計測するには、高精度なカウンターが必要である。このカウンターは、決まった周期で値が刻まれることにより、正確な経過時間の計測ができる。 最近、GNU/Linuxに移行したので、またどうもこの環境に慣れていない。ともかくGNU/Linuxで高精度なカウンターを使う方法を調べることにした。つまり、Win32 APIでいうところの、QueryPerformanceCounterのようなものがほしい。 まず見つかったのはPOSIXのclock_gettimeだ。これを使えば、ナノ秒単位での分解能が得られる。ただし、timespec構造体が非常にややこしい作りになっている。秒とナノ秒に分かれているのだ。これは面倒だ。こんなインターフェースでは間違えたコードを書いてしまいそうだ。 また、未だにGNU/Linux環境におけるライブラリのリンク方法がよくわからないのだが、どうもclock_g

  • C言語/C++ 処理時間計測 入門

    概要 プログラム開発当初から過度のパフォーマンス最適化を行うのは良くないと言われている。 プログラムソースの柔軟性が失われる可能性があるし、必要無いかもしれない最適化に時間を費やすのは開発工数管理的に好ましくないからだ。 プログラムがある程度動作するようになり、パフォーマンスが悪い(実行速度が遅すぎる)場合は、 処理時間計測を行い処理時間を要している箇所を探しだし、アルゴリズムやデータ構造の変更などのパフォーマンス・チューニングを行う必要がある。 予備調査として、色々なアルゴリズム・データ構造を採用した場合の処理時間計測を行い、 どれが最適か、どのような性質があるかを知ることも重要である。 稿では、上記のような目的のためにプログラムの処理時間を計測する方法について説明する。 場合によっては、ストップウォッチを片手にプログラムを実行し、処理時間を計測することもあるかもしれないが、 精度が1

  • 「じゃあ、他の手法と比べてみたときにどうなんだ?」 - Qiita

    「じゃあ、他の手法と比べてみたときにどうなんだ?」 アルゴリズムの開発者は、この言葉が出ることを(かなりの頻度で)おびえていると思います。実用になるシステムを期限までに開発しなければとせかされている場合はなおさらです。学術論文を書こうとしていない状況では、避けて通れるなら避けて通りたい問題です。この言葉がでると、(1+比較する手法数)倍、作業量がとたんに増えてしまうのです。同じ学習データ、同じ特徴量を用いて、学習アルゴリズムだけを差し替えた学習と評価を作ることがどれほど面倒かを、意識することのない人が「じゃあ、他の手法と比べてみたときにどうなんだ?」という、いかにももっともな発言をするわけです。(注) **開発リソースが限られている状況では、その中で許容できる水準のものを作り上げることこそが重要です。**開発のボトルネックになっているのはそこじゃないという項目に対して、プロジェクトの優先順

    「じゃあ、他の手法と比べてみたときにどうなんだ?」 - Qiita
  • 数値計算の落とし穴

    数値計算の落とし穴     Last modified: この前計算機室にいたら,学生が「long ではなくて float を使うのかな」などと話しておりました。 # float より double を使ってくれ... コンピュータが用いる数の精度 コンピュータの内部で使用される数は,2進数で表される。 以下のプログラムを考えてみよう。 #include <stdio.h> #include <math.h> void put_float(char *string, float z); #define N 100 int main(void) { float x, sum; int i; sum = 0.0; x = 1.0/N; /* (1) */ for (i = 0; i < N; i++) { /* (2) */ sum += x; } put_float("sum = ", su

  • http://yebisu.cc.kyushu-u.ac.jp/~watanabe/RESERCH/MANUSCRIPT/KOHO/FLOATING/float.pdf

  • オンライン分類器の比較 - Qiita

    動機 前回書いた通り、会社内にデータは全く貯められていない状態です。ですが、将来ログをまともに取得した場合のデータは膨大になることが想定されました。そこで、(時間/空間)計算量を考慮するとオンライン学習アルゴリズムを使うのが最良と判断しました。 (以前のpostも想定しての話を書いています。いろんな意味で残念ですね...orz) 今までオンライン分類器をまともに使った事がなかったため、性能評価も兼ねていくつかの分類器を試してみたというわけです(随分前にですが...)。 オンライン分類器の概要 線形分類器は大体 $w^*:=argmin_wΣ_iL(x^{(i)},y^{(i)},w)+CR(w)$ $L(x^{(i)},y^{(i)},w)$:ロス関数, $R(w)$:正規化項 で表すことができると思います。 オンライン学習では、「データを1つ受け取るたびに逐次的にウェイトを更新する」とい

    オンライン分類器の比較 - Qiita
  • 自称有識者()が例の副作用100%予測にがんばって答える - 驚異のアニヲタ社会復帰の予備

    ちょっとアレなので非公開になりました。 結論 cross validation くらいしよう。

    自称有識者()が例の副作用100%予測にがんばって答える - 驚異のアニヲタ社会復帰の予備
  • Multi-class Log Loss | クラソル | CrowdSolving

    Multi-class Log Lossは3群以上の分類問題における精度評価指標の1つ. このスコアはモデルの推定精度の”悪さ”を表すので 0に近い値であるほど優れている. 各予測対象データが各群に所属する予測確率に対し,下記計算を行いスコアを算出する. N : 全予測対象数 M : 群の総数 yi,j : i番目の対象が真にj番目の群であるならば1,その他の群であるならば0 pi,j : i番目の対象がj番目の群である予測確率 pi,jは予測対象ごとに総和が1となる様に標準化される. また,pi,jが 1.0e-15 より小さい値の場合は 1.0e-15 に, pi,jが 1 - 1.0e-15 より大きい値の場合は 1 - 1.0e-15 に置き換えて計算する.

    Multi-class Log Loss | クラソル | CrowdSolving
  • Spark mllib 教師あり学習アルゴリズム精度測定 - linear classifier編 - Qiita

    概要 spark mllibの SVM LogisticRegression NaiveBayes の精度測定を、 news20 rcv1 に対して実施。その結果を記載する。 各アルゴリズムのパラメータ設定は Svm L2正則化のみ numIteration = 1000 SGD, miniBatchFraction = 1.0 regParam=c= 1.0* 10^-3 〜 1000まで測定 LogisticRegression (LR) L2正則化のみ numIteration = 1000 SGD, miniBatchFraction = 1.0 regParam=c= 1.0* 10^-3 〜 10まで測定 NaiveBayes (NB) lambda=1.0*10^-3 〜 1000 測定結果 news20 NB lambda 正例F1値 正解率

    Spark mllib 教師あり学習アルゴリズム精度測定 - linear classifier編 - Qiita
  • ML Studio (classic): Evaluate & cross-validate models - Azure

  • 多クラス分類アルゴリズムの品質メトリック

    l のクラス C1, ..., Cl、分類アルゴリズムの予測段階で計算されたクラスラベルのベクトル X= (x1, …, xn) および予測されたクラスレベルのベクトル Y= (y1, …, yn) で、混同行列と結合された品質メトリック (適合率、不正解率、その他) を計算して分類器を評価します。 さらなる定義は以下の表記を使用します。

    多クラス分類アルゴリズムの品質メトリック
  • 機械学習の性能を正しく評価するための検証手法 - Qiita

    概要 多くの機械学習関連のライブラリのチュートリアルは解決するべき問題に対してある程度適切なモデルを初めから提示してくれますが、実際に機械学習を応用するのにあたって一番難しくて手間のかかるのはモデルのチューニングである気がします。特に最近流行ってる(ディープ)ニューラルネットワークを使いこなすのにはチューニングの要素が強いことが指摘されています。 モデルのチューニングで必要不可欠となるのがその検証です。この記事では機械学習全般で用いられる幾つかの検証方法を実装して比較します。 データの分割と誤り率 (error rate) モデルの学習に使用するデータを学習データ (Train Data)、検証に使用するデータをテストデータ (Test Data)といいます。時々学習データと同じテストデータを用いた検証を見かけますが、その場合機械学習の学習能力を示したことにはなっても、汎化能力を示したこと

    機械学習の性能を正しく評価するための検証手法 - Qiita
  • モデルの精度評価(分類問題) - Tech Blog

    分類問題の精度評価についてまとめておきます。 代表的な評価指標にはどのようなものがあるのか、その中でどれを使えばいいのか、回帰分析の精度は使えるか、について順に書いていきます。 今回は、下記の混合行列で表されるような疾病検査を例にとって説明します。陽性・陰性は予測クラス、疾病あり・疾病なしは正解クラスです。 疾病あり 疾病なし 陽性 陰性 評価指標には何かあるか? 一般的によく使われる評価指標に、Precision, Recall, Specificity, F-measure, Accuracy, AUCがある。 1. Precision 陽性と判定された人のうち、実際に疾病がある人の割合。 Precision(精度、適合率), Positive Predictive Value(陽性予測値)と呼ばれる。 2. Recall 実際に疾病がある人のうち、陽性と判定される人の割合。 Reca