### 基于对数双曲余弦损失函数的R语言线性回归模型

我已经从理论上了解了损失函数,并且还学习了如何在R语言中基于这些损失函数构建回归模型。

我可以应用基于不同损失函数的所有回归模型进行R编程,除了对数双曲余弦损失函数之外。

例如,我想在DATA数据集的5折子集上构建一个线性回归模型,然后提取系数并计算个体和聚合的方差,如下所示。

data = read.csv("train.csv") # "critical_temp" 是因变量。 data_nom_df=as.data.frame(scale(data))#标准化   #交叉验证set.seed(12345)k = 5 folds <- createFolds(data_nom_df$critical_temp, k = k, list = TRUE, returnTrain = TRUE)## 普通最小二乘回归#block Alm = list()for (i in 1:k) {  lm[[i]] = lm(critical_temp~ .,                data = data_nom_df[folds[[i]],])}#block Blm_coef = list()lm_coef_var = list()for(j in 1:(lm[[1]]$coefficients %>% length())){  for(i in 1:k){    lm_coef[[i]] = lm[[i]]$coefficients[j]     lm_coef_var[[j]] = lm_coef %>% unlist() %>% var()  } }#block Clm_var = unlist(lm_coef_var)lm_df = cbind(coefficients = lm[[1]]$coefficients %>% names() %>% as.data.frame()              , variance = lm_var %>% as.data.frame()) colnames(lm_df) = c("coefficients", "variance_lm")lm_df#block Dlm_var_sum = sum(lm_var)lm_var_sum

对于其他回归模型也是如此。然而,我没有找到任何代码或包来在R中应用基于对数双曲余弦损失函数的回归模型。

您能否指导我找到任何可以帮助我解决这个问题的资源?


回答:

这可以从基本原理开始做。还要注意limma包中存在logcosh函数,如果您遇到数值困难,可以用它代替log(cosh(.))

f <- function(b) with(cars, sum(log(cosh(dist - b[1] - b[2] * speed))))fm0 <- lm(dist ~ speed, cars)res <- optim(coef(fm0), f, method = "BFGS")str(res)## List of 5##  $ par        : Named num [1:2] -12.82 3.47##   ..- attr(*, "names")= chr [1:2] "(Intercept)" "speed"##  $ value      : num 532##  $ counts     : Named int [1:2] 28 10##   ..- attr(*, "names")= chr [1:2] "function" "gradient"##  $ convergence: int 0##  $ message    : NULL

图形

# 黑线是普通最小二乘回归线,红线是对数双曲余弦回归线plot(cars)abline(fm0)yfit <- res$par[1] + res$par[2] * cars$speedlines(cars$speed, yfit, col = "red")

截图

补充

请注意,优化也可以这样写,如果您有许多独立变量,这可能会有用。

fm0 <- lm(dist ~ speed, cars)X <- model.matrix(fm0)f <- function(b) with(cars, sum(log(cosh(dist - X %*% b))))res <- optim(coef(fm0), f, method = "BFGS")res

结果如下:

$par(Intercept)       speed  -12.816190    3.469536 $value[1] 531.5872$countsfunction gradient       28       10 $convergence[1] 0$messageNULL

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注