質問
機器を管理するシステムがあります。これらの機器が故障している場合、それらは整備されます。私のデータセットが次のように見えると想像してください:
ID
Type
# of times serviced
例データ:
|ID| Type | #serviced |
|1 | iphone | 1 |
|2 | iphone | 0 |
|3 | android | 1 |
|4 | android | 0 |
|5 | blackberry | 0 |
私がやりたいのは、「修理されていないすべての機器、どの機器が整備される可能性が高いか」を予測したいということです。 (つまり)「危険にさらされている」機器を識別します。
問題は、私のトレーニングデータが#Serviced> 0になることです。#サービス= 0は凍結されず、トレーニングに含める有効な候補者のようには見えません。 (つまり)それが失敗すると、それは修理されます。したがって、カウントは上がります。
これは監督されたまたは監視されていない問題ですか? (私がサービスを提供していないラベルを整えたので、監督されています。監視されていません。サービスを受けていないので、リスクのある機器を識別してサービスを受けていないため、監視したいからです)
トレーニングにどのようなデータを含めるべきですか?
ノート:
例は明らかに簡素化されています。実際には、機器を説明する機能が増えています。
解決
電話がサバイバルモデルを作成するためにサービスを提供したときにデータを含める必要があります。これらのモデルは、治療効果だけでなく、信頼性エンジニアリングと治療効果で一般的に使用されています。信頼性エンジニアリングの場合、データをワイブル分布に適合させることが非常に一般的です。航空機のメーカーでさえ、3〜5つのデータポイントで校正した後、このモデルは信頼できると考えています。 Rパッケージ「FlexSurv」パッケージを強くお勧めします。
人口の一部の電話は、サービスを受けることなく観察期間を離れるため、典型的な線形またはロジスティック回帰を使用することはできません。サバイバルモデルでは、この種の欠落情報を可能にします(これは検閲と呼ばれます)。
通常、次のデータがあります
|ID| Type | serviced | # months_since_purchase
|1 | iphone | 1 | 12
|2 | iphone | 0 | 15
|3 | android | 1 | 2
|4 | android | 0 | 10
|5 | blackberry | 0 | 5.5
そのデータを使用すると、Rで次のモデルを作成できます
require(survival)
model <- survfit(Surv(months_since_purchase, serviced) ~ strata(Type) +
cluster(ID), data = phone_repairs)
survfit.formula
Surv(months_since_purchase, serviced) ~ strata(Type) + cluster(ID)
それを示します months_since_purchase
観察が行われた時間です、 serviced
電話が修理された場合は1です。そうでない場合は、 strata(Type)
電話ごとに異なるサバイバルモデルを作成することを確認します。cluster(ID)
同じIDに関連するイベントがクラスターと見なされることを確認します。
このモデルを次のような共同モデルで拡張できます JM
.
他のヒント
これは監視された学習問題です。 Type
予測因子です。 #serviced
分類器はターゲット変数です。モデルは、すでに持っているサンプルセットでトレーニングされています。最良の推測では、どのモデルも実質的な予測能力を持たないことです。 Type
十分ではありません。
モデルにもっと要因(予測因子)を含めてみてください。お気に入り years_being_in_usage
, equipment_model
, have_been_in_service_before
等々。あなたが得るほど、より良いモデルをトレーニングできます。