statepipyの日記

興味のある分野(統計、疫学、機械学習、品質管理、手料理)と、PCスキルの維持を目的に書き続けます!

予測精度の改善(特に、特徴量の選択について)

予測精度の改善するには、大きく分けて以下の3つが知られている。
(1)データ量を増やす
(2)アルゴリズムのチューニング
(3)特徴量の増減

(3)には、以下のような方法がある。
    ①フィルター法:相関係数等によって、関連のある変数を投入する。
    ②ラッパー法(前進法・後退法)
      前進法:変数を1つづ投入して予測の精度を評価
      後退法:全ての変数を入れた状態から1づつ削除し、評価。
      統計の回帰分析で行われる変数増加法、変数減少法に似ている。
    ③組込み法:モデルを用いる方法。
          決定木やランダムフォレスト等が良く知られている。

回帰分析

# 必須インポート
import numpy as np
# MSEを求めるために必要(MMSEは直接計算できない)
from sklearn.metrics import mean_squared_error as MSE

# 説明変数を指定
select_columns = ["変数A","変数B","変数C","変数D","変数E"]

# ダミー変数化(k個のカテゴリーをダミー化する場合、k-1個のダミー変数があればよいが、get_dummies()関数ではデフォルトでk個のダミー変数に変換される。 引数drop_first=Trueとするとすれば、最初のカテゴリーが除外されk-1個のダミー変数に変換される。)
dummy_data = pd.get_dummies(data[select_columns],drop_first=True)

# データを、学習用データと評価用データに分割
X_train,X_test,y_train,y_test = train_test_split(dummy_data, data["y"], random_state = 123)

# 回帰分析の実施
lr = LinearRegression()
lr.fit(X_train, y_train)


# 学習用データから y の予測値を算出
y_pred_train = lr.predict(X_train)
# 評価用データから y の予測値を算出
y_pred_test = lr.predict(X_test)


# 学習用データのRMSEを求める
rmse_train = np.sqrt(MSE(y_train, y_pred_train))
# 評価用データのRMSEを求める
rmse_test = np.sqrt(MSE(y_test, y_pred_test))

  ## MMSEは直接求めることができないため、MSEを算出し、その平方根をとることでを算出。


# 学習用データ及び評価データのRMSEを表示
print(rmse_train)
print(rmse_test)

業務量調査の方法

現場の業務量調査は、業務量の把握や改善、適正人員配置等で行われますが、容易なことではありません。少し調べてみましたので、まとめてみました。
実際の業務量の測定には、以下ような手法があります。

www.bpm-portal.jp
www.newspt.co.jp

 ① 稼働分析法
   ・連続観察法 (調査員による観察)
   ・連続観察法 (カメラ等による録画)
   ・ワークサンプリング法(稼働分析法)
 ② 実績記入法
③ 推定時間記入法(推定比率法)
 ④ 合成法(既定時間標準法)

 <ワークサンプリング法>
   * https://monoist.atmarkit.co.jp/mn/articles/1903/11/news011.html
   * https://mitsu-ri.net/articles/operation-analysis
   * https://leo-taiyou.com/2020/09/13/ws/