IntegratedML 演练
InterSystems IRIS IntegratedML功能用于使用AutoML技术获得机器学习的预测结果和概率。AutoML是一种机器学习技术,用于选择更好的机器学习算法/模型基于已有数据(用于训练AutoML模型的数据)来预测状态、数字和结果。你不需要一个数据科学家,因为AutoML会测试最常见的机器学习算法,并根据分析的数据特征选择更好的算法给你。在这篇文章中可以看到更多管乐IntegratedML的信息。
InterSystems IRIS有一个内置的AutoML引擎,但也允许你使用H2O和DataRobot。在这篇文章中,我将向你展示使用InterSystems AutoML引擎的每个步骤。
第1步 - 下载样例应用程序做练习
1. 转到 https://openexchange.intersystems.com/package/Health-Dataset
2. Clone/git 将 Repo拉到任何本地目录中
$ git clone https://github.com/yurimarx/automl-heart.git
3. 在同一个目录中打开一个Docker终端并运行
$ docker-compose build
4. 运行IRIS容器
$ docker-compose up -d
第2步--了解业务场景和可用数据
业务场景是利用过去的数据预测心脏疾病,数据如下:
SELECT age, bp, chestPainType, cholesterol, ekgResults, exerciseAngina, fbsOver120, heartDisease, maxHr, numberOfVesselsFluro, sex, slopeOfSt, stDepression, thallium FROM dc_data_health.HeartDisease
心脏病表(heartDisease)的数据字典来源(https://data.world/informatics-edu/heart-disease-prediction/workspace/data-dictionary):
Column name | Type | Description |
age | Integer | In years |
sex | Integer | (1 = male; 0 = female) |
chestPainType | Integer | Value 1: typical angina -- Value 2: atypical angina -- Value 3: non-anginal pain -- Value 4: asymptomatic |
bp | Integer | Resting blood pressure (in mm Hg on admission to the hospital) |
cholesterol | Integer | Serum cholestoral in mg/dl |
fbsOver120 | Integer | (fasting blood sugar > 120 mg/dl) (1 = true; 0 = false) |
ekgResults | Integer | Resting electrocardiographic results -- Value 0: normal -- Value 1: having ST-T wave abnormality (T wave inversions and/or ST elevation or depression of > 0.05 mV) -- Value 2: showing probable or definite left ventricular hypertrophy |
maxHr | Integer | Maximum heart rate achieved |
exerciseAngina | Integer | Exercise induced angina (1 = yes; 0 = no) |
stDepression | Double | ST depression induced by exercise relative to rest |
slopeOfSt | Integer | The slope of the peak exercise ST segment -- Value 1: upsloping -- Value 2: flat -- Value 3: downsloping |
numberOfVesselsFluro | Integer | Number of major vessels (0-3) colored by flourosopy |
thallium | Integer | 3 = normal; 6 = fixed defect; 7 = reversable defect |
heartDisease | String |
Value 0: < 50% diameter narrowing -- Value 1: > 50% diameter narrowing
|
心脏病(heartDisease)是我们需要预测的属性
第3步--准备好训练数据
HeartDisease表有270行。我们将得到250行来训练我们的预测模型。为了做到这一点,我们需要创建VIEW ,通过 管理门户>系统资源管理器>SQL。
CREATE VIEW automl.HeartDiseaseTrainData AS SELECT * FROM dc_data_health.HeartDisease WHERE ID < 251
第4步 - 准备验证数据
我们将得到20行来验证预测的结果。 为了做到这一点,我们需要创建VIEW ,通过 管理门户>系统资源管理器>SQL。
CREATE VIEW automl.HeartDiseaseTestData AS SELECT * FROM dc_data_health.HeartDisease WHERE ID > 250
第5步--创建AutoML模型来预测心脏疾病
IntegratedML允许创建一个AutoML模型来做预测和概率(详见https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...)。要做到这一点,需要创建以下模型,通过 管理门户>系统资源管理器>SQL。
CREATE MODEL HeartDiseaseModel PREDICTING (heartDisease) FROM automl.HeartDiseaseTrainData
这个模型将从automl.HeartDiseaseTrainData view中获得训练数据(学习)。
第6步 - 执行训练
执行训练,了做到这一点,执行下面训练SQL语句,通过 管理门户>系统资源管理器>SQL。
TRAIN MODEL HeartDiseaseModel
第7步 - 验证训练后的模型
为了验证训练结果,在 管理门户>系统资源管理器>SQL 中执行以下SQL指令。
VALIDATE MODEL HeartDiseaseModel FROM automl.HeartDiseaseTestData
使用automl.HeartDiseaseTestData view 中的测试数据验证了HeartDiseaseModel。
第8步 - 获取验证指标
为了查看验证过程中的验证指标,在 管理门户>系统资源管理器>SQL 中执行以下SQL 指令。
SELECT * FROM INFORMATION_SCHEMA_ML_VALIDATION_METRICS
要了解返回的结果,请见 https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML_VALIDATEMODEL.
InterSystems IRIS 文件从验证结果中详细说明了以下内容。:
验证指标,可以在INFORMATION_SCHEMA_ML_VALIDATION_METRICS表中查看
对于回归模型,以下指标会被保存:
- 方差
- R-squared
- 平均平方误差
- 均方根误差
对于分类模型,以下指标会被保存:
- Precision — 这是用真阳性数除以预测阳性数(真阳性与假阳性之和)计算出来的。
- Recall — 这是用真阳性数除以实际阳性数(真阳性与假阴性之和)来计算的。
- F-Measure — 这是由以下表达式计算的:F = 2 * (精度*召回率) / (精度+召回率)
- Accuracy — 这是用真阳性和真阴性的数量除以整个测试集的总行数(真阳性、假阳性、真阴性和假阴性之和)来计算的。
第9步 - 使用你的新AutoML模型执行预测 - 最后一步!
为了查看验证过程中的验证指标,在 管理门户>系统资源管理器>SQL 中执行以下SQL指令。
SELECT *, PREDICT(HeartDiseaseModel ) AS heartDiseasePrediction FROM automl.HeartDiseaseTestData
比较列 heartDisease(真实值)和 heartDiseasePrediction(预测值)。