With new day comes new strength and new thoughts – Eleanor Roosevelt
We are not… この問題は、データセットから関連する特徴を特定し、モデルの精度を高めるために、ターゲット変数にあまり寄与しない無関係な特徴や重要度の低い特徴を削除するというものである。
特徴の選択は、モデルのパフォーマンスに大きく影響する、機械学習における中核的な概念の 1 つです。
特徴の選択とデータのクリーニングは、モデル設計の最初かつ最も重要なステップであるべきです。
特徴の選択は、予測変数または出力に最も貢献する特徴を自動または手動で選択するプロセスです。
データに無関係な特徴があると、モデルの精度が低下し、無関係な特徴に基づいてモデルが学習するようになります。 冗長なデータが少ないということは、ノイズに基づいた判断をする機会が少ないということです。
– 精度が向上する。 誤解を招くデータが少ないということは、モデリングの精度が向上するということです。
– 学習時間の短縮:データポイントが少ないため、アルゴリズムの複雑さが減り、アルゴリズムが速く学習できます。
これについて、私個人の経験をお話したいと思います。
私はすべての特徴を選択してモデルを作成し、予測モデルとしてはあまり良くない 65% 程度の精度を得ました。
特徴抽出の方法:
簡単に使用でき、良い結果をもたらす 3 つの特徴抽出テクニックを紹介します。 一変量選択
2. 特徴の重要度
3.ヒートマップによる相関行列
これらのテクニックを一つずつ例で見ていきましょう
データセットはこちらからダウンロードできます https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv
上記ファイル内の変数の説明
battery_power: 電池が一度に蓄えられるエネルギーの合計、mAhで測定
blue: 電池が一度に蓄えられるエネルギー、mAhで測定。
Bluetooth
clock_speed: マイクロプロセッサが命令を実行する速度
dual_sim: デュアル SIM サポートかどうか
fc.BUYMA
Bluetooth_speed : Bluetoothがあるかないか。 フロントカメラメガピクセル
four_g: 4G をサポートしているかどうか
int_memory: 内蔵メモリ(ギガバイト)
m_dep: モバイルの奥行き(cm)
mobile_wt: 携帯電話の重量
n_cores: プロセッサーのコア数
pc: Primary Camera megapixels
px_height
Pixel Resolution Height
px_width: Pixel Resolution Width
ram.Of.Pixel: Pixel解像度幅
n_cores: プロセッサのコア数
ram: Random Access Memory (MegaBytes)
sc_h: モバイルの画面高さ(cm)
sc_w:
talk_time: 1回の充電で持続する最長時間
three_g: 3Gの有無
touch_screen: タッチスクリーンがあるかないか
wifi: wifiがあるかないか
price_range: 0(低価格)、1(中価格)、2(高価格)、3(超高価格)の値を持つ対象変数です
1. 1158>
scikit-learnライブラリは、特定の数の特徴を選択するために、異なる統計テストのスイートで使用することができるSelectKBestクラスを提供します。
import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range#apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=chi2, k=10)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
#concat two dataframes for better visualization
featureScores = pd.concat(,axis=1)
featureScores.columns = #naming the dataframe columns
print(featureScores.nlargest(10,'Score')) #print 10 best features
Feature Importance
モデルの feature importance 特性を使用してデータセットのそれぞれの feature の重要度を取得できます。
Feature importance は、データの各特徴に対してスコアを与え、スコアが高いほど、出力変数に対するその特徴の重要性または関連性が高くなります。
Feature importance は、木ベースの分類器に付属する組み込みクラスで、データセットの上位 10 の特徴を抽出するために、木ベースの分類器を使用する予定です。
import pandas as pd
import numpy as np
data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()
3.Correlation Matrix with Heatmap
Correlation とは特徴量がお互いに、またはターゲット変数にどう関係しているかと言うことで、特徴量がターゲット変数をどのように関連するかを示す。
相関は正(特徴の1つの値の増加は、ターゲット変数の値を増加させる)または負(特徴の1つの値の増加は、ターゲット変数の値を減少させる)であることができます。
ヒートマップは、どの特徴がターゲット変数に最も関連しているかを簡単に特定することができ、我々はseabornライブラリを使って相関した特徴のヒートマップを描きます。