1.真正重要的数据预处理
有一种趋势是假设使用奇特的算法,超高速GPU,云技术等等来发生奇迹。
无论这些工具有多优秀,您都无法使用劣质原材料获得优质产品。
我无法强调重复查看数据的价值:
开发领域知识以改进和优化您的数据集
在保留原始分布形状的同时填写缺失值
通过简单地删除缺少值的行和列,避免丢失有价值的数据
使用特征工程创建新功能
2.大数法则
分析的准确性由以下因素驱动:
质量好的数据
数据集足够大以实现统计显着性
模型训练的次数!
我将举一个简单的例子:
设想一个简单的数据集,我有一些特征,我只是试图预测观察结果是不是狗。
Logistic回归可能对分类观测做得很好。看看下面这段Python代码:
def printing_accuracy2(random_seed):
resultados=[]
orden = []
lista = []
trailing = []
for i,rand in enumerate(random_seeds):
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2,random_state=rand)
model = LogisticRegression()
model.fit(X_train, Y_train)
result = model.score(X_test, Y_test)
resultados.append(result)
orden.append(i)
lista.append(result)
promedio = np.mean(lista)
trailing.append(promedio)
plt.plot(orden,resultados)
plt.plot(orden,trailing)
plt.title(‘Model Convergence to True Average’)
plt.xlabel(‘Model fitting: # of times’)
plt.ylabel(‘Model Model Score on testing set’)
return orden, resultados, trailing
我的功能是简单地一次又一次地改变算法的随机种子,使用训练数据重新训练模型,然后将结果应用于测试集以最终在测试集上产生模型得分。我已经为你指出了相关的代码行,其余部分纯粹是循环和可视化数据。
看看输出:
数据集和模型是相同的,唯一的区别是,我打乱了我用来训练模型的数据子集。蓝色线连接每条运行的得分,而绿色线显示累计平均。
您可以看到,平均模型分数和个体模拟之间存在很大程度的差异。
结论:运行足够的模拟程序,可以使用诸如sklearn cross_validate、cross_val_score或您自己的函数等库来帮助您了解模型参数的稳定性和可靠性。
3.超参数在最终结果中起着重要作用
在更改超参数值的同时测试您的模型是完成准备生产机器学习模型的重要一步。
像sklearn GridSearchCV或RandomizedSearchCV这样的库是测试模型的超参数稳定性,一致性和敏感性的好方法。
4.挑战你的模型
反证法是一种有用的方式,以确保您的模型准备生产。
有几种可用的工具,例如:
混淆矩阵:
接受者操作特征曲线
底线:不要急于将自己的模型转化为生产模式,真正寻找所有证明模型错误的方法,如果失败......。恭喜!该模型已准备就绪。
5. 记住pipeline
在需要的时候,尽可能多地循环使用模型开发管道是很重要的。
不断完善你的模型,寻找新的角度,新的特点,以及寻找有用的可视化来挑战自我的习惯是我所知道的最好的方法。