回答:
非常に興味深い質問(+1)。現在、機能エンジニアリングのための包括的な機能を提供しているソフトウェアツールは知りませんが、その点に関しては幅広い選択肢があります。現在、私の知る限り、機能工学はまだ大部分があり面倒と手動のプロセス(すなわち、参照このブログ記事を)。フィーチャエンジニアリングの主題分野について言えば、Jason Brownleeによるこの優れた記事は、トピックのかなり包括的な概要を提供します。
ベン・ロリカ、オライリーメディア株式会社のチーフサイエンティストデータとデータのためのコンテンツ戦略のディレクターは、書かれた非常に素晴らしい記事をで近づき、方法、ツール、およびスタートアップ(2014年6月時点)の最先端を記述し、自動化の分野(または、彼が言ったように、合理化)機能エンジニアリング。
Benが参照したいくつかのスタートアップを簡単に見てみましたが、Skytreeの製品は、特にこの質問の主題に関して、実に印象的です。そうは言っても、彼らの主張のいくつかは私には本当に疑わしいように聞こえます(つまり、「Skytreeはオープンソースオプションと比較して機械学習方法を最大150倍高速化します」)。商用データサイエンスと機械学習サービスの話を続けると、Microsoftのソリューション、特にAzure Machine Learning Studioに言及する必要があります。このWebベースの製品は非常に強力でエレガントであり、機能エンジニアリング機能(FEF)を提供します。簡単なFEFの例については、この素敵なビデオを参照してください。
質問に戻ると、機能エンジニアリングの自動化に適用できる最も簡単なアプローチは、対応するIDEを使用することだと思います。あなた(私も)はデータサイエンスのバックエンドとしてR言語に興味があるので、RStudioに加えて、RKWardと呼ばれる同様のオープンソースIDEを確認することをお勧めします。RKWardとRStudioの利点の1つは、IDEのプラグインの作成をサポートしているため、データサイエンティストが機能エンジニアリングを自動化し、Rベースのデータ分析を合理化できることです。
最後に、機能エンジニアリングソリューションのスペクトルの反対側には、いくつかの研究プロジェクトがあります。二つの最も注目すべきは、スタンフォード大学のように見えるコロンバスプロジェクトで詳細に説明し、対応する研究論文、と洗脳で説明した、本論文。
Featuretoolsは、自動化された機能エンジニアリング用に最近リリースされたpythonライブラリです。これは、2015年にMITで開発され、Kaggleの公開データサイエンスコンペでテストされたDeep Feature Synthesisと呼ばれるアルゴリズムに基づいています。
一般的なデータサイエンスプロセスにどのように適合するかを次に示します。
ライブラリの目的は、専門家がより優れた機械学習モデルをより迅速に構築できるようにするだけでなく、学習しようとしている人々に対するデータサイエンスプロセスの威圧を軽減することです。イベントドリブンまたはリレーショナルデータがある場合は、それを確認することを強くお勧めします。
免責事項:私はプロジェクトの開発者の一人です。
機能エンジニアリングは機械学習の中心であり、かなり面倒で時間がかかります。人間をループから外すことを期待して、機能エンジニアリングを自動化するさまざまな試みがありました。分類問題に対してこれを行う特定の実装の1つがauto-sklearnです。フードの下でSMACと呼ばれる最適化手順を使用して、適切な変換とアルゴリズム(およびアルゴリズムパラメーター)のセットを選択します。
Trifactaは、データ変換のための非常に使いやすいツールを提供することに注意してください。変換/フィーチャエンジニアリングマップを設定できる非常に直感的なGUIがあります。適切なサイズの問題に使用できる無料の試用版もあります。
Scikit-learnは最近、機能エンジニアリングの多くの側面に取り組む新しいトランスフォーマーをリリースしました。例えば:
SimpleImputer
(http://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html)を使用して、数値変数とカテゴリ変数の両方で平均値、中央値、および任意の値の代入を含む、複数の欠損データの代入手法を実行できます。 。
IterativeImputer
(https://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputerを使用して、ベイズ、ランダムフォレスト、その他(RのMICE、アメリア、MissForestと同等)などのいくつかの推定量を使用して多変量代入を実行できます。 .html#sklearn.impute.IterativeImputer)
OneHotEncoder()
from Scikit-learn を使用して、カテゴリ1のホットエンコーディングを実行できます。
を使用して、カテゴリ変数を数値でエンコードできますLabelEncoder
。
PowerTransformer
(http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PowerTransformer.html)でY-Johnson変数変換を行うことができます
KBinsDiscretiser
(https://scikit-learn.org/stable/auto_examples/preprocessing/plot_discretization.html)で離散化を行うことができます
Scikit-learnには潜在的に他の機能エンジニアリングトランスフォーマーがあり、開発者はライブラリを非常に定期的に更新します。
よく知られているScikit-learnライブラリの代替として、feature-engineと呼ばれる最近リリースされた新しいオープンソースライブラリがあります。機能エンジンを使用すると、次のことができます。
詳細については、githubリポジトリおよびドキュメント(https://feature-engine.readthedocs.io/en/latest/)
免責事項:機能エンジンを作成し、オープンソースにしました。
別のオープンソースのPythonパッケージでは、さまざまなタイプのカテゴリ変数エンコードが可能です:https : //contrib.scikit-learn.org/categorical-encoding/
最後に、機能ツールは、トランザクションデータ用の優れたオープンソースライブラリです。
Azure Machine Learningプラットフォームの確認を検討する必要があります。オンラインであり、無料のアカウントで使用できます。
Azure MLは、グラフィックユーザーインターフェイスのモジュールを使用してワークフローを提供します。それらの多くはData Mungingに関連しており、データを簡単に消去できます。GUIでできないことがある場合は、カスタムRまたはPythonスクリプトを実行してデータを操作できるモジュールを追加するだけです。
良い点は、いつでも簡単にデータを視覚化しdataframe.describe()
、Rのような単純な統計を確認できることです。
Amazon Machine Learningはツールであり、機能エンジニアリングに何度か使用しています。
Amazon AWSサービスには多くの約束と標準が示されているので、データサイエンティストのワークフローをよりシンプルにする見込みと約束があるので、Amazon MLに間違いなく期待しています。しかし、今のところ、それはまだ小さいです。
しかし、機能エンジニアリングのツールを求めたので、これもその1つです。