2026年01月

TF-IDFにsublinear_tf=True を付けたらF値が0.6突破。
こりゃいいわと本番適用したら何故か誤爆が多発。
あと、LinierSVCのC値だが、10でも0.1でも0.9でもF値が悪化。今の所デフォルトの1.0が一番良い。
今、推測時の閾値は0.85にして相当自信がないと採用しないようにしているんだけど、それでもまだ誤爆多い。
今宵からはモデルを戻して閾値を0.9にしてみる。
それにしてもサポートベクターマシンはパラメータをちょっとでも弄ると例の警告「ConvergenceWarning: The max_iter was reached which means the coef_ did not converge」が出まくる、非常にデリケートな代物だな。
サポートベクターマシン (知の科学)
小野田 崇
オーム社
2007-08-01


このエントリーをはてなブックマークに追加 mixiチェック

cross_wait=balancedにしてmax_iter=20万の結果、 F1 Score (Micro): 0.4931 だめやん…


このエントリーをはてなブックマークに追加 mixiチェック

昨日の、2万でも発生するから次はドーンと20万だ。パラメータ一つ変えただけなのに1千からいきなり20万になるから謎だな。
なにせパラメータの意味が今一つイメージできていないからな…。
しかしサポートベクターマシンの本はコンピュータサイエンス系大学院生向けっぽいのばかりでとても買って読んで理解できる気がしない…。scikit-learn方面から探るしかないのか。
というか、ハイパーパラメータのチューニングは、データ量を減らして行った方が良いのかもしれないな。ただ内部の仕組みが今一つイメージできていないから、データ量を減らしてチューニングして、それを大規模に適用して良いのかすら分からぬ。


このエントリーをはてなブックマークに追加 mixiチェック

ちょっとでもパラメータを変えると出るなぁ。
max_iter=1000では足りず、9000でも足りず、今宵は20000で試す予定。


このエントリーをはてなブックマークに追加 mixiチェック

原因は、AI処理からのPOSTの中身のうち数字であるべきところに文字列が入っているから、それがそのままDBに書き込まれて、Javaアプリ側がGETした時にもそれが読みだされ、Javaアプリがエラーを起こしている。
というところまで分かったのでメモ。
修正は容易いがそれより「WEBサーバ側のDBが何か変なのだろう」は発生した時から1秒で見当はついていて、DBをクリアするバッチを流したにもかかわらずクリアされずにポイズンデータともども全レコードが健在のまま。これは一体どうしたことか…。そっちが問題だ。


このエントリーをはてなブックマークに追加 mixiチェック

SVMのチューニングは本を読んでもさっぱりわからぬ。
つかこの本「SVCといえばRBF、当然だよね」という態度でリニアSVCには手薄だったし。
……まぁこと人工知能についてはブリキ野郎が詳しかろうと、Geminiに聞いたので以下メモ。今週末またやろう。
--------

TF-IDF + LinearSVC(リニアSVM)は、テキスト分類において「王道」かつ「最強のベースライン」と言われる組み合わせです。これを選定されたのは素晴らしい判断です。

LinearSVCの精度をさらに引き上げるためのチューニングポイントを、優先度が高い順に解説します。

(略)
まとめ:おすすめの実験手順

  1. まず class_weight='balanced' を入れて学習・評価する。

  2. TF-IDFの sublinear_tf=True を入れて学習・評価する。

  3. 最後に C=0.1C=10.0 を試して、デフォルト(1.0)より良くなるか確認する。

この順序で試すと、効率よく精度向上できるはずです。
ーーーー

んーむ、意味は分からんが、仰る通りにやってみよう。



このエントリーをはてなブックマークに追加 mixiチェック

一番成績が良いのは
・特徴量:TF-IDF。元はタイトルも作者も何も重み付けしない普通の連結テキスト。それもユニグラム
・モデル:リニアSVM
が今の所最も優れている。しかしなかなかF1スコアが0.6を越えないな…。
K近傍法以外はハイパーパラメータの意味が皆目わからないので図書館で本を借りてきた。
うむ、まるで分らん…。
ただ、随所で出てくるデータと境界線を描くのに使っているライブラリ、matplotlibはちょっと覚えたいと思った。


このエントリーをはてなブックマークに追加 mixiチェック

特徴量をTF-IDFからBoWに変更したら…OneVsRestClassifier(LogisticRegression(solver='sag', n_jobs=-1,max_iter=1000))の学習が一昼夜経っても終わらないでござるの巻。
TF-IDFは1時間半で終わったのに…。
もうBoFはクビ!次はBM25。


このエントリーをはてなブックマークに追加 mixiチェック

メモ:以下はLogisticRegression()や、LinearSVC()などのmax_iterパラメータが小さくて、収束しなかった時に出る警告。

c:(略)\miniconda3\Lib\site-packages\sklearn\linear_model\_sag.py:349: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge


今回は、F1スコアは0.6越えが目標。

デフォルトは100。
LogisticRegression()で、特徴量がTF-IDFの時は1000で出なくなった。F1 Scoreは0.5376
LogisticRegression()で、特徴量がBoWの時は1000でまだ出る。(★要調査)
LinearSVC()で、特徴量がTF-IDFの時は1000で出なくなった。F1は0.5980
LinearSVC()で、特徴量がBoWの時は2000でまだ出る(★要調査)。



このエントリーをはてなブックマークに追加 mixiチェック

「怖くない あなたにもできる オンコール対応、障害対応」という立派な記事タイトルがあったので。
まぁ昔はよく調査する人とお客さんに報告する文書作る人は分けろとはやってたな。今は「インシデントコマンダー」「ドゥワー」言うらしい。名前が格好良いな。まぁカッコいい名前は士気を高めるのでいいかもしれない。
まぁトラブル発生時に「面白くなってきやがったぜ」という次元大介的な態度で取り組む方が、当人も落ち着き周囲にも良い影響を与え、良い結果になるであろう事は分かる、分かるけど、これは性格だからの…。ペルソナったって、限界が。


 
このエントリーをはてなブックマークに追加 mixiチェック

↑このページのトップヘ