A. 对大数据集有较高的效率并且具有可伸缩性
B. 是一种无监督学习方法
C. K值无法自动获取,初始聚类中心随机选择
D. 初始聚类中心的选择对聚类结果影响不大
A. 使最终类别分布比较合理
B. 快速聚类
C. 准确度高
D. 能自动识别聚类中心的个数
① 随机初始化K个中心点;
② 计算未知样本点分别到这K个中心点的距离D;
③ 将该未知样本点归类为与D值最小时的中心点相同的类别;
④ 计算这K个分类簇的均值分别做为这K个簇的新的中心点;
⑤ 重复第①-④步,直至新的中心点与旧的中心点一致,则迭代停止,将最后这次的聚类作为最优聚类结果。
答:
优点:
① 原理比较简单,实现也是很容易,收敛速度快;
② 聚类效果较优;
③ 算法的可解释度比较强;
④ 主要需要调节的参数仅仅是聚类中心数k。
缺点:
① K值的选取不好把握;
② 对于不是凸的数据集比较难收敛;
③ 如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳;
④ 采用迭代方法,得到的结果可能是局部最优;
⑤ 对噪音和异常点比较敏感。
5、请简述有哪些评估指标和方法可用于评估聚类算法。**
① SSE:误差的平方和,计算每次聚类之后类内样本点与该聚类中心点距离的平方和,
值越小代表聚类效果越好。此法简单粗暴,初始中心点选取不当会陷入局部最优解。
② 肘部法:通过绘制类内样本点到中心点距离的平方和与K值的折线图来确定最佳的K值,
最终确定当前样本集被分为K个聚类中心是最佳的聚类效果。
6.在K-means算法中,以下哪项可用于获得全局最优解:(D)
① 尝试为不同的质心(centroid)运行初始化算法
② 调整迭代的次数
③ 找到集群的最佳数量
A. ②和③
B. ①和③
C. ①和②
D. 以上所有
答案解析:
传统的K-means算法随机选取初始聚类中心,往往会造成聚类结果陷入局部最优解,
改进初始类中心的选取方法可以提升K-means算法的聚类效果,获得全局最优解。
所以尝试为不同的质心初始化实际上就是在寻找最佳的初始类中心以便达到全局最优;
而迭代的次数太少有可能无法获得全局最优解,所以需要通过调整迭代次数来获得全局最优解;
最后,集群的最佳数量也就是K值是人为定义的,我们事先不知道多大的K值能够得到全局最优,
所以需要调试K值,以达到全局最优。
综上所述,D选项为正确答案。
7.下列关于SVM的应用场景说法正确的是(多选):(ABC)
A. SVM在二分类问题上表现突出
B. SVM能够解决多分类问题
C. SVM能够解决回归问题
8.下列关于SVM的硬间隔和软间隔说法错误的是:(B)
A. 硬间隔在线性可分的样本中表现才会好
B. 硬间隔对异常值不是很敏感
C. 软间隔在线性不可分样本中的表现更好
D. 软间隔需要在限制间隔违例和模型复杂度之间进行权衡
答:
① 我们遇到线性不可分的样例时,常用做法是把样本特征映射到高维空间中去。
但是遇到线性不可分的样本,一律映射到高维空间,那么这个维度大小是会高到令人恐怖的。
此时,核函数就体现出它的价值了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换,
但核函数好在它在低维上进行计算,而将实质上的分类效果(利用了内积)表现在了高维上,
这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。
1.下列选项中,关于KNN算法说法不正确是:(D)
A. 能找出与待测样本相近的K个样本
B. sklearn中的KNeighborsClassifier默认使用欧氏距离度量
C. 实现过程相对简单,但是可解释性不强
D. 效率很高
2.下列选项中,描述不正确的是。(B )
A. 获取到的sklearn中内置的数据集一般都是字典格式
B. 可以通过类似于sklearn.datasets.fetch_*的方式获取对应的小规模数据集
C. 可以通过获取到的数据集的data和target属性获取对应的特征值和目标值
D. 可以通过获取到的数据集的feature_names和target_names属性获取对应的特征名字和目标名字
3.关于train_test_split(data)分割后的数据,接收方式正确的是(B )
A. x_train, y_train, x_test, y_test
B. x_train, x_test, y_train, y_test
C. x_test, y_test, x_train, y_train
D. 无所谓,随便怎么接收都行
答:
优点:
① 算法理论简单易懂,容易实现;
② 支持多分类,准确性较高;
③ 计算精度高,不受异常值的影响;
缺点:
① 计算复杂度高,运算量大;
② 对K值的取值比较敏感;
③ 预测结果的可解释性不强。
答:
常用的特征预处理方法包括归一化、标准化。
相同点:都是将要交给机器学习算法训练的数据处理成更加适合算法模型的数据,同时消除不同维度间数据量纲差异带来的影响。
不同点:实现方式不同,归一化利用了样本数据每个维度中的最大值和最小值,同时需要我们确定好数据缩放的范围大小;而标准化则是利用样本数据每个维度中的平均值和标准差来计算最终数据的缩放范围大小。
答:
① K近邻算法即可用于分类任务也可用于回归任务;
② K近邻算法适用于具有数值型特征的小中型数据规模的应用场景;
③ K近邻算法即能用于二分类场景,也能用于多分类场景。
答:交叉验证能够在训练数据比较少而且比较稀缺时,让我们能充分利用现有的数据找到可信度较高的模型,网格搜索能让我们在较短时间内找到可选超参数较多时的参数最优化结果,两者都能为我们在机器学习开发过程中提高我们的开发效率。
要求:
代码示例:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
# 1.获取鸢尾花数据
iris = load_iris()
# 2.数据集划分
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25, random_state=666)
# 3.特征预处理
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
# 4. 实例化一个估计器
estimator = KNeighborsClassifier()
# 5 交叉验证,网格搜索
param_grid = {"n_neighbors": [1, 3, 5, 7, 9], "p": [1, 2, 10, 20]}
estimator = GridSearchCV(estimator, param_grid=param_grid, cv=5)
# 6. 模型的训练及调优
estimator.fit(x_train, y_train)
# 7. 得出预测值
y_pre = estimator.predict(x_test)
print("预测值是:\n", y_pre)
# 8. 计算模型的准确率
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)
# 9. 得到交叉验证中表现最好的模型的准确率及其参数
print("在交叉验证中,得到的最好结果是:\n", estimator.best_score_)
print("在交叉验证中,得到的最好的模型是:\n", estimator.best_estimator_)
9.下列选项中,关于泛化误差的说法不正确是:(C)
A. 泛化误差指的是模型在新样本上的误差
B. 误差指的是模型的实际输出与样本的真实标签之间的差异
C. 机器学习的目的是希望得到泛化误差较大的模型
10.下列哪种方法可以用来缓解过拟合的产生:(B )
A. 增加更多的特征
B. 正则化
C. 增加模型的复杂度
D. 以上都是
11.关于正则化,下列说法中正确的是(A)
A. L1正则化得到的解更加稀疏
B. L2正则化技术又称为 Lasso Regularization
C. L2正则化得到的解更加稀疏
D. L2正则化能防止过拟合,提升模型的泛化能力,但L1正则化做不到这点
12.关于特征选择,下列对Ridge回归和Lasso回归的说法正确的是:(B)
A. Ridge回归适用于特征选择
B. Lasso回归适用于特征选择
C. 两个都适用于特征选择
D. 以上说法都不对
13.线性回归中,我们可以使用正规方程(Normal Equation)来求解系数,下列关于正规方程的说法正确的是(多选):(ABC)
A. 不需要选择学习率
B. 当特征数量很多时,运算量会增大
C. 不需要迭代训练
14.关于梯度下降法的描述,正确的是:(ABC)
A. 随机梯度下降法是每次使用一个样本的数据来迭代权重
B. 全梯度下降法的计算量随着样本数量的增加而增加
C. mini-batch梯度下降法综合了随机梯度下降法和全梯度下降法的优势
15.关于模型的保存和加载,下列说法正确的是:(B)
A. 模型的加载能够让我们将已经训练好的模型与更多的数据进行无缝衔接
B. 模型的保存可以使用sklearn中的externals.joblib.dump()方法来完成
C. 模型的加载可以使用sklearn中的externals.joblib.dump()方法来完成
答:
① 模型的选择常用留出法、交叉验证法和自助法。
② 留出法直接将数据集D划分为两个互斥的集合,分别作为训练集和验证集;交叉验证法是将数据集D划分为k个大小相似的互斥子集,每次选出其中的一个或者多个为验证集,剩下的为训练集;自助法是每次随机从D中挑选一个样本,将其拷贝放入训练集,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被选取到,这样的采样过程重复m次得到的训练集再交给模型进行训练,而没有被抽到过的样本可以被当做测试集。
③ 留出法一般适用于数据量较大的场景下,简单省时,但会牺牲掉很小部分的准确度;交叉验证法在数据量小的场景同样适用,能够让我们充分利用仅有的数据筛选出更可靠的模型。
答:
① 线性回归是利用数理统计中的回归分析,被广泛用来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
② 表现形式:只有一个自变量的情况称为简单回归(形如: y = w x + b y = w x + b y=wx+b),大于一个自变量情况的叫做多元回归(形如: y = w 1 x 1 + w 2 x 2 + ⋯ + b y = w_{1} x_{1} + w_{2} x_{2} + \cdots + b y=w1x1+w2x2+⋯+b)。
③ 这样的统计学模型是一个或多个被称为回归系数的模型参数的线性组合。这里的线性指的是自变量 x x x 和因变量 y y y 已知的情况下,求解一组回归系数 w 1 , w 2 , ⋯ , w n w_{1}, w_{2}, \cdots, w_{n} w1,w2,⋯,wn 去拟合 x x x 和 y y y 最原始的关系,使得 y y y 能够用 w 1 x 1 + w 2 x 2 + ⋯ + b w_{1} x_{1} + w_{2} x_{2} + \cdots + b w1x1+w2x2+⋯+b 的方式去近似。
④ 在机器学习中,一切需要确定定量关系的回归问题都可以使用线性回归来解决,包括但不限于房价预测、股票收益预测等场景。
答:
① 若使用 X ( x 0 , x 1 , x 2 , ⋯ . , x n ) X(x_{0}, x_{1}, x_{2},\cdots., x_{n}) X(x0,x1,x2,⋯.,xn) 表示特征值,使用 W ( w 0 , w 1 , w 2 , ⋯ . , w n ) W(w_{0}, w_{1}, w_{2},\cdots., w_{n}) W(w0,w1,w2,⋯.,wn) 表示权重系数,使用 y y y 表示模型的真实目标值,则我们可以使用最小二乘法来衡量模型的误差(损失)为:
J ( W ) = 1 2 ∑ i = 1 n ( w i x i − y ) 2 J(W) = \frac{1}{2}\sum_{i=1}^n (w_ix_i - y)^2 J(W)=21i=1∑n(wixi−y)2
② 损失函数的优化我们可以直接使用正规方程求解最优参数,也可以通过梯度下降法来进行求解。
答:
欠拟合产生的原因:
① 训练次数少;
② 模型过于简单。
解决办法:
① 增加训练次数;
② 增加模型的复杂度,如增加多项式特征;
过拟合产生的原因:
① 训练的样本特征过多;
② 模型过于复杂。
解决办法:
① 对原始数据加大数据清洗力度;
② 增加训练的样本数量,直到样本数量远大于特征数;
③ 使用正则化;
④ 对特征进行筛选,减少特征维度;
答:
① 使用Ridge岭回归,它是使用了带有L2正则化的线性回归模型,能够为模型产生平滑的权重系数,使某些特征的权重系数变小,减小部分特征对模型的影响程度。
② 使用Lasso回归,它是使用了带有L1正则化的线性回归模型,能够为模型产生稀疏的权重系数,使某些特征的权重系数直接为零,消除部分特征对模型的影响程度,实现了特征选择。
③ 使用弹性网络,它是使用了L1正则化和L2正则化的线性组合形式,继承了L1正则化和L2正则化的优势,通过调整线性组合的系数可以让我们得到不同效果的模型。
④ 使用Early Stopping,指定一个阈值,当模型在训练的过程中如果验证误差小于这个阈值,则及时停止模型继续训练。
要求:
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor, RidgeCV, Ridge
from sklearn.metrics import mean_squared_error
def linear_reg_model():
# 1.获取数据
boston = load_boston()
# 2.数据基本处理
# 2.1 分割数据
x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.25, random_state=8)
# 3.特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 机器学习-线性回归-正规方程求解
estimator1 = LinearRegression()
estimator1.fit(x_train, y_train)
print("正规方程求解出的模型偏置是:\n", estimator1.intercept_)
print("正规方程求解出的模型系数是:\n", estimator1.coef_)
# 模型评估-正规方程求解
y_pre = estimator1.predict(x_test)
ret = mean_squared_error(y_test, y_pre)
print("正规方程求解最优解模型的均方误差为:\n", ret)
# 机器学习-线性回归-随机梯度下降求解
estimator2 = SGDRegressor(max_iter=1000)
estimator2.fit(x_train, y_train)
print("随机梯度下降求解出的模型偏置是:\n", estimator2.intercept_)
print("随机梯度下降求解出的模型系数是:\n", estimator2.coef_)
# 模型评估-随机梯度下降求解
y_pre = estimator2.predict(x_test)
ret = mean_squared_error(y_test, y_pre)
print("随机梯度下降求解出的模型的均方误差:\n", ret)
# 机器学习-线性回归-岭回归
# estimator = Ridge(alpha=1.0)
estimator3 = RidgeCV(alphas=(0.001, 0.01, 0.1, 1, 10, 100))
estimator3.fit(x_train, y_train)
print("带有交叉验证的岭回归模型的偏置是:\n", estimator3.intercept_)
print("带有交叉验证的岭回归模型的系数是:\n", estimator3.coef_)
# 模型评估-岭回归
y_pre = estimator3.predict(x_test)
ret = mean_squared_error(y_test, y_pre)
print("带有交叉验证的岭回归模型的均方误差:\n", ret)
print("交叉验证中表现最好的模型的参数alpha为:\n", estimator3.alpha_)
22.假设有N个样本,一半用于训练,一半用于测试。若增大N值,则训练误差和测试误差之间的差距会如何变化?(B)
A. 增大
B. 减小
答案解析:
若增加数据,能够有效的缓解过拟合,减小训练样本误差和测试样本误差之间的差距。
23.下列选项中,关于逻辑回归的说法不正确是:(B)
A. 逻辑回归是分类算法
B. 逻辑回归利用了回归的思想
C. 逻辑回归是一个分类模型
D. 逻辑回归使用sigmoid函数作为激活函数对回归的结果做了映射
24.下列关于分类模型的评估方法描述错误的是:(B)
A. 我们往往会通过多个评估指标来综合评估分类模型
B. 准确率就是精确率
C. 精确率和召回率所参照的样本总体不一样
D. AUC只适用于评估二分类场景下的分类模型
25.下列关于样本类别不均衡场景的描述正确的是:(A)
A. 样本类别不均衡会影响分类模型的最终结果
B. 样本类别不均衡场景下我们没有较好的解决办法
C. 欠采样是复制类别数较少的样本来进行样本集的扩充
D. 过采样会造成数据集部分信息的流失
26.关于信息增益,决策树分裂节点,下列说法中正确的是(多选)(BC)
A. 纯度高的节点需要更多的信息去区分
B. 信息增益可以用“entroy(前) - entroy(后)”获得
26.我们想要在大数据集上训练决策树模型,为了使用较少的时间,可以:(C)
A. 增加树的深度
B. 增大学习率
C. 减少树的深度
D. 减少树的数量
27.假设模型训练时使用的样本类别非常不平衡,主要类别占据了训练数据的99%,现在你的模型在训练集上表现为99%的准确率,那么下面说法正确的是(多选)?(AC)
A. 准确度并不适合衡量不平衡类别问题
B. 准确率适合衡量不平衡类别问题
C. 精确度和召回率适合于衡量不平衡类别问题
D. 精确度和召回率不适合衡量不平衡类别问题
28.在以下哪种情况下,信息增益率比信息增益更可取?(A)
A. 当属性的类别数量特别多的时候
B. 当属性的类别数量特别少的时候
C. 和属性的类别数量无关
答:
① 它是分类算法;
② 它是广义的线性模型;
③ 它使用sigmoid函数去映射回归运算的结果,使最终的值落在范围[-1, 1]之中;
④ 经常被用在二分类场景中,而且效果突出。
答:
① 逻辑回归的损失函数是对数似然损失,通过提升样本所属类别对应的输出概率值,来降低损失。
② 逻辑回归的优化方法与线性回归类似,使用梯度下降法可以快速定位到最优解。
答:
① 样本类别不均衡场景下,我们使用准确率无法衡量模型的好坏,这时我们可以通过使用混淆矩阵计算精确率、召回率、R1-score等指标来综合评估模型的好坏,在二分类场景下,我们还可以绘制ROC曲线得到模型的AUC值来评估模型的好坏。
② 样本类别不均衡场景下会对分类模型的结果和评估产生较大影响,这时我们可以通过欠采样和过采样的方法来重组数据集。一般情况下我们会优先采用过采样;而欠采样因为会丢失部分数据,可能会导致模型欠拟合,所以一般很少使用。
答:
决策树通过ID3算法(信息增益)、C4.5算法(信息增益率)和CART算法(基尼指数)来计算每个特征在不同条件下的重要性程度,使用树形结构,每个节点代表某个判断条件,每个分支代表一个判断结果的输出,每个叶节点代表一种分类结果,是一颗由多个判断节点组成的树形决策逻辑。
答:
① ID3算法使用信息增益作为特征重要性程度的判断依据,信息增益越大,代表带来的信息量越大。重要性程度越大。但是在计算类别数较多的特征的信息增益时,其结果往往是不准确的。
信息增益的计算公式为:G(D, a) = H(D) - H(D|a)
② C4.5算法继承了ID3算法的优势,并且缓解了它的劣势,在衡量特征的重要性程度大小时,在原有的信息增益的基础上除以了特征的固有值(Intrisic Value),特征的固有值与特征的类别数相关,类别数越大,固有值越大,等于是在信息增益的基础上做了一个“惩罚”,让类别数过多的特征的“信息增益”不会过大而造成的结果的不准确。
信息增益率的计算公式为:Gain_ratio(D, a) = Gain(D, a) / IV(a)
其中IV(a)表示特征a的类别熵。
C4.5算法内部实现了后剪枝,这也给它带来一定的使用限制,后剪枝操作需要完全等决策数构建完成之后再去遍历每个节点,通过代价复杂度算法计算每个节点的重要性程度,再将不重要的节点删除,需要消耗大量内存。
③ CART算法使用更加简洁的计算方法基尼指数来衡量特征的重要性程度,基尼指数越小,代表信息量越大,重要性程度越高。它即可用于解决分类问题也可用于解决回归问题。在计算上没有引入对数操作,计算更加便捷。
基尼值表示的是从数据集D中随机抽取两个样本,其类别不一样的概率(样本被分错的概率),计算公式为:
G i n i ( D ) = 1 − ∑ k = 1 n p k 2 Gini(D) = 1 - \sum_{k=1}^n p_k^2 Gini(D)=1−k=1∑npk2
其中D表示数据集,n表示数据集D中样本的类别数,pk表示第k类样本占所用样本的比例。
基尼指数也被称为基尼不纯度,表示样本被选中的概率 * 样本被分错的概率,计算公式为:
G i n i i n d e x ( D , a ) = ∑ v = 1 V D v D G i n i ( D v ) Gini_index(D, a) = \sum_{v=1}^V \frac{D^v}{D} Gini(D^v) Giniindex(D,a)=v=1∑VDDvGini(Dv)
其中V表示某个特征的类别数,v表示特征中的第几类数据。
CART算法效率比较高的另外一个原因是它构建的树都是二叉树,简化了树结构。
答:
① 特征提取是为了将一些符合规律的特征数据转换成算法模型能够更加容易识别的数字类型,特别是在一些文本处理中,tfidf技术会被经常使用到。
② 常用的特征提取方法有字典特征提取和文本特征提取。字典特征提取的前提是你的特征数据都是字典的格式,否则无法转化特征;文本特征提取则需要先对文本进行分词处理,使用较为广泛的提取技术是TFIDF,通过计算词的重要性程度来表征文本特征。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gmLaANmQ-1668820611429)(H:/sias资料/3-配套资料/阶段3-人工智能机器学习/02_机器学习算法day07/02_机器学习算法day07/03-其他资料/机器学习day07习题/机器学习前8天练习有答案版/images/watermelon.jpg)]
答:
使用ID3算法:
整体熵为:
H ( "好瓜" ) = − 8 17 l o g 2 ( 8 17 ) − 9 17 l o g 2 ( 9 17 ) = 0.998 H(\text{"好瓜"}) = -\frac{8}{17}log_2(\frac{8}{17}) -\frac{9}{17}log_2(\frac{9}{17}) = 0.998 H("好瓜")=−178log2(178)−179log2(179)=0.998
如果现在已知“色泽”这一特征:
“青绿”类别占比为:6/17,“浅白”为:5/17,“乌黑”为:6/17
根据“青绿”来判断瓜的好坏的信息熵为:
H ( "青绿" ) = − 3 6 l o g 2 ( 3 6 ) − 3 6 l o g 2 ( 3 6 ) = 1 H(\text{"青绿"}) = -\frac{3}{6}log_2(\frac{3}{6}) -\frac{3}{6}log_2(\frac{3}{6}) = 1 H("青绿")=−63log2(63)−63log2(63)=1
同理,分别根据“浅白”和“乌黑”来判断瓜的好坏的信息熵为:
H ( "浅白" ) = − 1 5 l o g 2 ( 1 5 ) − 4 5 l o g 2 ( 4 5 ) = 0.722 H(\text{"浅白"}) = -\frac{1}{5}log_2(\frac{1}{5}) -\frac{4}{5}log_2(\frac{4}{5}) = 0.722 H("浅白")=−51log2(51)−54log2(54)=0.722
H ( "乌黑" ) = − 4 6 l o g 2 ( 4 6 ) − 2 6 l o g 2 ( 2 6 ) = 0.918 H(\text{"乌黑"}) = -\frac{4}{6}log_2(\frac{4}{6}) -\frac{2}{6}log_2(\frac{2}{6}) = 0.918 H("乌黑")=−64log2(64)−62log2(62)=0.918
那么“色泽”这一特征的信息增益为:
G ( "好瓜" ∣ "色泽" ) = 0.998 − 6 17 × 1 − 5 17 × 0.722 − 6 17 × 0.918 = 0.109 G(\text{"好瓜"}|\text{"色泽"}) = 0.998 - \frac{6}{17} \times 1 - \frac{5}{17} \times 0.722 - \frac{6}{17} \times 0.918 = 0.109 G("好瓜"∣"色泽")=0.998−176×1−175×0.722−176×0.918=0.109
同理,我们还可以分别求出已知其它特征时的信息增益分别为:
G ( "好瓜" ∣ "根蒂" ) = 0.143 G(\text{"好瓜"}|\text{"根蒂"}) = 0.143 G("好瓜"∣"根蒂")=0.143
G ( "好瓜" ∣ "敲声" ) = 0.141 G(\text{"好瓜"}|\text{"敲声"}) = 0.141 G("好瓜"∣"敲声")=0.141
G ( "好瓜" ∣ "纹理" ) = 0.381 G(\text{"好瓜"}|\text{"纹理"}) = 0.381 G("好瓜"∣"纹理")=0.381
G ( "好瓜" ∣ "脐部" ) = 0.289 G(\text{"好瓜"}|\text{"脐部"}) = 0.289 G("好瓜"∣"脐部")=0.289
G ( "好瓜" ∣ "触感" ) = 0.006 G(\text{"好瓜"}|\text{"触感"}) = 0.006 G("好瓜"∣"触感")=0.006
我们很容易就能得出“纹理”这一特征可被优先用来判别好瓜。
36.符号集a、b、c、d,它们相互独立,相应概率分别为1/2、1/4、1/8、1/16,其中包含信息量最小的符号是:(A)
A. a
B. b
C. c
D. d
答案解析:
概率越大,表示这件事越确定,给我们带来的信息量越少;反之,概率越小,表示这件事越不确定,给我们带来的信息量越大。
根据信息量公式:
H ( x i ) = − l o g 2 p i H(x_i) = -log_2 p_i H(xi)=−log2pi
可得:
H ( a ) = − l o g 2 ( 1 2 ) = 1 b i t H(a) = -log_2(\frac{1}{2}) = 1\ bit H(a)=−log2(21)=1 bit
H ( b ) = − l o g 2 ( 1 4 ) = 2 b i t H(b) = -log_2(\frac{1}{4}) = 2\ bit H(b)=−log2(41)=2 bit
H ( c ) = − l o g 2 ( 1 8 ) = 3 b i t H(c) = -log_2(\frac{1}{8}) = 3\ bit H(c)=−log2(81)=3 bit
H ( d ) = − l o g 2 ( 1 16 ) = 4 b i t H(d) = -log_2(\frac{1}{16}) = 4\ bit H(d)=−log2(161)=4 bit
信息量最小的符号是a。
答:
逻辑回归,从名称上看似乎和数学中的线性回归问题异派同源,但是其本质却是大相径庭。
首先,逻辑回归处理的是分类问题,而线性回归处理的是回归问题,这是两者最本质的区别。逻辑回归中,因变量取值是一个二元分布,模型学习得出的是 E [ y ∣ x ; θ ] E[y|x;\theta] E[y∣x;θ] ,即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。而线性回归中实际上求解的是 y ′ = θ T x y' = \theta^T x y′=θTx ,是对我们假设的真实关系 y = θ T x + ϵ y = \theta^T x + \epsilon y=θTx+ϵ 的一个近似,其中 ϵ \epsilon ϵ 代表误差项,我们使用这个近似项来处理回归问题。
分类和回归是如今机器学习中两个不同的任务,而属于分类算法的逻辑回归,其命名有一定的历史原因。这个方法最早由统计学家 D a v i d C o x David Cox DavidCox 在他1958年的论文《二元序列中的回归分析》(The regression analysis of binary sequences)中提出,当时人们对于回归与分类的定义与今天有一定区别,只是将“回归”这一名字沿用了。实际上,将逻辑回归的公式进行整理,我们可以得到 l o g p 1 − p = θ T x log\frac{p}{1-p} = \theta^T x log1−pp=θTx ,其中 p = P ( y = 1 ∣ x ) p = P(y=1|x) p=P(y=1∣x) ,也就是将给定输入x预测为正样本的概率。如果把一个事件的几率(odds)定义为该事件发生的概率与该事件不发生的概率的比值 p 1 − p \frac{p}{1-p} 1−pp ,那么逻辑回归可以看作是对于“ y = 1 ∣ x y=1|x y=1∣x”这一事件的对数几率的线性回归,于是“逻辑回归”这一称谓也就延续了下来。
在关于逻辑回归的讨论中,我们均认为y是因变量,而非 p 1 − p \frac{p}{1-p} 1−pp ,这便引出逻辑回归与线性回归最大的区别,即逻辑回归中的因变量是离散的,而线性回归中的因变量是连续的。并且在自变量x与超参数 θ \theta θ确定的情况下,逻辑回归可以看作广义线性模型(Generalized Linear Models)在因变量y服从二元分布时的一个特殊情况;而使用最小二乘法求解线性回归时,我们认为因变量y服从正态分布。
当然逻辑回归和线性回归也不乏相同之处,首先我们可以认为二者都使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上就是在自变量x与超参数 θ \theta θ确定,因变量y服从正态分布的假设下,使用极大似然估计的一个化简;而逻辑回归中通过对数似然函数 L ( θ ) = ∏ i = 1 N P ( y i ∣ x i ; θ ) = ∏ i = 1 N ( π ( x i ) ) y i ( 1 − π ( x i ) ) 1 − y i L(\theta) = \prod_{i=1}^N P(y_i|x_i;\theta) = \prod_{i=1}^N (\pi (x_i))^{y_i} (1-\pi (x_i))^{1-y_i} L(θ)=i=1∏NP(yi∣xi;θ)=i=1∏N(π(xi))yi(1−π(xi))1−yi 的学习,得到最佳参数 θ \theta θ。另外,二者在求解超参数的过程中,都可以使用梯度下降的方法,这也是监督学习中一个常见的相似之处。
38.你使用随机森林生成了几百颗树(T1, T2, …, Tn),然后对这些树的预测结果进行综合,下列说法正确的是:(D)
1、每棵树是通过所有数据的子集构建而成的
2、每棵树学习的样本数据都是通过随机有放回采样而得的
3、每棵树是通过数据集的子集和特征的子集构建而成的
4、每棵树是通过所有的数据构建而成的
A. 1和2
B. 2和4
C. 1、2和3
D. 2和3
答:
① 集成学习顾名思义,就是利用多个弱学习器去构建强学习器,使之能够取得更好的泛化能力的表现;
② 集成学习现有两种比较成熟的思想:bagging和boosting。bagging侧重于解决模型过拟合的问题,提升模型的泛化能力;boosting侧重于解决模型的欠拟合问题,提升模型泛化能力的同时优化了数据集。
答:
bagging是Boostrap Aggregating的缩写,意为自助法。它使用到了Boostrap sampling(随机有放回采样法)的思想,每个基学习器使用的训练数据是差异化的,但是这些训练数据又都来自于同一个整体,最终综合所有基学习器的结果来决定最后集成算法的结果输出。例如随机森林(RandomForest)就是采用了bagging思想的集成学习算法,它使用的基学习器是决策树。
答:
随机抽样是为了让各棵决策树学习到的数据特征是有差距的,这是为了避免弱分类器之间过强的相关性。如果各棵决策树学习到的特征数据都是一样的,那么构建出的每棵树都是相同的,这样的话就与我们bagging的初衷背道而驰了。
答:
优点:
① 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。这是的最主要的优点。
② 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
③ 在训练后,可以给出各个特征对于输出的重要性
④ 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
⑤ 对部分特征缺失不敏感。
缺点有:
① 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
② 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
43.假定你正在处理类属性特征,并且没有查看分类变量在测试集中的分布。现在你想将One Hot Encoding(OHE)应用到类属性特征中。那么在训练集中将 OHE 应用到分类变量可能要面临的困难是什么?:(D)
A. 分类变量所有的类别没有全部出现在测试集中
B. 类别的频率分布在训练集和测试集是不同的
C. 训练集和测试集通常会有一样的分布
D. A 和 B 都正确
答案解析:
A、B 项都正确,如果类别在测试集中出现,但没有在训练集中出现,OHE 将会不能进行类别编码,这将是应用 OHE-hot 的主要困难。选项 B 同样也是正确的,在应用 OHE 时,如果训练集和测试集的频率分布不相同,我们需要多加小心,这样可能造成最后的结果是有偏差的。
答:
在有监督学习中, 模型的泛化误差来源于两个方面——偏差和方差, 具体来讲偏差和方差的定义如下:
① 偏差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。
偏差通常是由于我们对学习算法做了错误的假设所导致的, 比如真实模型是某个二次函数, 但我们假设模型是一次函数。
由偏差带来的误差通常在训练误差上就能体现出来。
② 方差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的方差。
方差通常是由于模型的复杂度相对于训练样本数m过高导致的, 比如一共有100个训练样本, 而我们假设模型是阶数不大于200的多项式函数。
由方差带来的误差通常体现在测试误差相对于训练误差的增量上。
上面的定义很准确, 但不够直观, 为了更清晰的理解偏差和方差, 我们用一个射击的例子来进一步描述这二者的区别和联系。
假设一次射击就是一个机器学习模型对一个样本进行预测。 射中靶心位置代表预测准确, 偏离靶心越远代表预测误差越大。 我们通过n次采样得到n个大小为m的训练样本集合, 训练出n个模
型, 对同一个样本做预测, 相当于我们做了n次射击, 射击结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3aqN1et5-1668820611430)(H:/sias资料/3-配套资料/阶段3-人工智能机器学习/02_机器学习算法day07/02_机器学习算法day07/03-其他资料/机器学习day07习题/机器学习前8天练习有答案版/images/variance_bias.jpg)]
集和测试集是不同的
C. 训练集和测试集通常会有一样的分布
D. A 和 B 都正确
答案解析:
A、B 项都正确,如果类别在测试集中出现,但没有在训练集中出现,OHE 将会不能进行类别编码,这将是应用 OHE-hot 的主要困难。选项 B 同样也是正确的,在应用 OHE 时,如果训练集和测试集的频率分布不相同,我们需要多加小心,这样可能造成最后的结果是有偏差的。
答:
在有监督学习中, 模型的泛化误差来源于两个方面——偏差和方差, 具体来讲偏差和方差的定义如下:
① 偏差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。
偏差通常是由于我们对学习算法做了错误的假设所导致的, 比如真实模型是某个二次函数, 但我们假设模型是一次函数。
由偏差带来的误差通常在训练误差上就能体现出来。
② 方差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的方差。
方差通常是由于模型的复杂度相对于训练样本数m过高导致的, 比如一共有100个训练样本, 而我们假设模型是阶数不大于200的多项式函数。
由方差带来的误差通常体现在测试误差相对于训练误差的增量上。
上面的定义很准确, 但不够直观, 为了更清晰的理解偏差和方差, 我们用一个射击的例子来进一步描述这二者的区别和联系。
假设一次射击就是一个机器学习模型对一个样本进行预测。 射中靶心位置代表预测准确, 偏离靶心越远代表预测误差越大。 我们通过n次采样得到n个大小为m的训练样本集合, 训练出n个模
型, 对同一个样本做预测, 相当于我们做了n次射击, 射击结果如下图所示:
[外链图片转存中…(img-3aqN1et5-1668820611430)]
我们最期望的结果就是左上角的结果, 射击结果又准确又集中, 说明模型的偏差和方差都很小; 右上图虽然射击结果的中心在靶心周围, 但分布比较分散, 说明模型的偏差较小但方差较大; 同理, 左下图说明模型方差较小, 偏差较大; 右下图说明模型方差较大, 偏差也较大。