1、提醒读者交叉验证的结果是随机的,这是由于随机划分为训练集和测试集所致。尝试多次运行线性和k - 近邻代码,并比较结果。
需要多次运行线性和 k-近邻代码,然后比较每次运行所得到的结果,以观察因随机划分训练集和测试集带来的结果随机性。
2、请描述总体人群平均身高与按性别划分的平均身高之间的关系,并用英文表述。同时,请描述身高超过70英寸的人群总体比例与按性别划分的比例之间的关系,并用英文表述。
(a) The average height of the overall population is a weighted average of the average heights divided by gender, and the weight of each gender is the proportion of that gender in the overall population.
(b) The overall proportion of the population with a height over 70 inches is a weighted average of the proportions divided by gender, and the weight of each gender is the proportion of that gender in the overall population.
3、对于随机变量(X, Y),证明预测值µ(X)与预测误差Y - µ(X)不相关。
在随机 $ X $ 的情境下,令 (2.123) 式中的 $ x $ 为 $ Y $,则 $ z = \mu(X) $,可得
$$ E[\mu(X)(Y - \mu(X))] = 0 $$
这表明预测值 $ \mu(X) $ 与预测误差 $ Y - \mu(X) $ 不相关。
对于线性模型在样本层面也有类似结论,在固定 $ X $ 模型中,定义
$$ \hat{\epsilon}_i = Y_i - \tilde{X}_i \hat{\beta} $$
可证明 $ \hat{\epsilon}_i $ 和 $ \hat{\beta}_j $ 的相关性为 0,即每个 $ \hat{\epsilon}_i $ 与 $ \hat{\beta} $ 的任何分量都不相关。
4、在研究参数模型可能的拟合不佳区域时,我们发现参数模型在两端都可能存在问题,但其中一端的问题可能部分归因于偏差问题。已知线性模型在日元极低或极高时高估回归函数,在中等范围可能低估,而k - NN在数据集边缘存在偏差,值低时倾向于高估μ(t),值高时倾向于低估。指出是哪一端,并解释原因。
线性模型在日元极低或极高时高估回归函数,在中等范围可能低估。而 k -NN 在数据集边缘存在偏差,即值低时倾向于高估 μ(t),值高时倾向于低估。所以参数模型在日元极低时出现的高估问题,可能部分是由于 k -NN 在数据低端的高估偏差造成的。
5、有一个数据集可在regtools包中获取。尝试使用LASSO(例如来自glmnet包)和NMF进行替代分析。
可按以下步骤操作:
- 加载所需包,如
library(regtools)、library(glmnet)、library(NMF); - 从
regtools包中加载数据集; - 使用
glmnet包进行LASSO分析; - 使用
NMF包进行非负矩阵分解分析。
6、编写一个R函数,调用形式为cullwords (td, howmany = 0.80) 。这里td是词 - 文档矩阵,参数howmany指定要选择的单词数量。如果它是一个小于1.0的值,意味着按频率提取前howmany比例的单词。如果它是一个整数,则意味着提取该整数个最常出现的单词。让该函数返回td中提取单词的列号。
以下是实现该功能的R函数代码:
cullwords <- function(td, howmany = 0.80) {
# 计算每列(每个单词)的总频率
word_freq <- colSums(td)
# 按频率降序排序
sorted_freq <- sort(word_freq, decreasing = TRUE)
if (howmany < 1.0) {
# 如果howmany小于1.0,提取前howmany比例的单词
num_words <- ceiling(howmany * length(sorted_freq))
} else {
# 如果howmany是整数,提取指定数量的单词
num_words <- howmany
}
# 获取提取单词的列名
selected_words <- names(sorted_freq)[1:num_words]
# 获取这些单词在td中的列号
col_numbers <- which(colnames(td) %in% selected_words)
return(col_numbers)
}
7、请展示如何使用R函数setdiff()来进行训练/测试集划分。
可使用以下代码示例实现:
假设已有数据集 data
机器学习与统计建模实战解析

最低0.47元/天 解锁文章
17万+

被折叠的 条评论
为什么被折叠?



