2021年2月20日
近くの観光ヘリ、土日は昼間もしょっちゅう飛んでいる。5分間隔で借りれるらしい。
昼、K夫妻と久しぶりにランチ。家族以外と基本リアルで話さないので、いらん事をペラペラと喋りすぎた気がする。もともと非コミュなのに更に進む非コミュ化。
ヨドバシでちょくちょくPS5が店頭販売されているようだけど、転売防止のためにヨドバシのクレジットカードが必須らしい、とのことでヨドバシのクレカを申し込む。年会費無料だしまぁ…。ただクレカ関係は営業電話がかかってくる事があるのが嫌なのだよなぁ。
しかしPS5の品薄、ロコナ禍でゲーム機需要も高く、一向に解消される気配がないね。
機械学習学習日記 - 19日目
4.5 自動特徴量選択では、特徴量が増え過剰適合になることを防ぐため、特徴量を減らす手法。
4.5.1 単変量統計では、特徴量同士の相関は無視して、個々の特徴量を個別に考慮(= 単変量)して切り捨てる。この手法はクラス分類の場合は分散分析(analysis of variance:ANOVA)と呼ばれる。例では30特徴量のデータに50のノイズを加え、40の特徴量をSelectPercentileによって選択したところ、30特徴量の殆どが選択され、ノイズはほぼ除去されていた。多くの特徴量同士の相関関係が全く無い場合は有用。
4.5.2 モデルベース特徴量選択では、教師ありモデルを特徴量の選択に用いる。決定木ベースのモデル(特徴量の重要性がfeature_importances_に含まれる)や線形モデル(係数の絶対値を見る)では特徴量の重要性が解るので、これを用いて取り出す。sklearnにはSelectFromModel というズバリの実装があるので、コレを使って抽出ができる。
4.5.3 反復特徴量選択では、特徴量を1づつ増やす/減らすことでモデルを作る。再帰的特徴量削減(recursive feature elimination:RFE)ではすべての特徴量からモデルを作り、再帰的に適用し1づつ特徴量を削除してほしい数まで特徴量を削減する。再帰的に適用するため、計算機コストは高い。例では、ただの線形回帰のスコアが、反復特徴量選択適用後のデータを使うことによってランダムフォレストと同様のスコアまで性能改善している。
4.6 専門家知識の利用では専門家知識(expert knowledge)を利用する。特定のドメインに対して事前知識から特徴量を特定する。例えば、月の満ち欠けや権威者が決める毎年変わる休日等、これらの知識を特徴量として追加する。
例として、自転車レンタルの時系列のカウントのデータを、ランダムフォレストに適用する方法では、日時(unixtime)では未来予測となってしまうため予測出来ず、日時をhour/weekの特徴量にする(もとのunixtimeは削除)ことでランダムフォレストで予想可能にしている。
また、線形Ridge回帰を使う方法では、ワンホットエンコーディング + 交互作用特徴量(PolynomialFeatures) + ラベル付けをすることで、ランダムフォレストと同等レベルの予想性能を出している。ランダムフォレストと異なるのは、特徴量にラベル付けができるため、何をするとどう結果が変わったか、解りやすく視覚化ができる。
4.7 まとめと展望では、特徴量の追加・削減の重要性とどの特徴量とどのアルゴリズムを組み合わせるかが大切、ということを述べている。
5 モデルの評価と改良。教師あり学習では train_test_split() を使って訓練セットとテストセットに分けてモデル構築とスコアを評価してきた。
5.1 交差検証(cross-validation)は、汎化性能を評価する統計的手法。train_test_split() でのただのランダム分割ではなく、クラス分類機は層化k分割交差検証(stratified k-fold cross-validation)を、回帰ではk分割交差検証(k-fold)をscikit-learnは標準では用いる。
他にも交差検証分類器(cross-validation splitter)を明示的に与えることで、別の戦略を使うことができる。ただ、基本的にはKFold, StatifiedKFold, そしてグループ付き交差検証の GroupKFold を用いると良い。
箇条書してたら長くなってしまった…。