# 臨床資料的病症預測 目前研究的小 project 要用到,還沒有整理以及放上結果 資料的內容大概是 50 歲以上的憂鬱症患者和健康的受試者。 ## 資料前處理 ### 量表資料分類(類別變量&連續變量) #### 連續變量 - HAMD-17 分數 - Mini Suicidility: 低 (1-5)、中(6-9)、高 (>=10) - MSM Total - MMSE - DSSS - MoCA - SF12 #### 類別變量 - Apo E gene #### 不清楚 - IDAL_Q1: 值為0(完全不),1(需要人陪), 2(獨立購買日常), 3(獨立完成所有購物 - 其他 IDAL 都類似 ## Correlation 分析 - https://medium.com/@outside2SDs/an-overview-of-correlation-measures-between-categorical-and-continuous-variables-4c7f85610365 ### Continious Variable - https://medium.com/@sebastiannorena/finding-correlation-between-many-variables-multidimensional-dataset-with-python-5deb3f39ffb3 ### Catalgorical Variable - https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.pointbiserialr.html ## Standatdlization - https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler ## Machine Learning ### Cross Validation - https://scikit-learn.org/stable/modules/cross_validation.html ### Classification Models - https://medium.com/axum-labs/logistic-regression-vs-support-vector-machines-svm-c335610a3d16 #### Logistic Regression - https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression - https://scikit-learn.org/stable/auto_examples/linear_model/plot_iris_logistic.html #### SVM - https://rpubs.com/skydome20/R-Note14-SVM-SVR - https://scikit-learn.org/stable/modules/svm.html - https://scikit-learn.org/stable/modules/svm.html#svm-classification - https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC ### Regression Model #### SVR - https://www.saedsayad.com/support_vector_machine_reg.htm - https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html - https://scikit-learn.org/stable/modules/svm.html#svm-regression - https://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html - https://scikit-learn.org/0.18/auto_examples/svm/plot_svm_regression.html - https://rpubs.com/skydome20/R-Note14-SVM-SVR - https://www.saedsayad.com/support_vector_machine_reg.htm #### Regression Accuracy 大部分用 R^2^ 或 RMSE,但好像 RMSE 有假設結果分佈是常態分佈 R^2^ 的解釋力似乎比較高 ##### Coefficient of determination R^2^ - https://stats.stackexchange.com/questions/142873/how-to-determine-the-accuracy-of-regression-which-measure-should-be-used - https://discuss.analyticsvidhya.com/t/which-metric-to-consider-for-regression-r2-or-rmse/75693 ## HAMD-17 憂鬱分數回歸 目標:使用量表的資料、問診資料及認知測試資料(features)預測 HAMD-17 的憂鬱分數 ### 篩選 Features 首先先對 Features 跑 Correlation,篩選出對預測 HAMD-17 分數較有用的分數。這邊取 Threshold = 0.6。 但目前做的 correlation 是:連續變量對連續變量,所以對某些變量(例如基因型)可能會有些誤差,之後會再修正。 ### 標準化 將所有 Feature 標準化。如果沒做標準化,用 SVM 回歸時會遇見沒辦法收斂的情形 ### 準備資料與模型 將資料分成 training set 和 Validation set,比例為 7:3。 只有 Training set 會被用來訓練,訓練完畢後使用 Validation set來測試訓練好的模型。 模型部分使用 SVM 的 regression: SVR 來對分數進行回歸。 至於 Validation 則使用 Cross validation 來反覆測試,並將得到的結果平均。 ### 結果 - R^2^ =0.8 這代表模型看到新資料時,可以描述(fit) 80% 的資料 實際觀察起來,確實大部分的數值都和 Ground Truth 相差不遠,甚至一樣。 - RMSE = 2~4 這代表預測出的分數和時機分數的相差距離,2~4算是有點大。 實際把結果開出來看,發現大部分的預測值都很準確符合 Ground Truth。不過會有少部分的值會和標準答案相差很遠(有些甚至相差 10 分以上),這造成了少部分的 outlier 帶來非常不好的結果。 #### 目前想到的解決辦法 1. 更改模型:換一個 outlier 比較不影響的模型去做預測。 2. 更改 Feature:可能是某些 outlier feature 讓模型做出錯誤的判斷,所以更改使用的 feature 來解決看看 #### 預期結果 1. 希望能在 R^2^不降低的情形減少 RMSE 到 1 附近 2. 用較低的 R^2^ 換取每一個預測的值都在可接受誤差範圍內 ## HC, TRD, non-TRD 預測分類 處理方法和回歸問題類似,不同處在於 Target 換成了病人的分組。 將使用包含 HAMD-17 在內的 Features 對資料進行分類。 ### 篩選 Features 首先先對 Features 跑 Correlation,篩選出對預測組別分累較有用的分數。這邊取 Threshold = 0.6。 但目前做的 correlation 是:類別變量 vs 連續變量,所以對某些變量(例如基因型)可能會有些誤差,之後會再修正。 ### 標準化 一樣對資料進行標準化。雖然在這個問題上,沒有標準化對結果感覺影響不大,但有可能只是手上這筆資料剛好而已,所以也做了標準化。 ### 準備資料與模型 將資料分成 training set 和 Validation set,比例為 7:3。 只有 Training set 會被用來訓練,訓練完畢後使用 Validation set來測試訓練好的模型。 模型部分使用 SVM 的 Classifier: SVC 來進行分類。 另外也使用 Logistic Regression 來進行分類比較 至於 Validation 則使用 Cross validation 來反覆測試,並將得到的結果平均。 ### 結果 - 平均的準確度 Accuracy :0.8~0.9 做完 Cross validation 後的結果也不錯,猜測是因為選到了真的很有關係的 Features 來進行預測。 如果沒有發現其他問題,基本上這個不會再更動 ## Future Works - [ ] 將資料詳細地分成:連續變量、類別變量,並且分別跑相關性檢定,看看結果有沒有不同 - [ ] 處理 Regression 的誤差過大問題 - [ ] 分類問題補上 Confussion matrix 以及 ROC curve。 ### 更改 Feature的部分 現在比較強大的 feature 幾乎都是 MSM score(用於評斷治療結果,評斷 TRD),以及 HAMD-17分數本身(用於分類 TRD, non-TRD, HCs)。 目前的疑問是: 1. 為什麼要對量表做回歸,量表取得的難度是高的嗎? 2. 在做回歸以及預測時,使用 MSM 分數是不是對診斷有好處的?(如果 MSM 的量表取得困難,可能就是沒有好處) 所以我可能會更改目前使用的 Features,用其他的測驗或是量表內容去預測和分類,觀察結果如何。 ### 關於高 R^2^ 與 高 RMSE 目前回歸 HAMD-17 分起數的結果就是有 hight R2 score with high RMSE。 檢查回歸分數結果發現是大部分的分數都可以在 +- 1 的誤差內,但是部分資料會有 5~10 分的差距。 - https://www.researchgate.net/post/Is-it-possible-to-get-a-high-R-value-with-high-RMSE-and-also-a-low-R-with-low-RMSE 在這個論壇也剛好有人討論過這個問題,其中有一位提出了: `A=average (R+RMSE)` 當作一個衡量的指標 Reference : Garcia et al. (2018) ### 更新 類別 vs 連續變量 如果有三個以上類別就不能用 bi,要改用 eta correlation - https://towardsdatascience.com/the-search-for-categorical-correlation-a1cf7f1888c9 - https://methods.sagepub.com/base/download/DatasetStudentGuide/eta-coefficient-niosh-qwl-2014-r