モデルの改善
7911 ワード
TLR
あなたのモデルは予想よりも良いパフォーマンスですか?あなたのモデル性能を評価して、正確に、そして、正しく評価しているデータ漏出があるならば、二重チェックしてください!
用語集
何ですか。
Data leakage は、教師が誤って研究ガイドに直接試験問題を置くときに、学生がよく実行するときに独自の教育能力を称賛-それは概念の学生の理解を評価する目的を破っているようです.
同様に、データ漏洩は、ユーザーがトレーニングデータセットにアクセスしない情報を誤って漏らしていることを示します.あなたがテストしているとき、この余分の情報を含むことはしばしばパフォーマンスを改善します、しかし、現在、モデルは我々が現在知っていないデータを使用して、データの偏った配布を引き起こすので、現実世界で予測に役に立ちません.
はい、実際にあなたのモデルのパフォーマンスを向上させるために、あなたがトレーニングデータセットで予測の瞬間の前にどんなデータを持っているかをシミュレートしなければならないという冗談のように聞こえます.モデルで予測をするとき、あなたが現実の世界で持っているデータを反映するために、我々はパフォーマンスメトリックのような増加している特定のコラムを取り除かなければなりませんaccuracy, precision, and recall . これは、あなたのモデルは、実際の生活で使用できるようにすることです!
人々がデータ漏えいの結果となる一般的な誤りは以下の通りです.
識別する3つの方法
データ漏えいは偶然であるので、私たちがそれに気を付けなければならないことは、私たちがリークデータを持っているかもしれないことを示すかもしれません.
ソース:スパイダーマン:スパイダーの詩に
状況によっては、以下のような場合があります🚩容疑者🚩データリークが発生する可能性があります.
コーディング例👩💻
この節では、表示されているコードスニペットに沿ってCollab Notebook 同時にコードとコンテンツに従事する!結局、我々は最善を尽くして学ぶ.☺️
アクティブラーニングMarcie Hopkins, University of Utah )
マーケティングキャンペーンメールdataset , 我々は、ユーザーが件名のような機能に基づいて電子メールを開くかどうかを予測し、ユーザーが予測します.まず、データセットを簡単に見てみましょう.
1 import pandas as pd
2
3 df = pd.read_csv('email.csv')
4 df
一目で、500のメールを様々な顧客(顧客ID)に送信を参照してください.各行には、メールの“件名”が含まれているかどうか、ユーザーが“電子メールかどうかを開いたかどうか”とは、メールの本文内のリンクに“クリック”かどうか.
我々が以前に、「クリックされた」機能が上記の例で漏れていると確認したけれども、我々がそれを見つけることができなかったならば、どうですか?
データ漏洩検出
その場合、我々は使用できるSHAP values 列がモデルの結果に及ぼす影響を決定する.これらは本質的に予測に影響を与えるトップの特徴の尺度です.予測の結果が非常にカップルの特徴だけに依存しているとき、それはそうです🚩🚩🚩!
まず、モデルを訓練する必要があります.ユーザーがマーケティングキャンペーンメールを「開く」かどうかを予測したいので、ブールの結果の可能性を予測するロジスティック回帰モデルを使用します.
データをtrain and test split , 我々は必要encode 回帰モデルが理解する数値へのテキスト“件名行”.あなたはどのようにencoding このデータセットのための作品、およびどのように我々はこれでトレーニングとテストデータを設定するColab Notebook .
1 import sklearn
2 from sklearn.linear_model import LogisticRegression
3
4 reg_log = LogisticRegression()
5 reg_log.fit(X_train, y_train)
我々の回帰モデル“regsieログ”訓練を受けて、我々は今我々のシャップ値を生成することができますし、バーを表示する方法を1つの機能を他の人と比べて結果に影響を与えるを参照してください.1 import shap
2 explainer = shap.LinearExplainer(reg_log, X_train)
3 shap_values = explainer.shap_values(X_test)
4
5 shap.summary_plot(shap_values, X, plot_type='bar')
この棒グラフから、「クリックされた」列が他の列より予測に不均衡により影響を及ぼすのを見ることができます!「クリック」と「開かれた」との関係についての直観は、この洞察を裏付ける.あなたは“リンク”をクリックしたり、メール内のテキストを強調する前に最初にメールを開く必要がありますので、これは間違いなくデータ漏れの場合です.
幸いにも、我々のために、データ漏出を扱う最も難しい部分は識別ステップです.解決策は簡単です-私たちはリークカラムを削除!
まず、カラム名が必要です.
1 # print column names
2 list(df.columns.values)
我々が漏れた「クリック」コラムを特定したあと、我々はそうすることができますremove the columns パンダの使用したがって、Pandas 'を使用して「クリック」列を削除する必要がありますdrop() :
1 df.drop(columns=['clicked'])
これで、我々はあまりにもターゲット機能と相関している“クリック”機能を削除して、“開いた.”
ノーノーコード✨🔮
あなた自身のデータ漏れを識別することができますが、私たちのローコードAIツール、メイジ、それは本当に簡単になります.
私たちのレビューでは、トップ機能ページでは、我々は結果に各機能の影響の組み込みシャップ値の可視化が含まれています!これは、特定の機能が他のものと比較してかなりより多くの重さを持っているかどうかを識別することを容易にし、その特典を利用するSHAPライブラリを学習の手間を省く.
ご存知のように、モデルをトレーニングした後、私たちは、「クリック」機能が結果に96 %の影響を及ぼすのを見ます.
新しいモデルのバージョンを作成した後、私たちも指摘し、データ漏れを修正する方法を提案し、どのように!
データ漏洩問題を解決した後、左のモデル(データ漏れがない)と右側のモデル(データ漏れがある)との間の最上位の特徴を比較することができます.
私たちが訓練した最初のモデルと比較して、新しいバージョンの精度と他の性能測定基準は、私たちのより低い実行モデル(バージョン4)は実際には、実際の生活の中で、それは将来からの機能を使用していないので、実際に使用可能です!
最後に、あなたがトレーニングの前にリークの列を識別したい場合は、単にデータの準備プロセス中に黄色の“表示洞察”ボタンを選択し、それは我々の自動データ分析機能にあなたをもたらすでしょう.
それはあなたのデータセットに持っている列を識別するのに役立つことができますし、すべての予測の前に発生するようにリストを確認することができます.
次は何🪄 ✨
データ漏えいを理解することによってモデルを改良することは、ちょうど始まりです.我々は、2009年に機械学習のチュートリアルのシリーズを作成しましたMage Academy . より初心者フレンドリーイントロにこれのような高度なトピックから、AIの専門家になることはかつてないほど容易になりました.一度ダイビングに自信を持っていると予測を開始すると、することができますbuild your first model .
Reference
この問題について(モデルの改善), 我々は、より多くの情報をここで見つけました https://dev.to/mage_ai/model-improvement-data-leakage-591eテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol