新卒1年目の技術に関する備忘録

自主学習で困ったこと、学んだことをまとめています

他クラス分類の方法

二項分類器を使って他クラス分類を行う方法 OVA法(one-versus-all) 分類する数分だけ個々の分類器を作り、1つとその他の分類をすることで他クラス分類を実現させる。 OVO法(one-versus-one) 分類する数の組み合わせの分だけ分類器を作り、1対1の分類をする。…

テールヘビーの分布の前処理

ヒストグラムがテールヘビー(中央値の左側よりも右側が大きく広がっている)だと、機械学習アルゴリズムはパターンを見つけにくくなることがある。 そういう属性は、ベル型の分布に近づくように変換する。

カスタム変換

変換器を自分で作りたい時は、TransformerMixinとBaseEstimatorを基底クラスに追加すれば良い。

回帰の性能指標

回帰の性能指標として、一般的には平均二乗誤差(RMSE:Root Mean Square Error)を用いる。 しかし、外れ値となる区域が多数ある場合は平均絶対誤差 (MAE:Mean Absolute Error)を使うことを考えると良い。 実測値と予測値の差の絶対値の平均をとる。 これ…

インスタンスベース学習とモデルベース学習

インスタンスベース学習 既知のデータを丸暗記し、新しいデータを類似度の尺度を使って汎化する。 モデルベース学習 データ例全体からモデルを構築し、そのモデルを使って予測をする方法。

バッチ学習とオンライン学習

バッチ学習 システムを少しずつ学習することができない。 訓練する際は、全ての訓練データを与える必要がある。 オンライン学習 オンライン学習とは異なり、学習データが入ってくるたびに都度、新たに入ってきたデータのみを使って学習する。差分学習とも呼…

テキストデータの処理

Bag of Wordsによるテキスト表現 ・トークン分割 個々の文書を単語に分割する。 ホワイトスペースや句読点で区切る。 ・ボキャブラリ構築 単語に番号付をする。 ・エンコード 単語が現れる回数を数える。 tf-idfを用いたデータのスケール変換 特徴量がどの程…

評価基準を用いたモデル選択

GridSearchCVとcross_val_scoreにAUCのような基準を用いる。 GridSearchCVとcross_val_scoreの両方にあるscoringという引数を用いる。 デフォルトの基準(精度)からAUCに変更するにはscoringパラメータにroc_aucを与える。

評価基準とスコア

2クラス分類を例に挙げる。 片方のクラスだけ極端に多い場合、単純に精度が高いから良いモデルとは決めきれない。 極端に多いクラスの方だけを予測してしまえば、高い精度を保てるからである。 混同行列 精度 = TP + TN / TP + TN + FP + FN で表される。…

自動特徴量選択

モデルの汎化性能を向上させるために、最も有用な特徴量だけを残し、残りを捨てて特徴量を減らす必要がある。 良い特徴量を知るための基本戦略3つ。 ・単変量統計 ・モデルベース選択 ・反復選択 単変量統計 個々の特徴量とターゲットの間に統計的に顕著な関…

単変量非線型変換

log, sin, cosなどの数学関数を用いることでモデルの精度をあげることができる。 下図のように、値の小さいものが多く、値の大きいものが少ないデータについて考える。 まずはそのままのデータで予測をしてみる。 モデルはリッジ回帰を用いる。 R^2のスコア…

特徴量のビニングと離散化

線形回帰モデルを柔軟にする方法として、ビニングがある。 線形回帰モデルでは特徴量が1つである場合、予測が直線になってしまうため特徴量を増やす方法としてビニングが使われる。 ビニングの方法 特徴量の入力レンジを固定数のビンに分割する。 numpyのlin…

クラスタリングの評価

正解データを用いるクラスタリングの評価 調整ランド指数(adjusted rand index: ARI)、正規化相互情報量(normalized mutual information)がある。 正解データを用いないクラスタリングの評価 シルエット係数 シルエットスコアはクラスタのコンパクトさを計算…

DBSCAN

DBSCAN(density-based spatial clustering of applications with noise) 密度に基づくノイズあり空間クラスタリング 利点 ・クラスタ数を先験的に与える必要がない。 ・どのクラスタにも属さない点を判別できる。 高密度領域(混んでいる領域)を見つける。 …

凝集型クラスタリング

個々のデータポイントをそれぞれ個別のクラスタとして開始し、最も似た2つのクラスタをくっつけていく。 指定したクラスタの数になるまでそれを繰り返す。 連結度 ward 併合した時に、クラスタ内の分散の増分が最小になるように2つのクラスタを選択する。こ…

ベクトル量子化、成分分解としてのk-means

k-meansはクラスタセンタで個々のデータポイントを表現する。 個々のデータポイントを、クラスタセンタとして与えられる単一の成分で表現していると考えることができ、k-meansを成分分解としてみる考え方を、ベクトル量子化と呼ぶ。

クラスタリングとクラス分類

クラスタリングとクラス分類は、両方ともラベル付けをするという意味で、ある意味似ているが、クラスタリングには真のラベル(テストデータ)がない点において異なる。

k-meansクラスタリング

データのある領域を代表するようなクラスタ重心を見つけようとする。 個々のデータポイントを最寄りのクラスタ重心に割り当てる。 個々のクラスタ重心をその点に割り当てられたデータポイントの平均に設定する。 データポイントの割り当てが変化しなくなった…

非負値行列因子分解(NMF)

Non-negative matrix factorization 有用な特徴量を抽出することを目的とする教師なし学習手法の1つである。 アルゴリズムの動作はPCAと似ていて、次元削減に用いることが出来る。 PCAでは、個々の成分はデータの分散を可能な限り説明する、互いに直行するも…

PCA基礎

PCAのwhitenオプション 主成分が同じスケールになるように変換する。 PCA後にStandardScalerをかけるのと同じ。

主成分分析

PCAを用いたデータ変換。 (左上)最も分散が大きい方向を第一成分(Component 1)、それに直行する方向で、最も情報をもっている方向を探す。 このようにして見つけていく方向を主成分という。 下図 (左から右に)もとのデータ、変換後のデータ、変換して第…

様々な前処理

データの前処理として、主にStandardScaler、RobustScaler、MinMaxScaler、Normalizerの変換の4つがある。 StandardScaler 平均が0、分散が1になるようにする(z変換)。 ※特徴量の最大値や最小値が、ある範囲に入ることを保証するものではない。 RobustScal…

SVM(サポートベクタマシン)

SVMのパラメータ gammaパラメータはガウシアンカーネルの幅を調整する gammaパラメータを小さくするとガウシアンカーネルの直径が大きくなり、多くの点を近いと判断するようになる。 大きくすると複雑になる。 Cパラメータは正則化パラメータである Cを大き…

ニューラルネットワークのモデル基礎

隠れ層が1つでユニットが10の時は10の線分から構成される。 MLPClassifierのパラメータhidden_layerで隠れ層のユニット数を指定し、alpha値でL2正則化を制御することが出来る。 alphaを大きくすると正則化が強くなり、多くが重み0に近づく。 adamはスケール…

勾配ブースティング回帰木(勾配ブースティングマシン)

勾配ブースティングでは一つ目の決定木の誤りを、次の決定木で修正するようにして決定木を作っていく。 乱数性はないが、強力な事前枝切りが用いられる。 浅い決定木(弱学習機)を多数組み合わせるから、メモリが小さくなり予測も速くなる。 パラメータの影…

ランダムフォレスト

n_estimatorsで決定木の数を、n_jobsでCPUのコア数を指定することが出来る。 ランダムフォレストは乱数のシード(random_state)を変更すると、構築されるモデルが大きく変わる可能性がある。 決定木の数が増えると、シードの選択の影響を受けにくくなる。 max…

決定木基礎

決定木の事前枝切り、枝切り。 決定木では枝切りをしないと過剰適合が起きやすくなる。 sckit-learnでは事前枝切りしか実装がされていない。 sklearnのDecisionTreeClassifierではmax_depthを指定することで決定木の深さを決めることが出来る。 max_depthを4…

大規模データの線形回帰

サンプル点が10万、100万点のように非常に大きい場合も線形モデルは高速である。 このようにサンプル数が多い場合は、solver = 'sag'を指定すると高速化が見込める。 SGDClassifierクラスとSGDRegressorクラスを使う方法もある。 SGDは大規模なデータに適し…

ロジスティック回帰の基礎

LogisticRegressionではパラメータCを大きくすると、適合度を上げようとし、小さくすると係数を0に近づけようとする(正則化)。

回帰のモデル

LinearRegressionでの、学習セットに対するテストセットの精度が低い場合 例 train prediction : 0.92 test prediction : 0.63 モデルの過学習であるため、正則化を行う必要がある。 正則化とはざっくり言うと、係数を0に近づけることで学習精度を低くする代…