導入
相互作用項は、従属変数内の2つ以上の独立変数の効果をキャプチャするために、回帰モデリングに組み込まれています。時には、調査中の制御変数とターゲット変数の間の単純な関係だけでなく、これらの瞬間に相互作用の用語が非常に役立つ場合があります。これらは、1つの独立変数と従属変数との関係が別の独立変数のレベルを条件とする場合にも役立ちます。
これは、もちろん、応答変数に対する1つの予測因子の効果が別の予測子のレベルに依存することを意味します。このブログでは、シミュレートされたシナリオを使用して相互作用用語のアイデアを調べます。これは、ユーザーが過去の動作を使用してeコマースチャネルに費やす時間を何度も予測することです。
学習目標
- 相互作用用語が回帰モデルの予測力をどのように強化するかを理解します。
- 回帰分析に相互作用用語を作成および組み込むことを学びます。
- 実用的な例を介して、モデルの精度に対する相互作用用語の影響を分析します。
- 予測される結果に対する相互作用用語の影響を視覚化および解釈します。
- 実際のシナリオに相互作用用語を適用する時期と理由に関する洞察を得る。
この記事は、データサイエンスブログソンの一部として公開されました。
目次
- 導入
- 相互作用用語の基本を理解する
- 相互作用用語は回帰係数にどのように影響しますか?
- シミュレートされたシナリオ:eコマースプラットフォームでのユーザー動作
- 相互作用用語のないモデル
- 相互作用用語のモデル
- モデルのパフォーマンスの比較
- 結論
- よくある質問
相互作用用語の基本を理解する
実生活では、変数が他の人を単独で単独で動作させることはわからないため、実際のモデルはクラスで勉強したモデルよりもはるかに複雑です。たとえば、eコマースプラットフォームに費やされた時間にカートにアイテムを追加するなどのエンドユーザーナビゲーションアクションの効果は、ユーザーがアイテムをカートに追加して購入すると異なります。したがって、回帰モデルに変数として相互作用項を追加すると、これらの交差点を認めることができ、したがって、観測されたデータの根底にあるパターンの説明および/または従属変数の将来の値を予測するという点で、目的に対するモデルの適合性を高めます。
数学的表現
2つの独立変数、x1とx2を備えた線形回帰モデルを考えてみましょう。
y =β0β1x1β2x2ϵ、
ここで、yは従属変数、β0はインターセプト、β1とβ2はそれぞれ独立変数x1およびx2の係数であり、誤差項です。
相互作用用語を追加します
x1とx2の間の相互作用用語を含めるために、新しい変数x1⋅x2を紹介します。
y =β0β1x1β2x2β3(x1⋅x2)ϵ、
ここで、β3はx1とx2の間の相互作用効果を表します。 x1⋅x2は、2つの独立変数の積です。
相互作用用語は回帰係数にどのように影響しますか?
- β0:すべての独立変数がゼロの場合のYの期待値を表すインターセプト。
- β1:x2がゼロの場合のyに対するx1の影響。
- β2:x1がゼロの場合のyに対するx2の影響。
- β3:x2の1ユニット変化に対するyに対するx1の影響の変化、または同等に、x1の1ユニット変化に対するyに対するx2の影響の変化。
例:ユーザーのアクティビティと費やした時間
まず、オンラインストアでユーザーの動作を表すようにシミュレートされたデータセットを作成しましょう。データは次のとおりです。
- addif_in_cart:ユーザーがカートに製品を追加したかどうかを示します(追加用に1、追加しない場合は0)。
- 購入:ユーザーが購入を完了したかどうか(完了に対して1または非完了の場合は0)。
- Time_Spent:ユーザーが電子商取引プラットフォームで費やした時間。私たちの目標は、ユーザーがカートに製品を追加してトランザクションを完了するかどうかを分析することにより、オンラインストアでのユーザーの訪問期間を予測することです。
#ライブラリをインポートします PDとしてパンダをインポートします npとしてnumpyをインポートします #合成データを生成します def generate_synthetic_data(n_samples = 2000): np.random.seed(42) addif_in_cart = np.random.randint(0、2、n_samples) 購入= np.random.randint(0、2、n_samples) time_spent = 3 2*購入2.5*addid_in_cart 4*購入*addid_in_cart np.random.normal(0、1、n_samples) return pd.dataframe({'購入':購入、 'addid_in_cart':addid_in_cart、 'time_spent':time_spent})) df = generate_synthetic_data() df.head()
出力:
シミュレートされたシナリオ:eコマースプラットフォームでのユーザー動作
次のステップとして、最初に市場のこれらの行動を考慮して、通常の最小二乗回帰モデルを構築しますが、それらの相互作用効果は報道されません。私たちの仮説は次のとおりです。(仮説1)各アクションが個別に行われるウェブサイトで費やされた時間の影響があります。次に、製品をカートに追加して購入することと購入することとの間に存在する相互作用用語を含む2番目のモデルを構築します。
これは、ウェブサイトで費やした時間に個別にまたは組み合わされて、これらのアクションの影響をカウンターするのに役立ちます。これは、各動作が個別に考慮されているときに費やされる時間よりも、カートに製品を追加し、購入をサイトでより多くの時間を費やすかどうかを確認したいことを示唆しています。
相互作用用語のないモデル
モデルの構造に続いて、次の結果に注目されました。
- 平均四角誤差(MSE)が2.11であるため、相互作用項のないモデルは、Time_Spentの分散の約80%(テストRスクエア)と82%(列車Rスクエア)を占めています。これは、Time_Spentの予測が、実際のTime_Spentから平均2.11四角ユニットがオフであることを示しています。このモデルは改善できますが、合理的に正確です。
- さらに、以下のプロットは、モデルがかなりうまく機能しますが、グラフィカルに示しています。特にTime_Spentのより高い値をキャプチャするという点で、改善の余地はまだたくさんあります。
#ライブラリをインポートします sklearn.model_selectionからimport train_test_splitから sklearn.linear_modelからリニアレレッションをインポートします sklearn.metrics Import Mean_Squared_Error、R2_Scoreから statsmodels.apiをsm sklearn.model_selectionからimport train_test_splitから pltとしてmatplotlib.pyplotをインポートします #インタラクション用語のないモデル x = df [['購入'、 'addid_in_cart']]] y = df ['time_spent'] x_train、x_test、y_train、y_test = train_test_split(x、y、test_size = 0.3、random_state = 42) #インターセプトに定数を追加します x_train_const = sm.add_constant(x_train) x_test_const = sm.add_constant(x_test) Model = sm.ols(y_train、x_train_const).fit() y_pred = model.predict(x_test_const) #インタラクション用語なしのモデルのメトリックを計算します train_r2 = model.rsquared test_r2 = r2_score(y_test、y_pred) mse = mean_squared_error(y_test、y_pred) print( "相互作用用語のないモデル:") print( 'トレーニングr二乗スコア(%):'、ラウンド(train_r2 * 100、4)) print( 'r-squaredスコア(%):'、round(test_r2 * 100、4)) print( "mse:"、round(mse、4)) print(model.summary()) #実際の予測とプロットする関数予測 def plot_actual_vs_predicted(y_test、y_pred、title): plt.figure(figsize =(8、4)) plt.scatter(y_test、y_pred、edgecolors =(0、0、0)) plt.plot([y_test.min()、y_test.max()]、[y_test.min()、y_test.max()]、 'k--'、lw = 2) plt.xlabel( '実際の') plt.ylabel( '予測') plt.title(タイトル) plt.show() #相互作用用語なしでプロットします plot_actual_vs_predicted(y_test、y_pred、 '実際のvs予測時間が費やされた(相互作用用語なし)')
出力:
相互作用用語のモデル
- 相互作用項を使用したモデルに適しているのは、相互作用項を使用した散布図で示されます。この散布図は、実際の値に実質的に近い予測値を表示します。
- このモデルは、より高いテストR二乗値(80.36%から90.46%)で示されるように、相互作用項を使用したTime_Spentの分散の多くを説明しています。
- 相互作用項を使用したモデルの予測は、より低いMSE(2.11から1.02)によって証明されるように、より正確です。
- 特にtime_spentの値が高い場合、ポイントが対角線に密接に合流することは、適合度が改善されていることを示します。相互作用用語は、ユーザーアクションが費やした時間にどのように影響するかを表現するのに役立ちます。
#インタラクション用語を追加します df ['purchased_added_in_cart'] = df ['purchased'] * df ['addid_in_cart'] x = df [['購入'、 'addit_in_cart'、 'purchased_added_in_cart']]] y = df ['time_spent'] x_train、x_test、y_train、y_test = train_test_split(x、y、test_size = 0.3、random_state = 42) #インターセプトに定数を追加します x_train_const = sm.add_constant(x_train) x_test_const = sm.add_constant(x_test) model_with_interaction = sm.ols(y_train、x_train_const).fit() y_pred_with_interaction = model_with_interaction.predict(x_test_const) #相互作用項を使用してモデルのメトリックを計算します train_r2_with_interaction = model_with_interaction.rsquared test_r2_with_interaction = r2_score(y_test、y_pred_with_interaction) mse_with_interaction = mean_squared_error(y_test、y_pred_with_interaction) print( "\ nmodel with interaction term:") print( 'トレーニングr二乗スコア(%):'、round(train_r2_with_interaction * 100、4))) print( 'test r-squaredスコア(%):'、round(test_r2_with_interaction * 100、4))) print( "mse:"、round(mse_with_interaction、4)) print(model_with_interaction.summary()) #インタラクション用語でプロットします plot_actual_vs_predicted(y_test、y_pred_with_interaction、 '実際のvs予測時間(相互作用用語付き)') #印刷比較 print( "\ ncomparison of Models:") print( "相互作用のないr二乗:"、round(r2_score(y_test、y_pred)*100,4))) print( "相互作用項を備えたr二乗:"、round(r2_score(y_test、y_pred_with_interaction)*100,4)) print( "相互作用用語なし:"、round(mean_squared_error(y_test、y_pred)、4)) print( "相互作用項を備えたmse:"、round(mean_squared_error(y_test、y_pred_with_interaction)、4))
出力:
モデルのパフォーマンスの比較
- 相互作用用語のないモデル予測は、青い点で表されます。実際の時間の使用値が高い場合、これらのポイントは対角線からより分散されます。
- 相互作用項を使用したモデル予測は、赤い点で表されます。相互作用用語を備えたモデルは、より正確な予測を生成します。特に、実際の時間の使用値が高い場合、これらのポイントは対角線に近いためです。
#相互作用用語の有無にかかわらずモデルを比較します def plot_actual_vs_predicted_combined(y_test、y_pred1、y_pred2、title1、title2): plt.figure(figsize =(10、6)) plt.scatter(y_test、y_pred1、edgecolors = 'blue'、label = title1、alpha = 0.6) plt.scatter(y_test、y_pred2、edgecolors = 'red'、label = title2、alpha = 0.6) plt.plot([y_test.min()、y_test.max()]、[y_test.min()、y_test.max()]、 'k--'、lw = 2) plt.xlabel( '実際の') plt.ylabel( '予測') plt.title( '実際のvs予測ユーザー時間を費やした') plt.legend() plt.show() plot_actual_vs_predicted_combined(y_test、y_pred、y_pred_with_interaction、 '相互作用用語なし'、 '相互作用用語を備えたモデル'))
出力:
結論
相互作用用語でのモデルのパフォーマンスの改善は、モデルに相互作用用語を追加することがその重要性を高めることがあることを示しています。この例は、相互作用用語が主効果だけでは明らかではない追加情報をどのようにキャプチャできるかを強調しています。実際には、回帰モデルの相互作用用語を考慮すると、より正確で洞察に満ちた予測につながる可能性があります。
このブログでは、最初にeコマースプラットフォームでユーザーの動作をシミュレートする合成データセットを生成しました。次に、2つの回帰モデルを構築しました。1つは相互作用用語なし、もう1つはインタラクション用語を備えています。パフォーマンスを比較することにより、モデルの精度に対する相互作用用語の大きな影響を実証しました。
GitHubの完全なコードとリソースをご覧ください。
キーテイクアウト
- 相互作用用語を持つ回帰モデルは、複合効果をキャプチャすることにより、2つ以上の変数とターゲット変数の間の関係をよりよく理解するのに役立ちます。
- 相互作用用語を含めることは、このガイドでより高いR二乗値とより低いMSEによって証明されるように、モデルのパフォーマンスを大幅に改善できます。
- 相互作用用語は、理論的概念だけでなく、実際のシナリオに適用できます。
よくある質問
Q1。回帰分析の相互作用用語とは何ですか?A.これらは、2つ以上の独立変数を掛けることによって作成された変数です。これらは、従属変数に対するこれらの変数の結合効果をキャプチャするために使用されます。これにより、データの関係について、より微妙な理解を提供できます。
Q2。モデルで相互作用用語を使用するのはいつですか?A.従属変数に対する1つの独立変数の効果が別の独立変数のレベルに依存すると疑われる場合は、使用する必要があります。たとえば、eコマースプラットフォームで費やした時間にカートにアイテムを追加することの影響が、ユーザーが購入するかどうかによって異なります。これらの変数間に相互作用用語を含める必要があります。
Q3。相互作用用語の係数を解釈するにはどうすればよいですか?A.相互作用項の係数は、別の独立変数の1ユニットの変化に対する従属変数に対する1つの独立変数の効果の変化を表します。たとえば、上記の例では、購入したものとadded_in_cartの間に相互作用用語があります。係数は、購入が行われたときに変更された時間にわたってカートにアイテムを追加する効果を示しています。
この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。
以上が相互作用用語を理解するためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Microsoft PowerBIチャートでデータ視覚化の力を活用する 今日のデータ駆動型の世界では、複雑な情報を非技術的な視聴者に効果的に伝えることが重要です。 データの視覚化は、このギャップを橋渡しし、生データを変換するi

エキスパートシステム:AIの意思決定力に深く飛び込みます 医療診断から財務計画まで、あらゆることに関する専門家のアドバイスにアクセスできることを想像してください。 それが人工知能の専門家システムの力です。 これらのシステムはプロを模倣します

まず第一に、これがすぐに起こっていることは明らかです。さまざまな企業が、現在AIによって書かれているコードの割合について話しており、これらは迅速なクリップで増加しています。すでに多くの仕事の移動があります

映画業界は、デジタルマーケティングからソーシャルメディアまで、すべてのクリエイティブセクターとともに、技術的な岐路に立っています。人工知能が視覚的なストーリーテリングのあらゆる側面を再構築し始め、エンターテイメントの風景を変え始めたとき

ISROの無料AI/MLオンラインコース:地理空間技術の革新へのゲートウェイ インド宇宙研究機関(ISRO)は、インドのリモートセンシング研究所(IIRS)を通じて、学生と専門家に素晴らしい機会を提供しています。

ローカル検索アルゴリズム:包括的なガイド 大規模なイベントを計画するには、効率的なワークロード分布が必要です。 従来のアプローチが失敗すると、ローカル検索アルゴリズムは強力なソリューションを提供します。 この記事では、Hill ClimbingとSimulについて説明します

このリリースには、GPT-4.1、GPT-4.1 MINI、およびGPT-4.1 NANOの3つの異なるモデルが含まれており、大規模な言語モデルのランドスケープ内のタスク固有の最適化への動きを示しています。これらのモデルは、ようなユーザー向けインターフェイスをすぐに置き換えません

Chip Giant Nvidiaは、月曜日に、AI Supercomputersの製造を開始すると述べました。これは、大量のデータを処理して複雑なアルゴリズムを実行できるマシンを初めて初めて米国内で実行します。発表は、トランプSI大統領の後に行われます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
