0
0
テーマ、知りたいこと
特徴量エンジニアリングについて
背景、状況
現在、機械学習の学習をしているのですが、特徴量作成にあたり何を基準に考えればよいのかわからずに
困っています。平均・最大・最小などしか浮かびません。
質問
ここでお聞きしたいのですが、皆さんは特徴量を作成する時にどのようなことを考えたり、意識したりしているのでしょうか?
(可能であれば、実際にどのようなタスクでどういった特徴量を作成したかお聞きしたいです。)
追記
調査したことを記載していませんでした。大変失礼いたしました。
特徴量エンジニアリングについて調査したところ、「今あるデータの特徴量からドメイン知識などを生かして新しくデータの特徴量を作成する作業のことである」と記載してある解説記事が多かったです。
書いてあることはその通りだと思うのですが、自身が特徴量作成するときに、結局どうするのかという問題に直面しています。
皆さんが様々なタスクに対してどのように対処されたのかをお聞きすることで、今後自身で特徴量作成を行うときに参考にしたいと考えております。
新たな特徴量の作成及び特徴量の取捨選択が現在の課題です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
#1
総合スコア38352
投稿2023/07/27 02:43
編集2023/07/27 02:47ChatGPTの回答
特徴量エンジニアリングは、機械学習の成功において非常に重要なステップです。良い特徴量を作成することで、モデルの性能を向上させることができます。以下は、特徴量エンジニアリングに取り組む際の一般的な考え方と具体的な手順の例です。
-
ドメイン知識の理解:
問題領域に関するドメイン知識を理解することは重要です。データが何を表しているか、どのような特徴が重要かを把握することで、適切な特徴量を見つけるのに役立ちます。 -
よく使われる統計量:
平均や最大、最小といった基本的な統計量は、特徴量エンジニアリングにおいて重要なスタート地点です。これらの統計量は、データの中心傾向やばらつきを表すため、多くの場合有用な特徴となります。 -
カテゴリカル変数のエンコーディング:
カテゴリカル変数を数値に変換する方法も重要です。例えば、One-Hotエンコーディングやラベルエンコーディングなどの手法を使用して、カテゴリカルな情報を数値の特徴量に変換します。 -
テキストデータの処理:
テキストデータを機械学習モデルに適用する際には、テキストから特徴量を抽出する必要があります。TF-IDFやWord2Vecなどの手法を使用して、テキストデータを数値の特徴量に変換します。 -
欠損値の処理:
データに欠損値がある場合、それらを適切に処理する必要があります。欠損値を代表値で埋めたり、欠損フラグを作成したりすることで、欠損値に対応する特徴量を作成します。
以下に、具体的な手順の例として、タイタニックデータセットとボストン住宅価格データセットに対する特徴量エンジニアリングの例を示します。
-
タイタニックデータセット:
- 家族のサイズ: "SibSp"(兄弟姉妹/配偶者の数)と "Parch"(両親/子供の数)を合算して家族のサイズを表す新しい特徴量を作成する。
- 敬称: 乗客の名前から敬称(Mr., Mrs., Missなど)を抽出して新しい特徴量として追加する。
- ティケットの長さ: ティケット番号の文字数を示す特徴量を作成する。
-
ボストン住宅価格データセット:
- 部屋数に基づく新しい特徴量: "RM"(平均部屋数)を元に、各住宅の部屋数の合計を示す特徴量を作成する。
- 地域の資源を示す特徴量: "CRIM"(人口1人当たりの犯罪発生率)と "INDUS"(非小売業の土地面積の割合)を組み合わせて、地域の資源を示す新しい特徴量を作成する。
これらの手順はあくまで一例であり、特定の問題によって適切な特徴量が異なります。重要なのは、問題の性質やドメイン知識を理解し、データに対して適切な特徴量エンジニアリングを行うことです。特徴量エンジニアリングは試行錯誤が含まれることがありますので、多くの場合は何度も実験してモデルの性能を向上させるようにしてください。
やはり、データのどこに注目すべきか?特徴を示すものは何か?を知るためにはドメイン知識が重要だと思います。
#3

退会済みユーザー
総合スコア0
投稿2023/07/27 12:11
編集2023/07/28 15:09特徴量エンジニアリングについて調査したところ、「今あるデータの特徴量からドメイン知識などを生かして新しくデータの特徴量を作成する作業のことである」と記載してある解説記事が多かったです。
書いてあることはその通りだと思うのですが、自身が特徴量作成するときに、結局どうするのかという問題に直面しています。
結局つまるところ、このかっこ書きの中身に行きつかざるを得ないような気がします。秘伝のたれ的な、「何で?」と言われても「知らん!なるもんはなる」だとか「ドメイン知識を突き詰めるとそうなる」とかそういうところが大きいと思います。
※ここの部分については、私のコメントというより、以前お世話になったその手の一流のエンジニアたちとの対話の中で得られた知見です。「そういうもの」「理屈じゃない」「よく分からないが、それで成り立つならそれで正義」のような、感性がものを言う部分のようです。
—-
強いて言えば、メートルとヤード、ポンドとグラムが入り混じるような特徴量があったとしたら、普通は単位をそろえた方が良いはずでしょうし、農作物であれば平方メートルと収穫量から面積当たりの収穫量みたいな複合した特徴量を作るみたいなことは大事なような気がします。他にも、商品のキロ単価があれば平方メートルあたりの収益率みたいなものも出るかもしれませんし、そのために何日かけただとか色々夢が広がります。
「ジェレミー・クラークソン 農家になる」の会計担当者がこういう感性が尖っていたハズです。
もし、対象が通販サイトだとしたら、月間購入額だとか購入頻度だとか、ダンベルと粉末プロテインの購入連動率(?)みたいなことを泥臭くやっていくでしょうか。
たぶんですが、どこにももちろんTeratailにも答えがなく、仕事の数だけ特徴量エンジニアリングがある(最悪の場合、そんなものが通用しないランダムに支配されていることすらあるだとか)そういうものな気がします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#4
総合スコア38352
投稿2023/07/28 01:25
編集2023/07/28 01:32私は機械学習も特徴量エンジニアリングも専門外なのですが
皆さんが様々なタスクに対してどのように対処されたのかをお聞きすることで、今後自身で特徴量作成を行うときに参考にしたいと考えております。
たぶんそのタスクがお仕事絡みだったりすると具体的なことはなかなかいえないでしょうし、かりにできるにしても、とある特徴量を作成した理由を説明してもそのタスクに対するドメイン知識が必要なはずなので多くの人には理解が難しいのではと思います。
そもそも具体的な事例について説明するのはわりと手間がかかります。
なのでここで意見(というかタダで情報)が出てくるのを待つよりもKaggleでFeature Engineering
なりで検索してkernel(notebook)を漁るほうがより多く有益な情報が得られると思います。
というか私ならそうします。
ざっと漁ったら、たとえば以下のようなものが見つかりました。
3. ここで差がつく! 仮説に基づいて新しい特徴量を作ってみよう
Titanic - Advanced Feature Engineering Tutorial
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#5
総合スコア10898
投稿2023/07/28 11:21
編集2023/07/28 11:22新たな特徴量の作成及び特徴量の取捨選択が現在の課題です。
- 特徴量の選択
(機械学習の手法にも依るかと思いますが)高い相関がある特徴量がある場合にはどちらかを削除することが一般的かと思います。
pythonで高相関の特徴量を削除する方法
特徴量が高次元の場合には次元圧縮することもあるでしょう。
主成分分析とは?簡単な説明とPythonでの実装!
- 新たな特徴量の作成
特徴量から計算(対数など)したり複数の特徴量サンプルから作成(偏差値など)する方法があるかと思います。
入門】特徴量エンジニアリングって難しい…?けど大切な考え方!簡単な手法も掲載中!
いずれにしてもデータやモデルによって評価値(精度など)が改善したり悪化したりするかと思いますので、傾向を確認しながら特徴量の選択を決めていく必要があるかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。