问题一: 机器学习的基本流程( 十 )


0.2771
0.4368
1.0644
L ( 3.5 ) L(3.5) L(3.5) 最小, 取s = 3.5 s=3.5 s=3.5 为划分点.
后面同理.
(4) 生成回归树:
假设两次划分后即停止, 则最终生成的回归树为:
T = { 5.72 , x ≤ 3.5 6.75 , 3.5 < x ≤ 6.5 8.91 , x > 6.5 \{T}=\left\{\begin{array}{cc} 5.72, & x \leq 3.5 \\ 6.75, & 3.56.5 \end{array}\right. T=????5.72,6.75,8.91,?x≤3.53.56.5?
四.实现
对第三部分例子的实现及与线性回归对比.
程序源代码
# 开发者:Leo 刘# 开发环境: macOs Big Sur# 开发时间: 2021/11/23 12:48 下午# 邮箱: 517093978@qq.com# @Software: PyCharm# ----------------------------------------------------------------------------------------------------------import numpy as npimport matplotlib.pyplot as pltfrom sklearn.tree import DecisionTreeRegressorfrom sklearn import linear_model# Data setx = np.array(list(range(1, 11))).reshape(-1, 1)y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05]).ravel()# Fit regression modelmodel1 = DecisionTreeRegressor(max_depth=1)model2 = DecisionTreeRegressor(max_depth=3)model3 = linear_model.LinearRegression()model1.fit(x, y)model2.fit(x, y)model3.fit(x, y)# PredictX_test = np.arange(0.0, 10.0, 0.01)[:, np.newaxis]y_1 = model1.predict(X_test)y_2 = model2.predict(X_test)y_3 = model3.predict(X_test)# Plot the resultsplt.figure()plt.scatter(x, y, s=20, edgecolor="black",c="darkorange", label="data")plt.plot(X_test, y_1, color="cornflowerblue",label="max_depth=1", linewidth=2)plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=3", linewidth=2)plt.plot(X_test, y_3, color='red', label='liner regression', linewidth=2)plt.xlabel("data")plt.ylabel("target")plt.title("Decision Tree Regression")plt.legend()plt.show()
运行结果:
Tree
问题三: 模型评估方法
要求: 常见模型评估方法有哪些,对比说明这些方法的基本原理,并举例说明应用范畴及其特点.
没有测量,就没有科学.”这是科学家门捷列夫的名言.在计算机科学特别 是机器学习领域中,对模型的评估同样至关重要.只有选择与问题相匹配的评估方法,才能快速地发现模型选择或训练过程中出现的问题,迭代地对模型进行优化.模型评估主要分为离线评估和在线评估两个阶段.针对分类、排序、回归、 序列预测等不同类型的机器学习问题,评估指标的选择也有所不同.知道每种评 估指标的精确定义、有针对性地选择合适的评估指标、根据评估指标的反馈进行模型调整,这些都是机器学习在模型评估阶段的关键问题,也是一名合格的算法工程师应当具备的基本功.
问题1准确率的局限性.
京东的奢侈品广告主们希望把广告定向投放给奢侈品用户.京东通过第三方的数据管理平台(Data,DMP)拿到了一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型.该模型的 分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给 了非奢侈品用户,这可能是什么原因造成的?
分析与解答
在解答该问题之前,我们先回顾一下分类准确率的定义.准确率是指分类正 确的样本占总样本个数的比例,即
A c c u r a c y = nn total=\frac{n_{\text { }}}{n_{\text {total }}} =???
其中nn_{\text { }} ? 为被正确分类的样本个数,n total n_{\text {total }} ? 为总样本的个数.
准确率是分类问题中最简单也是最直观的评价指标, 但存在明显的缺陷.比如, 当负样本占99 % 99 \% 99% 时, 分类器把所有样本都预测为负样本也可以获得99 % 99 \% 99% 的准确率.所以, 当不同类别的样本比例非常不均衡时, 占比大的类别往往成为影响准确率的最主要因素.
明确了这一点, 这个问题也就迎刃而解了.显然, 奢侈品用户只占京东全体用户的一小部分, 虽然模型的整体分类准确率高, 但是不代表对奢侈品用户的分类准确率也很高.在线上投放过程中, 我们只会对模型判定的“奢侈品用户”进行投放, 因此, 对 “奢侈品用户” 判定的准确率不够高的问题就被放大了.为了解决 这个问题, 可以使用更为有效的平均准确率 (每个类别下的样本准确率的算术平 均) 作为模型评估的指标.