From d0bb70411a79a865e66c2474ac1e5f1831547cd8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 15 Mar 2024 03:05:29 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Xiangyun?= =?UTF-8?q?Huang/data-analysis-in-action@1508d0a52fed26c8728627d632947e49c?= =?UTF-8?q?81a12ab=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analyze-text-data.html | 4 +- analyze-time-series-data.html | 4 +- .../figure-html/fig-two-samples-means-1.pdf | Bin 12052 -> 12054 bytes .../figure-html/fig-two-samples-means-1.tex | 2 +- index.html | 31 +++-- interactive-applications.html | 4 +- interactive-graphics.html | 72 ++++++------ interactive-tables.html | 8 +- intro.html | 106 +++++++++--------- numerical-optimization.html | 12 +- .../fig-one-dimensional-optimization-1.pdf | Bin 7015 -> 7015 bytes .../fig-one-dimensional-optimization-1.tex | 2 +- optimization-problems.html | 36 +++--- .../figure-html/fig-power-t-test-1.pdf | Bin 17130 -> 17128 bytes .../figure-html/fig-power-t-test-1.tex | 2 +- .../figure-html/fig-state-x77-bubble-1.png | Bin 180327 -> 179900 bytes search.json | 12 +- wrangling-objects.html | 2 +- 18 files changed, 146 insertions(+), 151 deletions(-) diff --git a/analyze-text-data.html b/analyze-text-data.html index 0644f856..3b9414d7 100644 --- a/analyze-text-data.html +++ b/analyze-text-data.html @@ -596,8 +596,8 @@

n_check_convergence = 25, progressbar = FALSE )
-
#> INFO  [15:28:26.129] early stopping at 175 iteration
-#> INFO  [15:28:26.608] early stopping at 50 iteration
+
#> INFO  [03:04:22.578] early stopping at 175 iteration
+#> INFO  [03:04:23.061] early stopping at 50 iteration

下图展示主题的分布,各个主题及其所占比例。

diff --git a/analyze-time-series-data.html b/analyze-time-series-data.html index 37dd57cd..b950dbb6 100644 --- a/analyze-time-series-data.html +++ b/analyze-time-series-data.html @@ -714,8 +714,8 @@

dyUnzoom()
-
- +
+
图 18.6: 美团股价变化趋势 diff --git a/common-statistical-tests_files/figure-html/fig-two-samples-means-1.pdf b/common-statistical-tests_files/figure-html/fig-two-samples-means-1.pdf index d3914043a82411cc22bba23ce8110a0acb804c7f..d058ce1601af16940143779a3eb71c1134523a1f 100644 GIT binary patch delta 3815 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 PK5}_VAt5beZOZ=uQBO!u delta 3815 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 Nl`M^bfEGfV=0D4=Cb|Fs diff --git a/common-statistical-tests_files/figure-html/fig-two-samples-means-1.tex b/common-statistical-tests_files/figure-html/fig-two-samples-means-1.tex index 712c3b38..d2266862 100644 --- a/common-statistical-tests_files/figure-html/fig-two-samples-means-1.tex +++ b/common-statistical-tests_files/figure-html/fig-two-samples-means-1.tex @@ -1,4 +1,4 @@ -% Created by tikzDevice version 0.12.6 on 2024-03-14 15:27:03 +% Created by tikzDevice version 0.12.6 on 2024-03-15 03:03:01 % !TEX encoding = UTF-8 Unicode \documentclass[tikz]{standalone} diff --git a/index.html b/index.html index 3d56defd..ffc35ab1 100644 --- a/index.html +++ b/index.html @@ -419,7 +419,7 @@

R 语言数据分析实战

发布日期
-

2024年3月14日

+

2024年3月15日

@@ -446,17 +446,15 @@

R 语言数据分析实战

本书初稿是在 RStudio IDE 内使用 Quarto 编辑的,Quarto 是继R Markdown之后,一个新的开源的科学和技术发布系统,它基于 Pandoc支持输出多种格式的书稿,比如 HTML 网页、EPUB 电子书、DOCX 文档和 PDF 便携式文档等。Quarto 吸收了过去 10 年 R Markdown 取得的经验和教训,在书籍写作、创建博客、制作简历和幻灯片等系列场景中支持更加统一的使用语法,一份源文档输出多种格式,使文档内容在不同场景中的迁移成本更低。了解更多 Quarto 特性,请访问 https://quarto.org/

书中的代码字体采用美观的 Source Code Pro 字体, 为方便跨操作系统编译书籍电子版,正文的中文字体采用开源的 fandol 字体。此外,考虑到美观性,本书图形使用了 Noto 系列中英文字体,它们来自 Google Fonts 字体库,分别是 Noto Sans 无衬线英文字体和 Noto Serif SC 宋体中文字体。

书中 R 包名以粗体表示,如 knitr 包,函数名以等宽体表示,如 plot(),函数的参数名同理。代码块内注释用 # 表示,运行结果每一行开头以 #> 标记。本书写作过程中,依赖 knitr (Xie 2015)ggplot2 (Wickham 2016)lattice (Sarkar 2008) 等众多 R 包。考虑到要同时支持 DOCX、EPUB、PDF 和 HTML 四种书籍格式,书中使用 knitr 包和 gt 包制作静态的表格。

-

为方便测试贡献者提供的 PR,本书托管在 Github 上,同时启用 Github Action 服务,为书籍自定义了一个可复现全书内容的运行环境,包括 R 软件、扩展包和系统软件依赖,详见仓库中的 DESCRIPTION 文件。你现在看到的是在线编译版本,使用 Quarto 1.4.550,最新一次编译时间是 2024-03-14 23:25:46。

+

为方便测试贡献者提供的 PR,本书托管在 Github 上,同时启用 Github Action 服务,为书籍自定义了一个可复现全书内容的运行环境,包括 R 软件、扩展包和系统软件依赖,详见仓库中的 DESCRIPTION 文件。你现在看到的是在线编译版本,使用 Quarto 1.4.550,最新一次编译时间是 2024-03-15 11:01:54。

xfun::session_info(packages = c(
-  "ggplot2", "gganimate", "ggrepel", "ggdensity",
-  "ggridges", "ggsignif", "ggforce", "ggbeeswarm",
-  "ggeffects", "ggnewscale", "patchwork", "shiny",
-  "plotly", "lattice", "igraph", "tidygraph", "ggraph",
-  "dplyr", "purrr", "tidyr", "httr", "data.table",
-  "rsconnect", "knitr", "rmarkdown", "gt", "DT",
-  "showtext", "gifski", "tinytex", "magick"
-), dependencies = FALSE)
+ "ggplot2", "gganimate", "ggrepel", "ggridges", "ggbeeswarm", + "patchwork", "shiny", "plotly", "lattice", "igraph", + "tidygraph", "ggraph", "dplyr", "purrr", "tidyr", "httr", + "data.table", "rsconnect", "knitr", "rmarkdown", "gt", "DT", + "showtext", "gifski", "tinytex", "magick" +), dependencies = FALSE)
#> R version 4.3.3 (2024-02-29)
 #> Platform: x86_64-pc-linux-gnu (64-bit)
@@ -470,13 +468,12 @@ 

R 语言数据分析实战

#> #> Package version: #> data.table_1.15.2 dplyr_1.1.4 DT_0.32 gganimate_1.0.9 -#> ggbeeswarm_0.7.2 ggdensity_1.0.0 ggeffects_1.5.0 ggforce_0.4.2 -#> ggnewscale_0.4.10 ggplot2_3.5.0 ggraph_2.2.1 ggrepel_0.9.5 -#> ggridges_0.5.6 ggsignif_0.6.4 gifski_1.12.0.2 gt_0.10.1 -#> httr_1.4.7 igraph_2.0.3 knitr_1.45 lattice_0.22.5 -#> magick_2.8.3 patchwork_1.2.0 plotly_4.10.4 purrr_1.0.2 -#> rmarkdown_2.26 rsconnect_1.2.1 shiny_1.8.0 showtext_0.9.7 -#> tidygraph_1.3.1 tidyr_1.3.1 tinytex_0.49 +#> ggbeeswarm_0.7.2 ggplot2_3.5.0 ggraph_2.2.1 ggrepel_0.9.5 +#> ggridges_0.5.6 gifski_1.12.0.2 gt_0.10.1 httr_1.4.7 +#> igraph_2.0.3 knitr_1.45 lattice_0.22.5 magick_2.8.3 +#> patchwork_1.2.0 plotly_4.10.4 purrr_1.0.2 rmarkdown_2.26 +#> rsconnect_1.2.1 shiny_1.8.0 showtext_0.9.7 tidygraph_1.3.1 +#> tidyr_1.3.1 tinytex_0.49 #> #> Pandoc version: 3.1.11 #> diff --git a/interactive-applications.html b/interactive-applications.html index 811a5fae..b0ab1643 100644 --- a/interactive-applications.html +++ b/interactive-applications.html @@ -959,8 +959,8 @@

-
- +
+
图 8.1: Shiny 生态系统 diff --git a/interactive-graphics.html b/interactive-graphics.html index 580800f6..a3c04c9e 100644 --- a/interactive-graphics.html +++ b/interactive-graphics.html @@ -581,8 +581,8 @@

plotly::add_markers(color = ~mag)

-
- +
+
图 6.2: 给散点图配色 @@ -601,8 +601,8 @@

)

-
- +
+
图 6.3: 设置刻度及标签 @@ -629,8 +629,8 @@

)

-
- +
+
图 6.4: 添加各处标题 @@ -657,8 +657,8 @@

)

-
- +
+
图 6.5: 设置主题风格 @@ -761,8 +761,8 @@

)

-
- +
+
图 6.7: 柱形图 @@ -782,8 +782,8 @@

)

-
- +
+
图 6.8: 曲线图 @@ -879,8 +879,8 @@

)

-
- +
+
图 6.12: 不同深度下地震震级的分布 @@ -900,8 +900,8 @@

)

-
- +
+
图 6.13: 不同深度下地震震级的分布 @@ -1017,8 +1017,8 @@

)

-
- +
+
图 6.16: 1999-2022 年 Martin Maechler 和 Brian Ripley 的代码提交量变化 @@ -1107,8 +1107,8 @@

plotly::ggplotly(p)
-
- +
+

当使用配置函数 config() 设置参数选项 staticPlot = TRUE,可将原本交互式的动态图形转为非交互式的静态图形。

@@ -1116,8 +1116,8 @@

plotly::ggplotly(p) |> 
   plotly::config(staticPlot = TRUE)

-
- +
+
@@ -1136,8 +1136,8 @@

plotly::style(hoveron = "points", hoverinfo = "x+y+text", hoverlabel = list(bgcolor = "white"))

-
- +
+
@@ -1223,8 +1223,8 @@

)
-
- +
+
图 6.20: 添加水印图片 @@ -1255,9 +1255,9 @@

htmltools::tagList(p1, p2)

-
-
- +
+
+
图 6.21: 上下布局 @@ -1271,8 +1271,8 @@

nrows = 2, margin = 0.05, shareX = TRUE, titleY = TRUE)

-
- +
+
图 6.22: 上下布局 @@ -1292,8 +1292,8 @@

)

-
- +
+
图 6.23: 灵活布局 @@ -1320,9 +1320,9 @@

-
-
- +
+
+

diff --git a/interactive-tables.html b/interactive-tables.html index bba4d742..fc83a074 100644 --- a/interactive-tables.html +++ b/interactive-tables.html @@ -499,8 +499,8 @@

-
- +
+
@@ -539,8 +539,8 @@

-
- +
+
diff --git a/intro.html b/intro.html index f75ff246..ec3cbb13 100644 --- a/intro.html +++ b/intro.html @@ -630,23 +630,23 @@

介绍<
-
- diff --git a/numerical-optimization.html b/numerical-optimization.html index be3acbdc..df05ed56 100644 --- a/numerical-optimization.html +++ b/numerical-optimization.html @@ -1829,11 +1829,11 @@

nlp <- ROI_solve(op, solver = "nloptr.directL") nlp$solution

-
#> [1]  0.00000 22.22222
+
#> [1] -21.99115   0.00000
nlp$objval
-
#> [1] -0.9734211
+
#> [1] -1

结果还是陷入局部最优解。运筹优化方面的商业软件,著名的有 Lingo 和 Matlab,下面采用 Lingo 20 求解,Lingo 代码如下:

@@ -2176,14 +2176,14 @@

# 目标函数值 nlp$objval

-
#> [1] 368.1061
+
#> [1] 368.1059
# 最优解
 nlp$solution
#>  [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000
 #>  [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000
-#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109093
+#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109096
 #> [25] 4.000000
@@ -2537,11 +2537,11 @@

nlp <- ROI_solve(op, solver = "nloptr.isres", start = c(1, 5, 5, 1))
 nlp$solution
-
#> [1] 1.276795 4.607639 3.992841 1.093756
+
#> [1] 1.131671 4.721246 3.868353 1.216995
nlp$objval
-
#> [1] 17.78648
+
#> [1] 17.25686

可以看出,nloptr 提供的优化能力可以覆盖 Ipopt 求解器,从以上求解的情况来看,推荐使用 nloptr.slsqp 求解器,这也是 Octave 的选择。

diff --git a/numerical-optimization_files/figure-html/fig-one-dimensional-optimization-1.pdf b/numerical-optimization_files/figure-html/fig-one-dimensional-optimization-1.pdf index 9470f0f0618128ba864f9b3e8f07771baec0e35b..fa9729518f2114ca72d7baec0ce4f95eed7c783f 100644 GIT binary patch delta 2592 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 b3TO?`79bJ8B}Oy{$#6n|ii*}(ZGis*Euzul delta 2606 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
nlp <- ROI_solve(op, solver = "nloptr.directL")
 nlp$solution
-
#> [1] 63.934432  6.121382
+
#> [1] 63.934193  6.121331
nlp$objval
@@ -1099,33 +1099,31 @@

control = list(maximize = TRUE) )

-
#> iter:  0  f-value:  -2968.501  pgrad:  7.572203 
-#> iter:  10  f-value:  -1992.18  pgrad:  3.503607 
-#> iter:  20  f-value:  -1991.277  pgrad:  2.365923 
-#> iter:  30  f-value:  -1990.325  pgrad:  1.405494 
-#> iter:  40  f-value:  -1989.979  pgrad:  1.709452 
-#> iter:  50  f-value:  -1989.946  pgrad:  0.02604793 
+
#> iter:  0  f-value:  -2301.554  pgrad:  4.703557 
+#> iter:  10  f-value:  -1990.644  pgrad:  2.361774 
+#> iter:  20  f-value:  -1989.947  pgrad:  0.2183447 
+#> iter:  30  f-value:  -1989.946  pgrad:  0.005798029 
 #>   Successful convergence.
ans
#> $par
-#> [1] 0.3598808 1.2560870 2.6633987
+#> [1] 0.6401137 2.6634054 1.2560965
 #> 
 #> $value
 #> [1] -1989.946
 #> 
 #> $gradient
-#> [1] 1.818989e-05
+#> [1] 0.0002660272
 #> 
 #> $fn.reduction
-#> [1] -978.5554
+#> [1] -311.6079
 #> 
 #> $iter
-#> [1] 59
+#> [1] 39
 #> 
 #> $feval
-#> [1] 61
+#> [1] 41
 #> 
 #> $convergence
 #> [1] 0
@@ -1145,15 +1143,15 @@ 

hess

#>           [,1]       [,2]       [,3]
-#> [1,] -907.1131  270.22803  341.25563
-#> [2,]  270.2280 -113.47865  -61.68173
-#> [3,]  341.2556  -61.68173 -192.78329
+#> [1,] -907.1064 -341.25220 -270.22960 +#> [2,] -341.2522 -192.78034 -61.68217 +#> [3,] -270.2296 -61.68217 -113.48058
# 标准差
 se <- sqrt(diag(solve(-hess)))
 se
-
#> [1] 0.1946826 0.3500306 0.2504754
+
#> [1] 0.1946849 0.2504791 0.3500301

multiStart 从不同初始值出发寻找全局最大值,先找一系列局部极大值,通过比较获得全局最大值。

@@ -1174,9 +1172,9 @@

pmat[!duplicated(pmat), ]
#>         fvalue parameter 1 parameter 2 parameter 3
-#> [1,] -1989.946      0.6401      2.6634      1.2561
-#> [2,] -1989.946      0.3599      1.2561      2.6634
-#> [3,] -1999.873      0.3187      1.9075      2.2792
+#> [1,] -1989.946 0.3599 1.2561 2.6634 +#> [2,] -1995.912 0.3990 2.5910 1.8588 +#> [3,] -1989.946 0.6401 2.6634 1.2561

diff --git a/power-analysis_files/figure-html/fig-power-t-test-1.pdf b/power-analysis_files/figure-html/fig-power-t-test-1.pdf index c7b257055c363acf78f079864b8c8fdbd6fdef32..29fa673486bc3596d37d1726a4b8b7824a9cf480 100644 GIT binary patch delta 4657 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 k_v9b`<=+2J6#oEwzkpYMPR=A^Qqm9*2_K)jfdR delta 4628 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%0Ax_oNiNr99Um3y~nBVctpySTio`Fh#1!wSfy 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 literal 180327 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数据对象" @@ -1124,7 +1124,7 @@ "href": "analyze-text-data.html#sec-topic-models", "title": "17  文本数据分析", "section": "\n17.4 主题的探索", - "text": "17.4 主题的探索\n益辉的日志是没有分类和标签的,所以,先聚类,接着逐个分析每个类代表的实际含义。然后,将聚类的结果作为结果标签,再应用多分类回归模型,最后联合聚类、分类模型,从无监督转化到有监督模型。\ntopicmodels (Grün 和 Hornik 2011) 基于 tm (Feinerer, Hornik, 和 Meyer 2008) 支持潜在狄利克雷分配(Latent Dirichlet Allocation,简称 LDA) 和 Correlated Topics Models (CTM) 文本主题建模,这一套工具比较适合英文文本分词、向量化和建模。text2vec 包支持多个统计模型,如LDA 、LSA 、GloVe 等,文本向量化后,结合统计学习模型,可用于分类、回归、聚类等任务,更多详情见 https://text2vec.org。\n接下来使用 David M. Blei 等提出 LDA 算法做主题建模,详情见 LDA 算法原始论文。\n\nlibrary(text2vec)\n\n首先将所有日志分词、向量化,构建文档-词矩阵 document-term matrix (DTM)\n\n# 移除链接\nremove_links <- function(x) {\n gsub(pattern = \"(<http.*?>)|(\\\\(http.*?\\\\))|(<www.*?>)|(\\\\(www.*?>\\\\))\", replacement = \"\", x)\n}\n# 清理、分词、清理\nfile_list1 <- lapply(file_list, remove_yaml)\nfile_list1 <- lapply(file_list1, remove_links)\nfile_list1 <- lapply(file_list1, segment, jiebar = jieba_seg)\nfile_list1 <- lapply(file_list1, remove_number_english)\n\n去掉没啥实际意义的词(比如单个字),极高频词和极低频词。\n\n# Token 化\nit <- itoken(file_list1, ids = 1:length(file_list1), progressbar = FALSE)\nv <- create_vocabulary(it)\n# 去掉单个字 减少 3K\nv <- v[nchar(v$term) > 1,]\n# 去掉极高频词和极低频词 减少 1.4W\nv <- prune_vocabulary(v, term_count_min = 10, doc_proportion_max = 0.2)\n\n采用 LDA(Latent Dirichlet Allocation)算法建模\n\n# 词向量化\nvectorizer <- vocab_vectorizer(v)\n# 文档-词矩阵 DTM\ndtm <- create_dtm(it, vectorizer, type = \"dgTMatrix\")\n# 10 个主题\nlda_model <- LDA$new(n_topics = 9, doc_topic_prior = 0.1, topic_word_prior = 0.01)\n# 训练模型\ndoc_topic_distr <- lda_model$fit_transform(\n x = dtm, n_iter = 1000, convergence_tol = 0.001, \n n_check_convergence = 25, progressbar = FALSE\n )\n\n#> INFO [15:28:26.129] early stopping at 175 iteration\n#> INFO [15:28:26.608] early stopping at 50 iteration\n\n\n下图展示主题的分布,各个主题及其所占比例。\n\nbarplot(\n doc_topic_distr[1, ], xlab = \"主题\", ylab = \"比例\", \n ylim = c(0, 1), names.arg = 1:ncol(doc_topic_distr)\n)\n\n\n\n\n\n\n图 17.3: 主题分布\n\n\n\n\n将 9 个主题的 Top 12 词分别打印出来。\n\nlda_model$get_top_words(n = 12, topic_number = 1L:9L, lambda = 0.3)\n\n#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] \n#> [1,] \"例子\" \"一首\" \"社会\" \"统计\" \"代码\" \"记得\" \"吱吱\" \"时代\" \"网站\" \n#> [2,] \"翻译\" \"歌词\" \"观点\" \"会议\" \"函数\" \"不知\" \"照片\" \"意义\" \"数据\" \n#> [3,] \"字符\" \"手机\" \"痛苦\" \"模型\" \"文档\" \"同学\" \"好吃\" \"媒体\" \"图形\" \n#> [4,] \"特征\" \"这首\" \"教育\" \"论文\" \"文件\" \"阿姨\" \"我家\" \"文化\" \"域名\" \n#> [5,] \"作品\" \"首歌\" \"人类\" \"老师\" \"变量\" \"居然\" \"家里\" \"现实\" \"软件\" \n#> [6,] \"中文\" \"遗憾\" \"追求\" \"分布\" \"字体\" \"看见\" \"味道\" \"社交\" \"服务器\"\n#> [7,] \"排版\" \"艺术\" \"思考\" \"小子\" \"元素\" \"学校\" \"厨房\" \"社区\" \"邮件\" \n#> [8,] \"意思\" \"小说\" \"强烈\" \"统计学\" \"语法\" \"路上\" \"在家\" \"眼中\" \"提供\" \n#> [9,] \"风格\" \"生活\" \"成功\" \"参加\" \"编译\" \"听说\" \"黄瓜\" \"避免\" \"编辑\" \n#> [10,] \"主题\" \"诗词\" \"接受\" \"报告\" \"图片\" \"印象\" \"包子\" \"造成\" \"系统\" \n#> [11,] \"伟大\" \"鸡蛋\" \"工作\" \"检验\" \"参数\" \"当时\" \"叶子\" \"事实\" \"浏览器\"\n#> [12,] \"表示\" \"人间\" \"努力\" \"学生\" \"生成\" \"名字\" \"辣椒\" \"政治\" \"注册\"\n\n\n结果有点意思,说明益辉喜欢读书写作(主题 1、3、8)、诗词歌赋(主题 2)、统计图形(主题 4)、代码编程(主题 5)、回忆青春(主题 6)、做菜吃饭(7)、倒腾网站(主题 9)。\n\n\n\n\n\n\n注释\n\n\n\n提示:参考论文 (Zhang, Li, 和 Zhang 2023) 根据 perplexities 做交叉验证选择最合适的主题数量。", + "text": "17.4 主题的探索\n益辉的日志是没有分类和标签的,所以,先聚类,接着逐个分析每个类代表的实际含义。然后,将聚类的结果作为结果标签,再应用多分类回归模型,最后联合聚类、分类模型,从无监督转化到有监督模型。\ntopicmodels (Grün 和 Hornik 2011) 基于 tm (Feinerer, Hornik, 和 Meyer 2008) 支持潜在狄利克雷分配(Latent Dirichlet Allocation,简称 LDA) 和 Correlated Topics Models (CTM) 文本主题建模,这一套工具比较适合英文文本分词、向量化和建模。text2vec 包支持多个统计模型,如LDA 、LSA 、GloVe 等,文本向量化后,结合统计学习模型,可用于分类、回归、聚类等任务,更多详情见 https://text2vec.org。\n接下来使用 David M. Blei 等提出 LDA 算法做主题建模,详情见 LDA 算法原始论文。\n\nlibrary(text2vec)\n\n首先将所有日志分词、向量化,构建文档-词矩阵 document-term matrix (DTM)\n\n# 移除链接\nremove_links <- function(x) {\n gsub(pattern = \"(<http.*?>)|(\\\\(http.*?\\\\))|(<www.*?>)|(\\\\(www.*?>\\\\))\", replacement = \"\", x)\n}\n# 清理、分词、清理\nfile_list1 <- lapply(file_list, remove_yaml)\nfile_list1 <- lapply(file_list1, remove_links)\nfile_list1 <- lapply(file_list1, segment, jiebar = jieba_seg)\nfile_list1 <- lapply(file_list1, remove_number_english)\n\n去掉没啥实际意义的词(比如单个字),极高频词和极低频词。\n\n# Token 化\nit <- itoken(file_list1, ids = 1:length(file_list1), progressbar = FALSE)\nv <- create_vocabulary(it)\n# 去掉单个字 减少 3K\nv <- v[nchar(v$term) > 1,]\n# 去掉极高频词和极低频词 减少 1.4W\nv <- prune_vocabulary(v, term_count_min = 10, doc_proportion_max = 0.2)\n\n采用 LDA(Latent Dirichlet Allocation)算法建模\n\n# 词向量化\nvectorizer <- vocab_vectorizer(v)\n# 文档-词矩阵 DTM\ndtm <- create_dtm(it, vectorizer, type = \"dgTMatrix\")\n# 10 个主题\nlda_model <- LDA$new(n_topics = 9, doc_topic_prior = 0.1, topic_word_prior = 0.01)\n# 训练模型\ndoc_topic_distr <- lda_model$fit_transform(\n x = dtm, n_iter = 1000, convergence_tol = 0.001, \n n_check_convergence = 25, progressbar = FALSE\n )\n\n#> INFO [03:04:22.578] early stopping at 175 iteration\n#> INFO [03:04:23.061] early stopping at 50 iteration\n\n\n下图展示主题的分布,各个主题及其所占比例。\n\nbarplot(\n doc_topic_distr[1, ], xlab = \"主题\", ylab = \"比例\", \n ylim = c(0, 1), names.arg = 1:ncol(doc_topic_distr)\n)\n\n\n\n\n\n\n图 17.3: 主题分布\n\n\n\n\n将 9 个主题的 Top 12 词分别打印出来。\n\nlda_model$get_top_words(n = 12, topic_number = 1L:9L, lambda = 0.3)\n\n#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] \n#> [1,] \"例子\" \"一首\" \"社会\" \"统计\" \"代码\" \"记得\" \"吱吱\" \"时代\" \"网站\" \n#> [2,] \"翻译\" \"歌词\" \"观点\" \"会议\" \"函数\" \"不知\" \"照片\" \"意义\" \"数据\" \n#> [3,] \"字符\" \"手机\" \"痛苦\" \"模型\" \"文档\" \"同学\" \"好吃\" \"媒体\" \"图形\" \n#> [4,] \"特征\" \"这首\" \"教育\" \"论文\" \"文件\" \"阿姨\" \"我家\" \"文化\" \"域名\" \n#> [5,] \"作品\" \"首歌\" \"人类\" \"老师\" \"变量\" \"居然\" \"家里\" \"现实\" \"软件\" \n#> [6,] \"中文\" \"遗憾\" \"追求\" \"分布\" \"字体\" \"看见\" \"味道\" \"社交\" \"服务器\"\n#> [7,] \"排版\" \"艺术\" \"思考\" \"小子\" \"元素\" \"学校\" \"厨房\" \"社区\" \"邮件\" \n#> [8,] \"意思\" \"小说\" \"强烈\" \"统计学\" \"语法\" \"路上\" \"在家\" \"眼中\" \"提供\" \n#> [9,] \"风格\" \"生活\" \"成功\" \"参加\" \"编译\" \"听说\" \"黄瓜\" \"避免\" \"编辑\" \n#> [10,] \"主题\" \"诗词\" \"接受\" \"报告\" \"图片\" \"印象\" \"包子\" \"造成\" \"系统\" \n#> [11,] \"伟大\" \"鸡蛋\" \"工作\" \"检验\" \"参数\" \"当时\" \"叶子\" \"事实\" \"浏览器\"\n#> [12,] \"表示\" \"人间\" \"努力\" \"学生\" \"生成\" \"名字\" \"辣椒\" \"政治\" \"注册\"\n\n\n结果有点意思,说明益辉喜欢读书写作(主题 1、3、8)、诗词歌赋(主题 2)、统计图形(主题 4)、代码编程(主题 5)、回忆青春(主题 6)、做菜吃饭(7)、倒腾网站(主题 9)。\n\n\n\n\n\n\n注释\n\n\n\n提示:参考论文 (Zhang, Li, 和 Zhang 2023) 根据 perplexities 做交叉验证选择最合适的主题数量。", "crumbs": [ "数据建模", "17  文本数据分析" @@ -1333,7 +1333,7 @@ "href": "numerical-optimization.html#sec-nonlinear-optimization", "title": "20  数值优化", "section": "\n20.4 非线性优化", - "text": "20.4 非线性优化\n非线性优化按是否带有约束,以及约束是线性还是非线性,分为无约束优化、箱式约束优化、线性约束优化和非线性约束优化。箱式约束可看作是线性约束的特殊情况。\n\nR 软件内置的非线性优化函数\n\n\nnlm()\nnlminb()\nconstrOptim()\noptim()\n\n\n\n无约束\n支持\n支持\n不支持\n支持\n\n\n箱式约束\n不支持\n支持\n支持\n支持\n\n\n线性约束\n不支持\n不支持\n支持\n不支持\n\n\n\nR 软件内置的 stats 包有 4 个数值优化方面的函数,函数 nlm() 可求解无约束优化问题,函数 nlminb() 可求解无约束、箱式约束优化问题,函数 constrOptim() 可求解箱式和线性约束优化。函数 optim() 是通用型求解器,包含多个优化算法,可求解无约束、箱式约束优化问题。尽管这些函数在 R 语言中长期存在,在统计中有广泛的使用,如非线性最小二乘 stats::nls(),极大似然估计 stats4::mle() 和广义最小二乘估计 nlme::gls() 等。但是,这些优化函数的求解能力有重合,使用语法不尽相同,对于非线性约束无能为力,下面仍然主要使用 ROI 包来求解多维非线性优化问题。\n\n20.4.1 一元非线性优化\n求如下一维分段非线性函数的最小值,其函数图像见 图 20.5 ,这个函数是不连续的,更不光滑。\n\\[\nf(x) =\n\\begin{cases}\n10 & x \\in (-\\infty,-1] \\\\\n\\exp(-\\frac{1}{|x-1|}) & x \\in (-1,4) \\\\\n10 & x \\in [4, +\\infty)\n\\end{cases}\n\\]\n\nfn <- function(x) ifelse(x > -1, ifelse(x < 4, exp(-1 / abs(x - 1)), 10), 10)\n\n\n代码op <- par(mar = c(4, 4, 0.5, 0.5))\ncurve(\n expr = fn, from = -2, to = 5, lwd = 2,\n panel.first = grid(),\n xlab = \"$x$\", ylab = \"$f(x)$\"\n)\non.exit(par(op), add = TRUE)\n\n\n\n\n\n\n图 20.5: 一维函数图像\n\n\n\n\n函数 optimize() 可以求解一元函数的极值问题,默认求极小值,参数 f 表示目标函数,参数 interval 表示搜索在此区间内最小值。函数返回一个列表,元素 minimum 表示极小值点,objective 表示极值点对应的目标函数值。\n\noptimize(f = fn, interval = c(-4, 20), maximum = FALSE)\n\n#> $minimum\n#> [1] 19.99995\n#> \n#> $objective\n#> [1] 10\n\noptimize(f = fn, interval = c(-7, 20), maximum = FALSE)\n\n#> $minimum\n#> [1] 0.9992797\n#> \n#> $objective\n#> [1] 0\n\n\n值得注意,对于不连续的分段函数,在不同的区间内搜索极值,可能获得不同的结果,可以绘制函数图像帮助选择最小值。\n\n20.4.2 多元隐函数优化\n这个优化问题来自 1stOpt 软件的帮助文档,下面利用 R 语言来求该多元隐函数的极值。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} y = & ~\\sin\\Big((yx_1 -0.5)^2 + 2x_1 x_2^2 - \\frac{y}{10} \\Big)\\cdot \\\\\n&~\\exp\\Big(-\\Big( \\big(x_1 - 0.5 -\\exp(-x_2 + y)\\big)^2 + x_2^2 - \\frac{y}{5} + 3 \\Big)\\Big)\n\\end{aligned}\n\\]\n其中, \\(x_1 \\in [-1,7],x_2 \\in [-2,2]\\) 。\n对于隐函数 \\(f(x_1,x_2,y)=0\\) ,常规的做法是先计算隐函数的偏导数,并令偏导数为 0,再求解非线性方程组,得到各个驻点,最后,将驻点代入原方程,比较驻点处函数值,根据优化目标选择最大或最小值。\n\\[\n\\begin{aligned}\n\\frac{\\partial f(x_1,x_2,y)}{\\partial x_1} = 0 \\\\\n\\frac{\\partial f(x_1,x_2,y)}{\\partial x_2} = 0\n\\end{aligned}\n\\]\n如果目标函数很复杂,隐函数偏导数难以计算,可以考虑暴力网格搜索。先估计隐函数值 \\(z\\) 的大致范围,给定 \\(x,y\\) 时,计算一元非线性方程的根。\n\nfn <- function(m) {\n subfun <- function(x) {\n f1 <- (m[1] * x - 0.5)^2 + 2 * m[1] * m[2]^2 - x / 10\n f2 <- -((m[1] - 0.5 - exp(-m[2] + x))^2 + m[2]^2 - x / 5 + 3)\n x - sin(f1) * exp(f2)\n }\n uniroot(f = subfun, interval = c(-1, 1))$root\n}\n\n在位置 \\((1,2)\\) 处函数值为 0.0007368468。\n\n# 测试函数 fn\nfn(m = c(1, 2))\n\n#> [1] 0.0007368468\n\n\n将目标区域网格化,通过一元非线性方程求根的方式获得每个格点处的函数值。\n\ndf <- expand.grid(\n x1 = seq(from = -1, to = 7, length.out = 81),\n x2 = seq(from = -2, to = 2, length.out = 41)\n)\n# 计算格点处的函数值\ndf$fn <- apply(df, 1, FUN = fn)\n\n在此基础上,绘制隐函数图像,如 图 20.6 所示,可以获得关于隐函数的大致情况。\n\n代码# 绘图\nwireframe(\n data = df, fn ~ x1 * x2,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]), ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 20.6: 隐函数图像\n\n\n\n\n最后,获得暴力网格搜索的结果,目标函数在 \\((2.8,-0.9)\\) 处取得最小值 \\(-0.02159723\\)。总的来说,这是一个近似结果,如果进一步缩小搜索区域,将网格划分得越细,搜索的结果将越接近全局最小值。\n\ndf[df$fn == min(df$fn), ]\n\n#> x1 x2 fn\n#> 930 2.8 -0.9 -0.02159723\n\n\n将求隐函数极值的问题转为含非线性等式约束的非线性优化问题。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} \\quad & y \\\\\n\\text{s.t.} \\quad & f(x_1,x_2,y) = 0\n\\end{aligned}\n\\]\n由于等式约束非常复杂,手动计算等式约束的雅可比矩阵不可行,可以用 numDeriv 包的函数 jacobian() 计算等式约束的雅可比矩阵。考虑到本例中仅含有一个等式约束,雅可比矩阵退化为梯度向量,这可以用 numDeriv 包的另一个函数 grad() 计算。\n\n# 等式约束\nheq <- function(x) {\n f1 <- (x[1] * x[3] - 0.5)^2 + 2 * x[1] * x[2]^2 - x[3] / 10\n f2 <- (x[1] - 0.5 - exp(-x[2] + x[3]))^2 + x[2]^2 - x[3] / 5 + 3\n x[3] - sin(f1) * exp(-f2)\n}\n# 等式约束的梯度\nheq.jac <- function(x) {\n numDeriv::grad(func = heq, x = x)\n}\n\n函数 L_objective() 表示含 1 个决策变量的线性目标函数,函数 F_constraint() 表示非线性等式约束。\n\n# 定义优化问题\nop <- OP(\n objective = L_objective(L = c(0, 0, 1)),\n constraints = F_constraint(\n # 等式约束\n F = list(heq = heq),\n dir = \"==\",\n rhs = 0,\n # 等式约束的雅可比\n J = list(heq.jac = heq.jac)\n ),\n bounds = V_bound(\n ld = -Inf, ud = Inf,\n li = c(1, 2), ui = c(1, 2),\n lb = c(-1, -2), ub = c(7, 2),\n nobj = 3L\n ),\n maximum = FALSE # 求最小\n)\nop\n\n#> ROI Optimization Problem:\n#> \n#> Minimize a linear objective function of length 3 with\n#> - 3 continuous objective variables,\n#> \n#> subject to\n#> - 1 constraint of type nonlinear.\n#> - 3 lower and 2 upper non-standard variable bounds.\n\n\n将网格搜索的结果作为初值,继续寻找更优的目标函数值。\n\nnlp <- ROI_solve(op,\n solver = \"nloptr.slsqp\", start = c(2.8, -0.9, -0.02159723)\n)\n# 最优解\nnlp$solution\n\n#> [1] 2.89826224 -0.85731584 -0.02335409\n\n# 目标函数值\nnlp$objval\n\n#> [1] -0.02335409\n\n\n可以发现,更优的目标函数值 \\(-0.02335\\) 在 \\((2.898,-0.8573)\\) 取得。\n\n20.4.3 多元无约束优化\n\n20.4.3.1 示例 1\nRastrigin 函数是一个 \\(n\\) 维优化问题测试函数。\n\\[\n\\min_{\\boldsymbol{x}} \\sum_{i=1}^{n}\\big(x_i^2 - 10 \\cos(2\\pi x_i) + 10\\big)\n\\]\n计算函数值的 R 代码如下:\n\nfn <- function(x) {\n sum(x^2 - 10 * cos(2 * pi * x) + 10)\n}\n\n绘制二维情形下的 Rastrigin 函数图像,如 图 20.7 所示,这是一个多模态的函数,有许多局部极小值。如果采用 BFGS 算法寻优容易陷入局部极值点。\n\n代码df <- expand.grid(\n x = seq(-4, 4, length.out = 151),\n y = seq(-4, 4, length.out = 151)\n)\n\ndf$fnxy <- apply(df, 1, fn)\nwireframe(\n data = df, fnxy ~ x * y,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]),\n ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 20.7: 二维 Rastrigin 函数图像\n\n\n\n\n不失一般性,考虑函数维数 \\(n=20\\) ,决策变量 \\(x_i \\in [-50,50], i = 1,2,\\ldots,n\\) 的情况。\n\nop <- OP(\n objective = F_objective(fn, n = 20L),\n bounds = V_bound(ld = -50, ud = 50, nobj = 20L)\n)\n\n调全局优化器求解优化问题。\n\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\n# 最优解\nnlp$solution\n\n#> [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n\n# 目标函数值\nnlp$objval\n\n#> [1] 0\n\n\n\n代码# R 语言内置的非线性优化函数\n# 无约束\nnlm(f = fn, p = rep(1, 20))\noptim(par = rep(1, 20), fn = fn, method = \"BFGS\")\noptim(par = rep(1, 20), fn = fn, method = \"Nelder-Mead\")\n\n# 箱式约束\noptim(par = rep(1, 20), fn = fn, \n lower = -50, upper = 50, method = \"L-BFGS-B\")\nnlminb(start = rep(1, 20), objective = fn, lower = -50, upper = 50)\nconstrOptim(\n theta = rep(1, 20), f = fn, grad = NULL,\n ui = rbind(diag(rep(1, 20)), diag(rep(-1, 20))),\n ci = c(rep(-50, 20), rep(-50, 20))\n)\n\n\n\n20.4.3.2 示例 2\n下面这个优化问题来自 1stOpt 软件帮助手册,是一个无约束非线性优化问题,它的目标函数非常复杂,一般的求解器都无法求解。最优解在 \\((7.999982, 7.999982)\\) 取得,目标函数值为 -7.978832。\n\\[\n\\begin{aligned}\n & \\min_{\\boldsymbol{x}} ~ \\cos(x_1)\\cos(x_2) - \\sum_{i=1}^{5}\\Big( (-1)^i \\cdot i \\cdot 2 \\cdot \\exp\\big(-500 \\cdot ( (x_1 - i \\cdot 2)^2 + (x_2 - i\\cdot 2)^2 ) \\big) \\Big)\n\\end{aligned}\n\\]\n目标函数分两步计算,先计算累加部分的通项,然后代入计算目标函数。\n\nsubfun <- function(i, m) {\n (-1)^i * i * 2 * exp(-500 * ((m[1] - i * 2)^2 + (m[2] - i * 2)^2))\n}\nfn <- function(x) {\n cos(x[1]) * cos(x[2]) -\n sum(mapply(FUN = subfun, i = 1:5, MoreArgs = list(m = x)))\n}\n\n直观起见,绘制目标函数在区域 \\([-50, 50] \\times [-50, 50]\\) 内的图像,如 图 20.8 (a) 所示,可以看到几乎没有变化的梯度,给寻优过程带来很大困难。再将区域 \\([0, 12] \\times [0, 12]\\) 上的三维图像绘制出来,如 图 20.8 (b) 所示,可见,有不少局部陷阱,且分布在 \\(x_2 = x_1\\) 的直线上。\n代码df <- expand.grid(\n x = seq(-50, 50, length.out = 101),\n y = seq(-50, 50, length.out = 101)\n)\ndf$fnxy <- apply(df, 1, fn)\nwireframe(\n data = df, fnxy ~ x * y,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]),\n ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\ndf <- expand.grid(\n x = seq(0, 12, length.out = 151),\n y = seq(0, 12, length.out = 151)\n)\ndf$fnxy <- apply(df, 1, fn)\nwireframe(\n data = df, fnxy ~ x * y,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]),\n ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90), alpha = 0.75, \n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n\n\n\n(a) 区域 \\([-50,50]\\times[-50,50]\\) 内的函数图像\n\n\n\n\n\n\n\n\n\n\n\n(b) 区域 \\([0,12]\\times[0,12]\\) 内的函数图像\n\n\n\n\n\n\n图 20.8: 局部放大前后的函数图像\n\n\n不失一般性,下面考虑 \\(x_1,x_2 \\in [-50,50]\\) ,面对如此复杂的函数,调用全局优化器 nloptr.directL 寻优。\n\nop <- OP(\n objective = F_objective(fn, n = 2L),\n bounds = V_bound(ld = -50, ud = 50, nobj = 2L)\n)\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\nnlp$solution\n\n#> [1] 0.00000 22.22222\n\nnlp$objval\n\n#> [1] -0.9734211\n\n\n结果还是陷入局部最优解。运筹优化方面的商业软件,著名的有 Lingo 和 Matlab,下面采用 Lingo 20 求解,Lingo 代码如下:\nSETS:\nP/1..5/;\nEndsets\nMin=@cos(x1) * @cos(x2) - @Sum(P(j): (-1)^j * j * 2 * @exp(-500 * ((x1 - j * 2)^2 + (x2 - j * 2)^2)));\n@Bnd(-50, x1, 50);\n@Bnd(-50, x2, 50);\n启用全局优化求解器后,在 \\((x_1 = 7.999982, x_2 = 7.999982)\\) 取得最小值 -7.978832。而默认未启用全局优化求解器的情况下,在 \\((x_1 = 18.84956, x_2 = -40.84070)\\) 取得局部极小值 -1.000000。\n在这种情况下,数值优化算法遇到瓶颈,可以采用一些全局随机优化算法,比如 GA 包 (Scrucca 2013) 实现的遗传算法。经过对参数的一些调优,可以获得与商业软件几乎一样的结果。\n\nnlp <- GA::ga(\n type = \"real-valued\",\n fitness = function(x) -fn(x),\n lower = c(0, 0), upper = c(12, 12),\n popSize = 500, maxiter = 100, \n monitor = FALSE, seed = 20232023\n)\n# 最优解\nnlp@solution\n\n#> x1 x2\n#> [1,] 7.999982 7.999981\n\n# 目标函数值\nnlp@fitnessValue\n\n#> [1] 7.978832\n\n\n其中,参数 type 指定决策变量的类型,type = \"real-valued\" 表示目标函数中的决策变量是实值连续的,参数 fitness 是目标函数,函数 ga() 对目标函数求极大,所以,对当前优化问题,添加了一个负号。 参数 popSize 控制种群大小,值越大,运行时间越长,搜索范围越广,获得的全局优化解越好。对于复杂的优化问题,可以不断增加种群大小来寻优,直至增加种群大小也不能获得更好的解。参数 maxiter 控制种群进化的次数,值越大,搜索次数可以越多,获得的解越好。参数 popSize 的影响大于参数 maxiter ,减少陷入局部最优解(陷阱)的可能。根据已知条件尽可能缩小可行域,以减少种群数量,进而缩短算法迭代时间。\n\n20.4.4 多元箱式约束优化\n有如下带箱式约束的多元非线性优化问题,该示例来自函数 nlminb() 的帮助文档,如果没有箱式约束,全局极小值点在 \\((1,1,\\cdots,1)\\) 处取得。\n\\[\n\\begin{aligned}\n \\min_{\\boldsymbol{x}} \\quad & (x_1 - 1)^2 + 4\\sum_{i =1}^{n -1}(x_{i+1} -x_i^2)^2 \\\\\n \\text{s.t.} \\quad & 2 \\leq x_1,x_2,\\cdots,x_n \\leq 4\n\\end{aligned}\n\\]\nR 语言编码的函数代码如下:\n\nfn <- function(x) {\n n <- length(x)\n sum(c(1, rep(4, n - 1)) * (x - c(1, x[-n])^2)^2)\n}\n\n在二维的情形下,可以绘制目标函数的三维图像,见 图 20.9 ,函数曲面和香蕉函数有些相似。\n\n代码dat <- expand.grid(\n x1 = seq(from = 0, to = 4, length.out = 41),\n x2 = seq(from = 0, to = 4, length.out = 41)\n)\ndat$fn <- apply(dat, 1, fn)\n\nwireframe(\n data = dat, fn ~ x1 * x2,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]), ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 20.9: 类香蕉函数的曲面图\n\n\n\n\nBase R 有 3 个函数可以求解这个优化问题,分别是 nlminb() 、constrOptim()和optim() ,因此,不妨在这个示例上,用这 3 个函数分别求解该优化问题,介绍它们的用法,最后,介绍 ROI 包实现的方法。这个优化问题的目标函数是 \\(n\\) 维非线性的,不失一般性,又不让问题变得太过简单,下面考虑 25 维的情况,\n\n20.4.4.1 nlminb()\n\n函数 nlminb() 参数 start 指定迭代初始值,参数 objective 指定目标函数,参数 lower 和 upper 分别指定箱式约束中的下界和上界。给定初值 \\((3, 3, \\cdots, 3)\\),下界 \\((2,2,\\cdots,2)\\) 和上界 \\((4,4,\\cdots,4)\\) 。nlminb() 帮助文档说该函数出于历史兼容性的原因尚且存在,一般来说,这个函数会一直维护下去的。\n\nnlminb(\n start = rep(3, 25), objective = fn,\n lower = rep(2, 25), upper = rep(4, 25)\n)\n\n#> $par\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109093\n#> [25] 4.000000\n#> \n#> $objective\n#> [1] 368.1059\n#> \n#> $convergence\n#> [1] 0\n#> \n#> $iterations\n#> [1] 6\n#> \n#> $evaluations\n#> function gradient \n#> 10 177 \n#> \n#> $message\n#> [1] \"relative convergence (4)\"\n\n\n从返回结果来看,求解过程成功收敛,最优解的前 23 个决策变量取值为 2,在箱式约束的边界上,第 24 个分量没有边界上,而在内部,第 25 个决策变量取值为 4,也在边界上。目标函数值为 368.1059。\n\n20.4.4.2 constrOptim()\n\n使用 constrOptim() 函数求解,默认求极小,需将箱式或线性不等式约束写成矩阵形式,即 \\(Ax \\geq b\\) 的形式,参数 ui 是 \\(k \\times n\\) 的约束矩阵 \\(A\\),ci 是右侧 \\(k\\) 维约束向量 \\(b\\)。以上面的优化问题为例,将箱式约束 \\(2 \\leq x_1,x_2 \\leq 4\\) 转化为矩阵形式,约束矩阵和向量分别为:\n\\[\nA = \\begin{bmatrix}\n1 & 0 \\\\\n0 & 1 \\\\\n-1 & 0 \\\\\n0 & -1\n\\end{bmatrix}, \\quad\nb = \\begin{bmatrix}\n2 \\\\\n2 \\\\\n-4 \\\\\n-4\n\\end{bmatrix}\n\\]\n\nconstrOptim(\n theta = rep(3, 25), # 初始值\n f = fn, # 目标函数\n method = \"Nelder-Mead\", # 没有提供梯度,则必须用 Nelder-Mead 方法\n ui = rbind(diag(rep(1, 25)), diag(rep(-1, 25))),\n ci = c(rep(2, 25), rep(-4, 25))\n)\n\n#> $par\n#> [1] 2.006142 2.002260 2.003971 2.003967 2.004143 2.004255 2.001178 2.002990\n#> [9] 2.003883 2.006029 2.017345 2.009236 2.000949 2.007793 2.025831 2.007896\n#> [17] 2.004514 2.004381 2.008771 2.015695 2.005803 2.009127 2.017988 2.257782\n#> [25] 3.999846\n#> \n#> $value\n#> [1] 378.4208\n#> \n#> $counts\n#> function gradient \n#> 12048 NA \n#> \n#> $convergence\n#> [1] 1\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 25\n#> \n#> $barrier.value\n#> [1] -0.003278963\n\n\n返回结果中 convergence = 1 表示迭代次数到达默认的极限 maxit = 500 。参考函数 nlminb() 的求解结果,可知还没有收敛。如果没有提供梯度,则必须用 Nelder-Mead 方法,下面增加迭代次数到 1000。\n\nconstrOptim(\n theta = rep(3, 25), # 初始值\n f = fn, # 目标函数\n method = \"Nelder-Mead\", \n control = list(maxit = 1000),\n ui = rbind(diag(rep(1, 25)), diag(rep(-1, 25))),\n ci = c(rep(2, 25), rep(-4, 25))\n)\n\n#> $par\n#> [1] 2.000081 2.000142 2.001919 2.000584 2.000007 2.000003 2.001097 2.001600\n#> [9] 2.000207 2.000042 2.000250 2.000295 2.000580 2.002165 2.000453 2.000932\n#> [17] 2.000456 2.000363 2.000418 2.000474 2.009483 2.001156 2.003173 2.241046\n#> [25] 3.990754\n#> \n#> $value\n#> [1] 370.8601\n#> \n#> $counts\n#> function gradient \n#> 18036 NA \n#> \n#> $convergence\n#> [1] 1\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 19\n#> \n#> $barrier.value\n#> [1] -0.003366467\n\n\n结果有改善,目标函数值从 378.4208 减小到 370.8601,但还是没有收敛,可见 Nelder-Mead 方法在这个优化问题上收敛速度比较慢。下面考虑调用基于梯度的 BFGS 优化算法,这得先计算出来目标函数的梯度。\n\n# 输入 n 维向量,输出 n 维向量\ngr <- function(x) {\n n <- length(x)\n c(2 * (x[1] - 2), rep(0, n - 1))\n +8 * c(0, x[-1] - x[-n]^2)\n -16 * c(x[-n], 0) * c(x[-1] - x[-n]^2, 0)\n}\nconstrOptim(\n theta = rep(3, 25), # 初始值\n f = fn, # 目标函数\n grad = gr,\n method = \"BFGS\", \n control = list(maxit = 1000),\n ui = rbind(diag(rep(1, 25)), diag(rep(-1, 25))),\n ci = c(rep(2, 25), rep(-4, 25))\n)\n\n#> $par\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000001\n#> [25] 3.000000\n#> \n#> $value\n#> [1] 373\n#> \n#> $counts\n#> function gradient \n#> 3721 464 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 3\n#> \n#> $barrier.value\n#> [1] -0.003327104\n\n\n从结果来看,虽然已经收敛,但相比于 Nelder-Mead 方法,目标函数值变大了,可见已陷入局部最优解。\n\n20.4.4.3 optim()\n\n下面再使用函数 optim() 提供的 L-BFGS-B 算法求解优化问题。\n\noptim(\n par = rep(3, 25), fn = fn, gr = NULL, method = \"L-BFGS-B\",\n lower = rep(2, 25), upper = rep(4, 25)\n)\n\n#> $par\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109093\n#> [25] 4.000000\n#> \n#> $value\n#> [1] 368.1059\n#> \n#> $counts\n#> function gradient \n#> 6 6 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> [1] \"CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH\"\n\n\n发现结果和函数 nlminb() 的结果差不多了。\n\noptim(\n par = rep(3, 25), fn = fn, gr = gr, method = \"L-BFGS-B\",\n lower = rep(2, 25), upper = rep(4, 25)\n)\n\n#> $par\n#> [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3\n#> \n#> $value\n#> [1] 373\n#> \n#> $counts\n#> function gradient \n#> 2 2 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> [1] \"CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL\"\n\n\n然而,当在函数 optim() 里提供梯度信息的时候,虽然目标函数及梯度的计算次数变少了,求解速度提升了,但是最优解反而变差了,最优解和在函数 constrOptim() 中设置 method = \"BFGS\" 算法基本一致。\n\n20.4.4.4 ROI 包\n下面通过 ROI 包,分别调用求解器 nloptr.lbfgs 和 nloptr.directL ,发现前者同样陷入局部最优解,而后者可以获得与 nlminb() 函数一致的结果。\n\nop <- OP(\n objective = F_objective(fn, n = 25L, G = gr),\n bounds = V_bound(ld = 2, ud = 4, nobj = 25L)\n)\nnlp <- ROI_solve(op, solver = \"nloptr.lbfgs\", start = rep(3, 25))\n# 目标函数值\nnlp$objval\n\n#> [1] 373\n\n# 最优解\nnlp$solution\n\n#> [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3\n\n\n调全局优化算法。\n\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\n# 目标函数值\nnlp$objval\n\n#> [1] 368.1061\n\n# 最优解\nnlp$solution\n\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109093\n#> [25] 4.000000\n\n\n\n20.4.5 多元线性约束优化\n对于带线性约束的多元非线性优化问题,Base R 提供函数 constrOptim() 来求解,下面的示例来自其帮助文档,这是一个带线性约束的二次规划问题。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}}\n\\quad & - \\begin{bmatrix}\n0 \\\\\n5 \\\\\n0\n\\end{bmatrix}^{\\top} \\boldsymbol{x} +\\frac{1}{2} \\boldsymbol{x}^{\\top}\\boldsymbol{x} \\\\\n\\text{s.t.} \\quad & \\begin{bmatrix}\n-4 & 2 & 0 \\\\\n-3 & 1 & -2 \\\\\n0 & 0 & 1\n\\end{bmatrix}^{\\top}\\boldsymbol{x} \\geq \\begin{bmatrix}\n-8 \\\\\n2 \\\\\n0\n\\end{bmatrix}\n\\end{aligned}\n\\]\n\nfQP <- function(x) {\n -sum(c(0, 5, 0) * x) + 0.5 * sum(x * x)\n}\nAmat <- matrix(c(-4, -3, 0, 2, 1, 0, 0, -2, 1),\n ncol = 3, nrow = 3, byrow = FALSE\n)\nbvec <- c(-8, 2, 0)\n# 目标函数的梯度\ngQP <- function(x) {\n -c(0, 5, 0) + x\n}\nconstrOptim(\n theta = c(2, -1, -1), \n f = fQP, g = gQP, \n ui = t(Amat), ci = bvec\n)\n\n#> $par\n#> [1] 0.4761908 1.0476188 2.0952376\n#> \n#> $value\n#> [1] -2.380952\n#> \n#> $counts\n#> function gradient \n#> 406 81 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 3\n#> \n#> $barrier.value\n#> [1] -0.0006243894\n\n\n在上一节,箱式约束可以看作线性约束的一种特殊情况,ROI 包是支持箱式、线性、二次、锥和非线性约束的。因此,下面给出调用 ROI 包求解上述优化问题的代码。\n\nDmat <- diag(rep(1,3))\ndvec <- c(0, 5, 0)\nop <- OP(\n objective = Q_objective(Q = Dmat, L = -dvec),\n constraints = L_constraint(L = t(Amat), dir = rep(\">=\", 3), rhs = bvec),\n maximum = FALSE\n)\nnlp <- ROI_solve(op, solver = \"nloptr.slsqp\", start = c(0, 1, 2))\n# 最优解\nnlp$solution\n\n#> [1] 0.4761905 1.0476190 2.0952381\n\n# 目标函数值\nnlp$objval\n\n#> [1] -2.380952\n\n\n可见输出结果与函数 constrOptim() 是一致的。\n\n代码# quadprog\nlibrary(quadprog)\nsol <- solve.QP(\n Dmat = Dmat, dvec = dvec, Amat = Amat, bvec = bvec\n)\nsol\n\n\n\n20.4.6 多元非线性约束优化\nnloptr 包的非线性优化能力覆盖开源优化软件 Octave 和 Ipopt 。通过插件包 ROI.plugin.nloptr,ROI 包可以调用 nloptr 包内置的所有求解器,常用的求解器见下表。表中从优化器类型(局部还是全局优化器),支持的约束条件类型(箱式还是非线性),是否需要提供目标函数的梯度、黑塞和约束条件的雅可比矩阵信息等方面归纳各个求解器的能力。\n\n常用的非线性优化求解器\n\n求解器\n类型\n约束\n梯度\n黑塞\n雅可比\n\n\n\nnloptr.lbfgs\n局部\n箱式\n需要\n不需要\n不需要\n\n\nnloptr.slsqp\n局部\n非线性\n需要\n不需要\n需要\n\n\nnloptr.auglag\n局部\n非线性\n需要\n不需要\n需要\n\n\nnloptr.directL\n全局\n箱式\n不需要\n不需要\n不需要\n\n\nnloptr.isres\n全局\n非线性\n不需要\n不需要\n不需要\n\n\n\n\n20.4.6.1 非线性等式约束\n下面这个示例来自 Octave 软件的非线性优化帮助文档,Octave 中的函数 sqp() 使用序列二次优化求解器(successive quadratic programming solver)求解非线性优化问题,示例中该优化问题包含多个非线性等式约束。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} \\quad & \\exp\\big(\\prod_{i=1}^{5} x_i\\big) - \\frac{1}{2}(x_1^3 + x_2^3 + 1)^2 \\\\\n\\text{s.t.} \\quad & \\left\\{\n \\begin{array}{l}\n \\sum_{i=1}^{5}x_i^2 - 10 = 0 \\\\\n x_2 x_3 - 5x_4 x_5 = 0 \\\\\n x_1^3 + x_2^3 + 1 = 0\n \\end{array} \\right.\n\\end{aligned}\n\\]\n目标函数是非线性的,有 5 个变量,约束条件也是非线性的,有 3 个等式约束。先手动计算目标函数的梯度,等式约束的雅可比矩阵。\n\n# 目标函数\nfn <- function(x) {\n exp(prod(x)) - 0.5 * (x[1]^3 + x[2]^3 + 1)^2\n}\n# 目标函数的梯度\ngr <- function(x) {\n c(\n exp(prod(x)) * prod(x[-1]) - 3 * (x[1]^3 + x[2]^3 + 1) * x[1]^2,\n exp(prod(x)) * prod(x[-2]) - 3 * (x[1]^3 + x[2]^3 + 1) * x[2]^2,\n exp(prod(x)) * prod(x[-3]),\n exp(prod(x)) * prod(x[-4]),\n exp(prod(x)) * prod(x[-5])\n )\n}\n# 等式约束\nheq <- function(x) {\n c(\n sum(x^2) - 10,\n x[2] * x[3] - 5 * x[4] * x[5],\n x[1]^3 + x[2]^3 + 1\n )\n}\n# 等式约束的雅可比矩阵\nheq.jac <- function(x) {\n matrix(c(2 * x[1], 2 * x[2], 2 * x[3], 2 * x[4], 2 * x[5],\n 0, x[3], x[2], -5 * x[5], -5 * x[4],\n 3 * x[1]^2, 3 * x[2]^2, 0, 0, 0),\n ncol = 5, byrow = TRUE\n )\n}\n\n在 OP() 函数里定义目标优化的各个成分。\n\n# 定义目标优化\nop <- OP(\n # 5 个决策变量\n objective = F_objective(F = fn, n = 5L, G = gr), \n constraints = F_constraint(\n F = list(heq = heq),\n dir = \"==\",\n rhs = 0,\n # 等式约束的雅可比矩阵\n J = list(heq.jac = heq.jac)\n ),\n bounds = V_bound(ld = -Inf, ud = Inf, nobj = 5L),\n maximum = FALSE # 求最小\n)\nop\n\n#> ROI Optimization Problem:\n#> \n#> Minimize a nonlinear objective function of length 5 with\n#> - 5 continuous objective variables,\n#> \n#> subject to\n#> - 1 constraint of type nonlinear.\n#> - 5 lower and 0 upper non-standard variable bounds.\n\n\n调用 SQP(序列二次优化) 求解器 nloptr.slsqp 。\n\nnlp <- ROI_solve(op,\n solver = \"nloptr.slsqp\",\n start = c(-1.8, 1.7, 1.9, -0.8, -0.8)\n)\n# 最优解\nnlp$solution\n\n#> [1] -1.7171435 1.5957096 1.8272458 -0.7636431 -0.7636431\n\n# 目标函数值\nnlp$objval\n\n#> [1] 0.05394985\n\n\n计算结果和 Octave 的示例一致。\n\n20.4.6.2 多种非线性约束\n\n非线性等式约束\n非线性不等式约束,不等式约束包含等号\n箱式约束\n\n此优化问题来源于 Ipopt 官网的帮助文档,约束条件比较复杂。提供的初始值为 \\(x_0 = (1,5,5,1)\\),最优解为 \\(x_{\\star} = (1.00000000,4.74299963,3.82114998,1.37940829)\\)。优化问题的具体内容如下:\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} & \\quad x_1 x_4 (x_1 + x_2 + x_3) + x_3 \\\\\n\\text{s.t.} & \\quad \\left\\{\n \\begin{array}{l}\n x_1^2 + x_2^2 + x_3^2 + x_4^2 = 40 \\\\\n x_1 x_2 x_3 x_4 \\geq 25 \\\\\n 1 \\leq x_1, x_2, x_3, x_4 \\leq 5\n \\end{array} \\right.\n\\end{aligned}\n\\]\n下面用 ROI 调 nloptr 包求解,看结果是否和例子一致,nloptr 支持箱式约束且支持不等式约束包含等号。\n\n# 一个 4 维的目标函数\nfn <- function(x) {\n x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3]\n}\n# 目标函数的梯度\ngr <- function(x) {\n c(\n x[4] * (2 * x[1] + x[2] + x[3]), x[1] * x[4],\n x[1] * x[4] + 1, x[1] * (x[1] + x[2] + x[3])\n )\n}\n# 等式约束\nheq <- function(x) {\n sum(x^2)\n}\n# 等式约束的雅可比\nheq.jac <- function(x) {\n 2 * c(x[1], x[2], x[3], x[4])\n}\n# 不等式约束\nhin <- function(x) {\n prod(x)\n}\n# 不等式约束的雅可比\nhin.jac <- function(x) {\n c(prod(x[-1]), prod(x[-2]), prod(x[-3]), prod(x[-4]))\n}\n# 定义目标优化\nop <- OP(\n objective = F_objective(F = fn, n = 4L, G = gr), # 4 个决策变量\n constraints = F_constraint(\n F = list(heq = heq, hin = hin),\n dir = c(\"==\", \">=\"),\n rhs = c(40, 25),\n # 等式和不等式约束的雅可比\n J = list(heq.jac = heq.jac, hin.jac = hin.jac)\n ),\n bounds = V_bound(ld = 1, ud = 5, nobj = 4L),\n maximum = FALSE # 求最小\n)\n\n作为对比参考,先计算目标函数的初始值和最优值。\n\n# 目标函数初始值\nfn(c(1, 5, 5, 1))\n\n#> [1] 16\n\n# 目标函数最优值\nfn(c(1.00000000, 4.74299963, 3.82114998, 1.37940829))\n\n#> [1] 17.01402\n\n\n求解一般的非线性约束问题。\n\n求解器 nloptr.mma / nloptr.cobyla 仅支持非线性不等式约束,不支持等式约束。\n函数 nlminb() 只支持等式约束。\n\n因此,下面分别调用 nloptr.auglag、nloptr.slsqp 和 nloptr.isres 来求解上述优化问题。\n\nnlp <- ROI_solve(op, solver = \"nloptr.auglag\", start = c(1, 5, 5, 1))\nnlp$solution\n\n#> [1] 1.000000 4.743174 3.820922 1.379440\n\nnlp$objval\n\n#> [1] 17.01402\n\n\n\nnlp <- ROI_solve(op, solver = \"nloptr.slsqp\", start = c(1, 5, 5, 1))\nnlp$solution\n\n#> [1] 1.000000 4.742996 3.821155 1.379408\n\nnlp$objval\n\n#> [1] 17.01402\n\n\n\nnlp <- ROI_solve(op, solver = \"nloptr.isres\", start = c(1, 5, 5, 1))\nnlp$solution\n\n#> [1] 1.276795 4.607639 3.992841 1.093756\n\nnlp$objval\n\n#> [1] 17.78648\n\n\n可以看出,nloptr 提供的优化能力可以覆盖 Ipopt 求解器,从以上求解的情况来看,推荐使用 nloptr.slsqp 求解器,这也是 Octave 的选择。", + "text": "20.4 非线性优化\n非线性优化按是否带有约束,以及约束是线性还是非线性,分为无约束优化、箱式约束优化、线性约束优化和非线性约束优化。箱式约束可看作是线性约束的特殊情况。\n\nR 软件内置的非线性优化函数\n\n\nnlm()\nnlminb()\nconstrOptim()\noptim()\n\n\n\n无约束\n支持\n支持\n不支持\n支持\n\n\n箱式约束\n不支持\n支持\n支持\n支持\n\n\n线性约束\n不支持\n不支持\n支持\n不支持\n\n\n\nR 软件内置的 stats 包有 4 个数值优化方面的函数,函数 nlm() 可求解无约束优化问题,函数 nlminb() 可求解无约束、箱式约束优化问题,函数 constrOptim() 可求解箱式和线性约束优化。函数 optim() 是通用型求解器,包含多个优化算法,可求解无约束、箱式约束优化问题。尽管这些函数在 R 语言中长期存在,在统计中有广泛的使用,如非线性最小二乘 stats::nls(),极大似然估计 stats4::mle() 和广义最小二乘估计 nlme::gls() 等。但是,这些优化函数的求解能力有重合,使用语法不尽相同,对于非线性约束无能为力,下面仍然主要使用 ROI 包来求解多维非线性优化问题。\n\n20.4.1 一元非线性优化\n求如下一维分段非线性函数的最小值,其函数图像见 图 20.5 ,这个函数是不连续的,更不光滑。\n\\[\nf(x) =\n\\begin{cases}\n10 & x \\in (-\\infty,-1] \\\\\n\\exp(-\\frac{1}{|x-1|}) & x \\in (-1,4) \\\\\n10 & x \\in [4, +\\infty)\n\\end{cases}\n\\]\n\nfn <- function(x) ifelse(x > -1, ifelse(x < 4, exp(-1 / abs(x - 1)), 10), 10)\n\n\n代码op <- par(mar = c(4, 4, 0.5, 0.5))\ncurve(\n expr = fn, from = -2, to = 5, lwd = 2,\n panel.first = grid(),\n xlab = \"$x$\", ylab = \"$f(x)$\"\n)\non.exit(par(op), add = TRUE)\n\n\n\n\n\n\n图 20.5: 一维函数图像\n\n\n\n\n函数 optimize() 可以求解一元函数的极值问题,默认求极小值,参数 f 表示目标函数,参数 interval 表示搜索在此区间内最小值。函数返回一个列表,元素 minimum 表示极小值点,objective 表示极值点对应的目标函数值。\n\noptimize(f = fn, interval = c(-4, 20), maximum = FALSE)\n\n#> $minimum\n#> [1] 19.99995\n#> \n#> $objective\n#> [1] 10\n\noptimize(f = fn, interval = c(-7, 20), maximum = FALSE)\n\n#> $minimum\n#> [1] 0.9992797\n#> \n#> $objective\n#> [1] 0\n\n\n值得注意,对于不连续的分段函数,在不同的区间内搜索极值,可能获得不同的结果,可以绘制函数图像帮助选择最小值。\n\n20.4.2 多元隐函数优化\n这个优化问题来自 1stOpt 软件的帮助文档,下面利用 R 语言来求该多元隐函数的极值。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} y = & ~\\sin\\Big((yx_1 -0.5)^2 + 2x_1 x_2^2 - \\frac{y}{10} \\Big)\\cdot \\\\\n&~\\exp\\Big(-\\Big( \\big(x_1 - 0.5 -\\exp(-x_2 + y)\\big)^2 + x_2^2 - \\frac{y}{5} + 3 \\Big)\\Big)\n\\end{aligned}\n\\]\n其中, \\(x_1 \\in [-1,7],x_2 \\in [-2,2]\\) 。\n对于隐函数 \\(f(x_1,x_2,y)=0\\) ,常规的做法是先计算隐函数的偏导数,并令偏导数为 0,再求解非线性方程组,得到各个驻点,最后,将驻点代入原方程,比较驻点处函数值,根据优化目标选择最大或最小值。\n\\[\n\\begin{aligned}\n\\frac{\\partial f(x_1,x_2,y)}{\\partial x_1} = 0 \\\\\n\\frac{\\partial f(x_1,x_2,y)}{\\partial x_2} = 0\n\\end{aligned}\n\\]\n如果目标函数很复杂,隐函数偏导数难以计算,可以考虑暴力网格搜索。先估计隐函数值 \\(z\\) 的大致范围,给定 \\(x,y\\) 时,计算一元非线性方程的根。\n\nfn <- function(m) {\n subfun <- function(x) {\n f1 <- (m[1] * x - 0.5)^2 + 2 * m[1] * m[2]^2 - x / 10\n f2 <- -((m[1] - 0.5 - exp(-m[2] + x))^2 + m[2]^2 - x / 5 + 3)\n x - sin(f1) * exp(f2)\n }\n uniroot(f = subfun, interval = c(-1, 1))$root\n}\n\n在位置 \\((1,2)\\) 处函数值为 0.0007368468。\n\n# 测试函数 fn\nfn(m = c(1, 2))\n\n#> [1] 0.0007368468\n\n\n将目标区域网格化,通过一元非线性方程求根的方式获得每个格点处的函数值。\n\ndf <- expand.grid(\n x1 = seq(from = -1, to = 7, length.out = 81),\n x2 = seq(from = -2, to = 2, length.out = 41)\n)\n# 计算格点处的函数值\ndf$fn <- apply(df, 1, FUN = fn)\n\n在此基础上,绘制隐函数图像,如 图 20.6 所示,可以获得关于隐函数的大致情况。\n\n代码# 绘图\nwireframe(\n data = df, fn ~ x1 * x2,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]), ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 20.6: 隐函数图像\n\n\n\n\n最后,获得暴力网格搜索的结果,目标函数在 \\((2.8,-0.9)\\) 处取得最小值 \\(-0.02159723\\)。总的来说,这是一个近似结果,如果进一步缩小搜索区域,将网格划分得越细,搜索的结果将越接近全局最小值。\n\ndf[df$fn == min(df$fn), ]\n\n#> x1 x2 fn\n#> 930 2.8 -0.9 -0.02159723\n\n\n将求隐函数极值的问题转为含非线性等式约束的非线性优化问题。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} \\quad & y \\\\\n\\text{s.t.} \\quad & f(x_1,x_2,y) = 0\n\\end{aligned}\n\\]\n由于等式约束非常复杂,手动计算等式约束的雅可比矩阵不可行,可以用 numDeriv 包的函数 jacobian() 计算等式约束的雅可比矩阵。考虑到本例中仅含有一个等式约束,雅可比矩阵退化为梯度向量,这可以用 numDeriv 包的另一个函数 grad() 计算。\n\n# 等式约束\nheq <- function(x) {\n f1 <- (x[1] * x[3] - 0.5)^2 + 2 * x[1] * x[2]^2 - x[3] / 10\n f2 <- (x[1] - 0.5 - exp(-x[2] + x[3]))^2 + x[2]^2 - x[3] / 5 + 3\n x[3] - sin(f1) * exp(-f2)\n}\n# 等式约束的梯度\nheq.jac <- function(x) {\n numDeriv::grad(func = heq, x = x)\n}\n\n函数 L_objective() 表示含 1 个决策变量的线性目标函数,函数 F_constraint() 表示非线性等式约束。\n\n# 定义优化问题\nop <- OP(\n objective = L_objective(L = c(0, 0, 1)),\n constraints = F_constraint(\n # 等式约束\n F = list(heq = heq),\n dir = \"==\",\n rhs = 0,\n # 等式约束的雅可比\n J = list(heq.jac = heq.jac)\n ),\n bounds = V_bound(\n ld = -Inf, ud = Inf,\n li = c(1, 2), ui = c(1, 2),\n lb = c(-1, -2), ub = c(7, 2),\n nobj = 3L\n ),\n maximum = FALSE # 求最小\n)\nop\n\n#> ROI Optimization Problem:\n#> \n#> Minimize a linear objective function of length 3 with\n#> - 3 continuous objective variables,\n#> \n#> subject to\n#> - 1 constraint of type nonlinear.\n#> - 3 lower and 2 upper non-standard variable bounds.\n\n\n将网格搜索的结果作为初值,继续寻找更优的目标函数值。\n\nnlp <- ROI_solve(op,\n solver = \"nloptr.slsqp\", start = c(2.8, -0.9, -0.02159723)\n)\n# 最优解\nnlp$solution\n\n#> [1] 2.89826224 -0.85731584 -0.02335409\n\n# 目标函数值\nnlp$objval\n\n#> [1] -0.02335409\n\n\n可以发现,更优的目标函数值 \\(-0.02335\\) 在 \\((2.898,-0.8573)\\) 取得。\n\n20.4.3 多元无约束优化\n\n20.4.3.1 示例 1\nRastrigin 函数是一个 \\(n\\) 维优化问题测试函数。\n\\[\n\\min_{\\boldsymbol{x}} \\sum_{i=1}^{n}\\big(x_i^2 - 10 \\cos(2\\pi x_i) + 10\\big)\n\\]\n计算函数值的 R 代码如下:\n\nfn <- function(x) {\n sum(x^2 - 10 * cos(2 * pi * x) + 10)\n}\n\n绘制二维情形下的 Rastrigin 函数图像,如 图 20.7 所示,这是一个多模态的函数,有许多局部极小值。如果采用 BFGS 算法寻优容易陷入局部极值点。\n\n代码df <- expand.grid(\n x = seq(-4, 4, length.out = 151),\n y = seq(-4, 4, length.out = 151)\n)\n\ndf$fnxy <- apply(df, 1, fn)\nwireframe(\n data = df, fnxy ~ x * y,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]),\n ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 20.7: 二维 Rastrigin 函数图像\n\n\n\n\n不失一般性,考虑函数维数 \\(n=20\\) ,决策变量 \\(x_i \\in [-50,50], i = 1,2,\\ldots,n\\) 的情况。\n\nop <- OP(\n objective = F_objective(fn, n = 20L),\n bounds = V_bound(ld = -50, ud = 50, nobj = 20L)\n)\n\n调全局优化器求解优化问题。\n\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\n# 最优解\nnlp$solution\n\n#> [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n\n# 目标函数值\nnlp$objval\n\n#> [1] 0\n\n\n\n代码# R 语言内置的非线性优化函数\n# 无约束\nnlm(f = fn, p = rep(1, 20))\noptim(par = rep(1, 20), fn = fn, method = \"BFGS\")\noptim(par = rep(1, 20), fn = fn, method = \"Nelder-Mead\")\n\n# 箱式约束\noptim(par = rep(1, 20), fn = fn, \n lower = -50, upper = 50, method = \"L-BFGS-B\")\nnlminb(start = rep(1, 20), objective = fn, lower = -50, upper = 50)\nconstrOptim(\n theta = rep(1, 20), f = fn, grad = NULL,\n ui = rbind(diag(rep(1, 20)), diag(rep(-1, 20))),\n ci = c(rep(-50, 20), rep(-50, 20))\n)\n\n\n\n20.4.3.2 示例 2\n下面这个优化问题来自 1stOpt 软件帮助手册,是一个无约束非线性优化问题,它的目标函数非常复杂,一般的求解器都无法求解。最优解在 \\((7.999982, 7.999982)\\) 取得,目标函数值为 -7.978832。\n\\[\n\\begin{aligned}\n & \\min_{\\boldsymbol{x}} ~ \\cos(x_1)\\cos(x_2) - \\sum_{i=1}^{5}\\Big( (-1)^i \\cdot i \\cdot 2 \\cdot \\exp\\big(-500 \\cdot ( (x_1 - i \\cdot 2)^2 + (x_2 - i\\cdot 2)^2 ) \\big) \\Big)\n\\end{aligned}\n\\]\n目标函数分两步计算,先计算累加部分的通项,然后代入计算目标函数。\n\nsubfun <- function(i, m) {\n (-1)^i * i * 2 * exp(-500 * ((m[1] - i * 2)^2 + (m[2] - i * 2)^2))\n}\nfn <- function(x) {\n cos(x[1]) * cos(x[2]) -\n sum(mapply(FUN = subfun, i = 1:5, MoreArgs = list(m = x)))\n}\n\n直观起见,绘制目标函数在区域 \\([-50, 50] \\times [-50, 50]\\) 内的图像,如 图 20.8 (a) 所示,可以看到几乎没有变化的梯度,给寻优过程带来很大困难。再将区域 \\([0, 12] \\times [0, 12]\\) 上的三维图像绘制出来,如 图 20.8 (b) 所示,可见,有不少局部陷阱,且分布在 \\(x_2 = x_1\\) 的直线上。\n代码df <- expand.grid(\n x = seq(-50, 50, length.out = 101),\n y = seq(-50, 50, length.out = 101)\n)\ndf$fnxy <- apply(df, 1, fn)\nwireframe(\n data = df, fnxy ~ x * y,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]),\n ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\ndf <- expand.grid(\n x = seq(0, 12, length.out = 151),\n y = seq(0, 12, length.out = 151)\n)\ndf$fnxy <- apply(df, 1, fn)\nwireframe(\n data = df, fnxy ~ x * y,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]),\n ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90), alpha = 0.75, \n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n\n\n\n(a) 区域 \\([-50,50]\\times[-50,50]\\) 内的函数图像\n\n\n\n\n\n\n\n\n\n\n\n(b) 区域 \\([0,12]\\times[0,12]\\) 内的函数图像\n\n\n\n\n\n\n图 20.8: 局部放大前后的函数图像\n\n\n不失一般性,下面考虑 \\(x_1,x_2 \\in [-50,50]\\) ,面对如此复杂的函数,调用全局优化器 nloptr.directL 寻优。\n\nop <- OP(\n objective = F_objective(fn, n = 2L),\n bounds = V_bound(ld = -50, ud = 50, nobj = 2L)\n)\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\nnlp$solution\n\n#> [1] -21.99115 0.00000\n\nnlp$objval\n\n#> [1] -1\n\n\n结果还是陷入局部最优解。运筹优化方面的商业软件,著名的有 Lingo 和 Matlab,下面采用 Lingo 20 求解,Lingo 代码如下:\nSETS:\nP/1..5/;\nEndsets\nMin=@cos(x1) * @cos(x2) - @Sum(P(j): (-1)^j * j * 2 * @exp(-500 * ((x1 - j * 2)^2 + (x2 - j * 2)^2)));\n@Bnd(-50, x1, 50);\n@Bnd(-50, x2, 50);\n启用全局优化求解器后,在 \\((x_1 = 7.999982, x_2 = 7.999982)\\) 取得最小值 -7.978832。而默认未启用全局优化求解器的情况下,在 \\((x_1 = 18.84956, x_2 = -40.84070)\\) 取得局部极小值 -1.000000。\n在这种情况下,数值优化算法遇到瓶颈,可以采用一些全局随机优化算法,比如 GA 包 (Scrucca 2013) 实现的遗传算法。经过对参数的一些调优,可以获得与商业软件几乎一样的结果。\n\nnlp <- GA::ga(\n type = \"real-valued\",\n fitness = function(x) -fn(x),\n lower = c(0, 0), upper = c(12, 12),\n popSize = 500, maxiter = 100, \n monitor = FALSE, seed = 20232023\n)\n# 最优解\nnlp@solution\n\n#> x1 x2\n#> [1,] 7.999982 7.999981\n\n# 目标函数值\nnlp@fitnessValue\n\n#> [1] 7.978832\n\n\n其中,参数 type 指定决策变量的类型,type = \"real-valued\" 表示目标函数中的决策变量是实值连续的,参数 fitness 是目标函数,函数 ga() 对目标函数求极大,所以,对当前优化问题,添加了一个负号。 参数 popSize 控制种群大小,值越大,运行时间越长,搜索范围越广,获得的全局优化解越好。对于复杂的优化问题,可以不断增加种群大小来寻优,直至增加种群大小也不能获得更好的解。参数 maxiter 控制种群进化的次数,值越大,搜索次数可以越多,获得的解越好。参数 popSize 的影响大于参数 maxiter ,减少陷入局部最优解(陷阱)的可能。根据已知条件尽可能缩小可行域,以减少种群数量,进而缩短算法迭代时间。\n\n20.4.4 多元箱式约束优化\n有如下带箱式约束的多元非线性优化问题,该示例来自函数 nlminb() 的帮助文档,如果没有箱式约束,全局极小值点在 \\((1,1,\\cdots,1)\\) 处取得。\n\\[\n\\begin{aligned}\n \\min_{\\boldsymbol{x}} \\quad & (x_1 - 1)^2 + 4\\sum_{i =1}^{n -1}(x_{i+1} -x_i^2)^2 \\\\\n \\text{s.t.} \\quad & 2 \\leq x_1,x_2,\\cdots,x_n \\leq 4\n\\end{aligned}\n\\]\nR 语言编码的函数代码如下:\n\nfn <- function(x) {\n n <- length(x)\n sum(c(1, rep(4, n - 1)) * (x - c(1, x[-n])^2)^2)\n}\n\n在二维的情形下,可以绘制目标函数的三维图像,见 图 20.9 ,函数曲面和香蕉函数有些相似。\n\n代码dat <- expand.grid(\n x1 = seq(from = 0, to = 4, length.out = 41),\n x2 = seq(from = 0, to = 4, length.out = 41)\n)\ndat$fn <- apply(dat, 1, fn)\n\nwireframe(\n data = dat, fn ~ x1 * x2,\n shade = TRUE, drape = FALSE,\n xlab = expression(x[1]), ylab = expression(x[2]),\n zlab = list(expression(\n italic(f) ~ group(\"(\", list(x[1], x[2]), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 20.9: 类香蕉函数的曲面图\n\n\n\n\nBase R 有 3 个函数可以求解这个优化问题,分别是 nlminb() 、constrOptim()和optim() ,因此,不妨在这个示例上,用这 3 个函数分别求解该优化问题,介绍它们的用法,最后,介绍 ROI 包实现的方法。这个优化问题的目标函数是 \\(n\\) 维非线性的,不失一般性,又不让问题变得太过简单,下面考虑 25 维的情况,\n\n20.4.4.1 nlminb()\n\n函数 nlminb() 参数 start 指定迭代初始值,参数 objective 指定目标函数,参数 lower 和 upper 分别指定箱式约束中的下界和上界。给定初值 \\((3, 3, \\cdots, 3)\\),下界 \\((2,2,\\cdots,2)\\) 和上界 \\((4,4,\\cdots,4)\\) 。nlminb() 帮助文档说该函数出于历史兼容性的原因尚且存在,一般来说,这个函数会一直维护下去的。\n\nnlminb(\n start = rep(3, 25), objective = fn,\n lower = rep(2, 25), upper = rep(4, 25)\n)\n\n#> $par\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109093\n#> [25] 4.000000\n#> \n#> $objective\n#> [1] 368.1059\n#> \n#> $convergence\n#> [1] 0\n#> \n#> $iterations\n#> [1] 6\n#> \n#> $evaluations\n#> function gradient \n#> 10 177 \n#> \n#> $message\n#> [1] \"relative convergence (4)\"\n\n\n从返回结果来看,求解过程成功收敛,最优解的前 23 个决策变量取值为 2,在箱式约束的边界上,第 24 个分量没有边界上,而在内部,第 25 个决策变量取值为 4,也在边界上。目标函数值为 368.1059。\n\n20.4.4.2 constrOptim()\n\n使用 constrOptim() 函数求解,默认求极小,需将箱式或线性不等式约束写成矩阵形式,即 \\(Ax \\geq b\\) 的形式,参数 ui 是 \\(k \\times n\\) 的约束矩阵 \\(A\\),ci 是右侧 \\(k\\) 维约束向量 \\(b\\)。以上面的优化问题为例,将箱式约束 \\(2 \\leq x_1,x_2 \\leq 4\\) 转化为矩阵形式,约束矩阵和向量分别为:\n\\[\nA = \\begin{bmatrix}\n1 & 0 \\\\\n0 & 1 \\\\\n-1 & 0 \\\\\n0 & -1\n\\end{bmatrix}, \\quad\nb = \\begin{bmatrix}\n2 \\\\\n2 \\\\\n-4 \\\\\n-4\n\\end{bmatrix}\n\\]\n\nconstrOptim(\n theta = rep(3, 25), # 初始值\n f = fn, # 目标函数\n method = \"Nelder-Mead\", # 没有提供梯度,则必须用 Nelder-Mead 方法\n ui = rbind(diag(rep(1, 25)), diag(rep(-1, 25))),\n ci = c(rep(2, 25), rep(-4, 25))\n)\n\n#> $par\n#> [1] 2.006142 2.002260 2.003971 2.003967 2.004143 2.004255 2.001178 2.002990\n#> [9] 2.003883 2.006029 2.017345 2.009236 2.000949 2.007793 2.025831 2.007896\n#> [17] 2.004514 2.004381 2.008771 2.015695 2.005803 2.009127 2.017988 2.257782\n#> [25] 3.999846\n#> \n#> $value\n#> [1] 378.4208\n#> \n#> $counts\n#> function gradient \n#> 12048 NA \n#> \n#> $convergence\n#> [1] 1\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 25\n#> \n#> $barrier.value\n#> [1] -0.003278963\n\n\n返回结果中 convergence = 1 表示迭代次数到达默认的极限 maxit = 500 。参考函数 nlminb() 的求解结果,可知还没有收敛。如果没有提供梯度,则必须用 Nelder-Mead 方法,下面增加迭代次数到 1000。\n\nconstrOptim(\n theta = rep(3, 25), # 初始值\n f = fn, # 目标函数\n method = \"Nelder-Mead\", \n control = list(maxit = 1000),\n ui = rbind(diag(rep(1, 25)), diag(rep(-1, 25))),\n ci = c(rep(2, 25), rep(-4, 25))\n)\n\n#> $par\n#> [1] 2.000081 2.000142 2.001919 2.000584 2.000007 2.000003 2.001097 2.001600\n#> [9] 2.000207 2.000042 2.000250 2.000295 2.000580 2.002165 2.000453 2.000932\n#> [17] 2.000456 2.000363 2.000418 2.000474 2.009483 2.001156 2.003173 2.241046\n#> [25] 3.990754\n#> \n#> $value\n#> [1] 370.8601\n#> \n#> $counts\n#> function gradient \n#> 18036 NA \n#> \n#> $convergence\n#> [1] 1\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 19\n#> \n#> $barrier.value\n#> [1] -0.003366467\n\n\n结果有改善,目标函数值从 378.4208 减小到 370.8601,但还是没有收敛,可见 Nelder-Mead 方法在这个优化问题上收敛速度比较慢。下面考虑调用基于梯度的 BFGS 优化算法,这得先计算出来目标函数的梯度。\n\n# 输入 n 维向量,输出 n 维向量\ngr <- function(x) {\n n <- length(x)\n c(2 * (x[1] - 2), rep(0, n - 1))\n +8 * c(0, x[-1] - x[-n]^2)\n -16 * c(x[-n], 0) * c(x[-1] - x[-n]^2, 0)\n}\nconstrOptim(\n theta = rep(3, 25), # 初始值\n f = fn, # 目标函数\n grad = gr,\n method = \"BFGS\", \n control = list(maxit = 1000),\n ui = rbind(diag(rep(1, 25)), diag(rep(-1, 25))),\n ci = c(rep(2, 25), rep(-4, 25))\n)\n\n#> $par\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000001\n#> [25] 3.000000\n#> \n#> $value\n#> [1] 373\n#> \n#> $counts\n#> function gradient \n#> 3721 464 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 3\n#> \n#> $barrier.value\n#> [1] -0.003327104\n\n\n从结果来看,虽然已经收敛,但相比于 Nelder-Mead 方法,目标函数值变大了,可见已陷入局部最优解。\n\n20.4.4.3 optim()\n\n下面再使用函数 optim() 提供的 L-BFGS-B 算法求解优化问题。\n\noptim(\n par = rep(3, 25), fn = fn, gr = NULL, method = \"L-BFGS-B\",\n lower = rep(2, 25), upper = rep(4, 25)\n)\n\n#> $par\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109093\n#> [25] 4.000000\n#> \n#> $value\n#> [1] 368.1059\n#> \n#> $counts\n#> function gradient \n#> 6 6 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> [1] \"CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH\"\n\n\n发现结果和函数 nlminb() 的结果差不多了。\n\noptim(\n par = rep(3, 25), fn = fn, gr = gr, method = \"L-BFGS-B\",\n lower = rep(2, 25), upper = rep(4, 25)\n)\n\n#> $par\n#> [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3\n#> \n#> $value\n#> [1] 373\n#> \n#> $counts\n#> function gradient \n#> 2 2 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> [1] \"CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL\"\n\n\n然而,当在函数 optim() 里提供梯度信息的时候,虽然目标函数及梯度的计算次数变少了,求解速度提升了,但是最优解反而变差了,最优解和在函数 constrOptim() 中设置 method = \"BFGS\" 算法基本一致。\n\n20.4.4.4 ROI 包\n下面通过 ROI 包,分别调用求解器 nloptr.lbfgs 和 nloptr.directL ,发现前者同样陷入局部最优解,而后者可以获得与 nlminb() 函数一致的结果。\n\nop <- OP(\n objective = F_objective(fn, n = 25L, G = gr),\n bounds = V_bound(ld = 2, ud = 4, nobj = 25L)\n)\nnlp <- ROI_solve(op, solver = \"nloptr.lbfgs\", start = rep(3, 25))\n# 目标函数值\nnlp$objval\n\n#> [1] 373\n\n# 最优解\nnlp$solution\n\n#> [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3\n\n\n调全局优化算法。\n\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\n# 目标函数值\nnlp$objval\n\n#> [1] 368.1059\n\n# 最优解\nnlp$solution\n\n#> [1] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [9] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000\n#> [17] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.109096\n#> [25] 4.000000\n\n\n\n20.4.5 多元线性约束优化\n对于带线性约束的多元非线性优化问题,Base R 提供函数 constrOptim() 来求解,下面的示例来自其帮助文档,这是一个带线性约束的二次规划问题。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}}\n\\quad & - \\begin{bmatrix}\n0 \\\\\n5 \\\\\n0\n\\end{bmatrix}^{\\top} \\boldsymbol{x} +\\frac{1}{2} \\boldsymbol{x}^{\\top}\\boldsymbol{x} \\\\\n\\text{s.t.} \\quad & \\begin{bmatrix}\n-4 & 2 & 0 \\\\\n-3 & 1 & -2 \\\\\n0 & 0 & 1\n\\end{bmatrix}^{\\top}\\boldsymbol{x} \\geq \\begin{bmatrix}\n-8 \\\\\n2 \\\\\n0\n\\end{bmatrix}\n\\end{aligned}\n\\]\n\nfQP <- function(x) {\n -sum(c(0, 5, 0) * x) + 0.5 * sum(x * x)\n}\nAmat <- matrix(c(-4, -3, 0, 2, 1, 0, 0, -2, 1),\n ncol = 3, nrow = 3, byrow = FALSE\n)\nbvec <- c(-8, 2, 0)\n# 目标函数的梯度\ngQP <- function(x) {\n -c(0, 5, 0) + x\n}\nconstrOptim(\n theta = c(2, -1, -1), \n f = fQP, g = gQP, \n ui = t(Amat), ci = bvec\n)\n\n#> $par\n#> [1] 0.4761908 1.0476188 2.0952376\n#> \n#> $value\n#> [1] -2.380952\n#> \n#> $counts\n#> function gradient \n#> 406 81 \n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> NULL\n#> \n#> $outer.iterations\n#> [1] 3\n#> \n#> $barrier.value\n#> [1] -0.0006243894\n\n\n在上一节,箱式约束可以看作线性约束的一种特殊情况,ROI 包是支持箱式、线性、二次、锥和非线性约束的。因此,下面给出调用 ROI 包求解上述优化问题的代码。\n\nDmat <- diag(rep(1,3))\ndvec <- c(0, 5, 0)\nop <- OP(\n objective = Q_objective(Q = Dmat, L = -dvec),\n constraints = L_constraint(L = t(Amat), dir = rep(\">=\", 3), rhs = bvec),\n maximum = FALSE\n)\nnlp <- ROI_solve(op, solver = \"nloptr.slsqp\", start = c(0, 1, 2))\n# 最优解\nnlp$solution\n\n#> [1] 0.4761905 1.0476190 2.0952381\n\n# 目标函数值\nnlp$objval\n\n#> [1] -2.380952\n\n\n可见输出结果与函数 constrOptim() 是一致的。\n\n代码# quadprog\nlibrary(quadprog)\nsol <- solve.QP(\n Dmat = Dmat, dvec = dvec, Amat = Amat, bvec = bvec\n)\nsol\n\n\n\n20.4.6 多元非线性约束优化\nnloptr 包的非线性优化能力覆盖开源优化软件 Octave 和 Ipopt 。通过插件包 ROI.plugin.nloptr,ROI 包可以调用 nloptr 包内置的所有求解器,常用的求解器见下表。表中从优化器类型(局部还是全局优化器),支持的约束条件类型(箱式还是非线性),是否需要提供目标函数的梯度、黑塞和约束条件的雅可比矩阵信息等方面归纳各个求解器的能力。\n\n常用的非线性优化求解器\n\n求解器\n类型\n约束\n梯度\n黑塞\n雅可比\n\n\n\nnloptr.lbfgs\n局部\n箱式\n需要\n不需要\n不需要\n\n\nnloptr.slsqp\n局部\n非线性\n需要\n不需要\n需要\n\n\nnloptr.auglag\n局部\n非线性\n需要\n不需要\n需要\n\n\nnloptr.directL\n全局\n箱式\n不需要\n不需要\n不需要\n\n\nnloptr.isres\n全局\n非线性\n不需要\n不需要\n不需要\n\n\n\n\n20.4.6.1 非线性等式约束\n下面这个示例来自 Octave 软件的非线性优化帮助文档,Octave 中的函数 sqp() 使用序列二次优化求解器(successive quadratic programming solver)求解非线性优化问题,示例中该优化问题包含多个非线性等式约束。\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} \\quad & \\exp\\big(\\prod_{i=1}^{5} x_i\\big) - \\frac{1}{2}(x_1^3 + x_2^3 + 1)^2 \\\\\n\\text{s.t.} \\quad & \\left\\{\n \\begin{array}{l}\n \\sum_{i=1}^{5}x_i^2 - 10 = 0 \\\\\n x_2 x_3 - 5x_4 x_5 = 0 \\\\\n x_1^3 + x_2^3 + 1 = 0\n \\end{array} \\right.\n\\end{aligned}\n\\]\n目标函数是非线性的,有 5 个变量,约束条件也是非线性的,有 3 个等式约束。先手动计算目标函数的梯度,等式约束的雅可比矩阵。\n\n# 目标函数\nfn <- function(x) {\n exp(prod(x)) - 0.5 * (x[1]^3 + x[2]^3 + 1)^2\n}\n# 目标函数的梯度\ngr <- function(x) {\n c(\n exp(prod(x)) * prod(x[-1]) - 3 * (x[1]^3 + x[2]^3 + 1) * x[1]^2,\n exp(prod(x)) * prod(x[-2]) - 3 * (x[1]^3 + x[2]^3 + 1) * x[2]^2,\n exp(prod(x)) * prod(x[-3]),\n exp(prod(x)) * prod(x[-4]),\n exp(prod(x)) * prod(x[-5])\n )\n}\n# 等式约束\nheq <- function(x) {\n c(\n sum(x^2) - 10,\n x[2] * x[3] - 5 * x[4] * x[5],\n x[1]^3 + x[2]^3 + 1\n )\n}\n# 等式约束的雅可比矩阵\nheq.jac <- function(x) {\n matrix(c(2 * x[1], 2 * x[2], 2 * x[3], 2 * x[4], 2 * x[5],\n 0, x[3], x[2], -5 * x[5], -5 * x[4],\n 3 * x[1]^2, 3 * x[2]^2, 0, 0, 0),\n ncol = 5, byrow = TRUE\n )\n}\n\n在 OP() 函数里定义目标优化的各个成分。\n\n# 定义目标优化\nop <- OP(\n # 5 个决策变量\n objective = F_objective(F = fn, n = 5L, G = gr), \n constraints = F_constraint(\n F = list(heq = heq),\n dir = \"==\",\n rhs = 0,\n # 等式约束的雅可比矩阵\n J = list(heq.jac = heq.jac)\n ),\n bounds = V_bound(ld = -Inf, ud = Inf, nobj = 5L),\n maximum = FALSE # 求最小\n)\nop\n\n#> ROI Optimization Problem:\n#> \n#> Minimize a nonlinear objective function of length 5 with\n#> - 5 continuous objective variables,\n#> \n#> subject to\n#> - 1 constraint of type nonlinear.\n#> - 5 lower and 0 upper non-standard variable bounds.\n\n\n调用 SQP(序列二次优化) 求解器 nloptr.slsqp 。\n\nnlp <- ROI_solve(op,\n solver = \"nloptr.slsqp\",\n start = c(-1.8, 1.7, 1.9, -0.8, -0.8)\n)\n# 最优解\nnlp$solution\n\n#> [1] -1.7171435 1.5957096 1.8272458 -0.7636431 -0.7636431\n\n# 目标函数值\nnlp$objval\n\n#> [1] 0.05394985\n\n\n计算结果和 Octave 的示例一致。\n\n20.4.6.2 多种非线性约束\n\n非线性等式约束\n非线性不等式约束,不等式约束包含等号\n箱式约束\n\n此优化问题来源于 Ipopt 官网的帮助文档,约束条件比较复杂。提供的初始值为 \\(x_0 = (1,5,5,1)\\),最优解为 \\(x_{\\star} = (1.00000000,4.74299963,3.82114998,1.37940829)\\)。优化问题的具体内容如下:\n\\[\n\\begin{aligned}\n\\min_{\\boldsymbol{x}} & \\quad x_1 x_4 (x_1 + x_2 + x_3) + x_3 \\\\\n\\text{s.t.} & \\quad \\left\\{\n \\begin{array}{l}\n x_1^2 + x_2^2 + x_3^2 + x_4^2 = 40 \\\\\n x_1 x_2 x_3 x_4 \\geq 25 \\\\\n 1 \\leq x_1, x_2, x_3, x_4 \\leq 5\n \\end{array} \\right.\n\\end{aligned}\n\\]\n下面用 ROI 调 nloptr 包求解,看结果是否和例子一致,nloptr 支持箱式约束且支持不等式约束包含等号。\n\n# 一个 4 维的目标函数\nfn <- function(x) {\n x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3]\n}\n# 目标函数的梯度\ngr <- function(x) {\n c(\n x[4] * (2 * x[1] + x[2] + x[3]), x[1] * x[4],\n x[1] * x[4] + 1, x[1] * (x[1] + x[2] + x[3])\n )\n}\n# 等式约束\nheq <- function(x) {\n sum(x^2)\n}\n# 等式约束的雅可比\nheq.jac <- function(x) {\n 2 * c(x[1], x[2], x[3], x[4])\n}\n# 不等式约束\nhin <- function(x) {\n prod(x)\n}\n# 不等式约束的雅可比\nhin.jac <- function(x) {\n c(prod(x[-1]), prod(x[-2]), prod(x[-3]), prod(x[-4]))\n}\n# 定义目标优化\nop <- OP(\n objective = F_objective(F = fn, n = 4L, G = gr), # 4 个决策变量\n constraints = F_constraint(\n F = list(heq = heq, hin = hin),\n dir = c(\"==\", \">=\"),\n rhs = c(40, 25),\n # 等式和不等式约束的雅可比\n J = list(heq.jac = heq.jac, hin.jac = hin.jac)\n ),\n bounds = V_bound(ld = 1, ud = 5, nobj = 4L),\n maximum = FALSE # 求最小\n)\n\n作为对比参考,先计算目标函数的初始值和最优值。\n\n# 目标函数初始值\nfn(c(1, 5, 5, 1))\n\n#> [1] 16\n\n# 目标函数最优值\nfn(c(1.00000000, 4.74299963, 3.82114998, 1.37940829))\n\n#> [1] 17.01402\n\n\n求解一般的非线性约束问题。\n\n求解器 nloptr.mma / nloptr.cobyla 仅支持非线性不等式约束,不支持等式约束。\n函数 nlminb() 只支持等式约束。\n\n因此,下面分别调用 nloptr.auglag、nloptr.slsqp 和 nloptr.isres 来求解上述优化问题。\n\nnlp <- ROI_solve(op, solver = \"nloptr.auglag\", start = c(1, 5, 5, 1))\nnlp$solution\n\n#> [1] 1.000000 4.743174 3.820922 1.379440\n\nnlp$objval\n\n#> [1] 17.01402\n\n\n\nnlp <- ROI_solve(op, solver = \"nloptr.slsqp\", start = c(1, 5, 5, 1))\nnlp$solution\n\n#> [1] 1.000000 4.742996 3.821155 1.379408\n\nnlp$objval\n\n#> [1] 17.01402\n\n\n\nnlp <- ROI_solve(op, solver = \"nloptr.isres\", start = c(1, 5, 5, 1))\nnlp$solution\n\n#> [1] 1.131671 4.721246 3.868353 1.216995\n\nnlp$objval\n\n#> [1] 17.25686\n\n\n可以看出,nloptr 提供的优化能力可以覆盖 Ipopt 求解器,从以上求解的情况来看,推荐使用 nloptr.slsqp 求解器,这也是 Octave 的选择。", "crumbs": [ "优化建模", "20  数值优化" @@ -1399,7 +1399,7 @@ "href": "optimization-problems.html#sec-gaussian-process-regression", "title": "21  优化问题", "section": "\n21.3 高斯过程回归", - "text": "21.3 高斯过程回归\n高斯过程回归模型如下:\n\\[\n\\boldsymbol{y}(x) = D\\boldsymbol{\\beta} + S(x)\n\\]\n其中,\\(\\boldsymbol{\\beta}\\) 是一个 \\(p\\times 1\\) 维列向量,随机过程 \\(S(x)\\) 是均值为零,协方差为 \\(V_{\\boldsymbol{\\theta}}\\) 的平稳高斯过程,协方差矩阵 \\(V_{\\boldsymbol{\\theta}}\\) 的元素如下:\n\\[\n\\mathsf{Cov}\\{S(x_i), S(x_j)\\} = \\sigma^2 \\exp(-\\|x_i - x_j\\| / \\phi)\n\\]\n其中, \\(\\boldsymbol{\\theta} = (\\sigma^2,\\phi)\\) 表示与协方差矩阵相关的参数,随机过程 \\(S(x)\\) 的一个实现服从多元正态分布 \\(\\mathrm{MVN}(\\boldsymbol{0},V_{\\boldsymbol{\\theta}})\\) ,则 \\(\\boldsymbol{y}(x)\\) 也服从多元正态分布 \\(\\mathrm{MVN}(D\\boldsymbol{\\beta},V_{\\boldsymbol{\\theta}})\\) 。参数 \\(\\boldsymbol{\\beta}\\) 的广义最小二乘估计为 \\(\\hat{\\boldsymbol{\\beta}}(\\boldsymbol{\\theta}) = (D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}D)^{-1} D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}\\boldsymbol{y}\\) ,关于参数 \\(\\boldsymbol{\\theta}\\) 的剖面对数似然函数如下:\n\\[\n\\log \\mathcal{L}(\\boldsymbol{\\theta}) = -\\frac{n}{2}\\log (2\\pi) - \\frac{1}{2}\\log (\\det V_{\\boldsymbol{\\theta}}) -\\frac{1}{2}\\boldsymbol{y}^{\\top}V_{\\boldsymbol{\\theta}}^{-1}\\big(I - D(D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}D)^{-1}D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}\\big)\\boldsymbol{y}\n\\]\n下面考虑一个来自 MASS 包真实数据 topo。topo 数据集最初来自 John C. Davis (1973年)所著的书《Statistics and Data Analysis in Geology》。后来, J. J. Warnes 和 B. D. Ripley (1987年)以该数据集为例指出空间高斯过程的协方差函数的似然估计中存在的问题(Warnes 和 Ripley 1987),并将其作为数据集 topo 放在 MASS 包里。Paulo J. Ribeiro Jr 和 Peter J. Diggle (2001年)将该数据集打包成自定义的 geodata 数据类型,放在 geoR 包里,并在他俩合著的书《Model-based Geostatistics》中多次出现。topo 是空间地形数据集,包含有 52 行 3 列,数据点是 310 平方英尺范围内的海拔高度数据,x 坐标每单位 50 英尺,y 坐标单位同 x 坐标,海拔高度 z 单位是英尺。\n\nlibrary(MASS)\ndata(topo)\nstr(topo)\n\n#> 'data.frame': 52 obs. of 3 variables:\n#> $ x: num 0.3 1.4 2.4 3.6 5.7 1.6 2.9 3.4 3.4 4.8 ...\n#> $ y: num 6.1 6.2 6.1 6.2 6.2 5.2 5.1 5.3 5.7 5.6 ...\n#> $ z: int 870 793 755 690 800 800 730 728 710 780 ...\n\n\n根据 topo 数据集, \\(D = \\boldsymbol{1}\\) 是一个 \\(52 \\times 1\\) 的列向量,\\(\\boldsymbol{\\beta} = \\beta\\) 是一个截距项。设置参数初值 \\((\\sigma,\\phi) = (65,2)\\) 。为了与 Ripley 的论文中的图比较,下面扔掉了对数似然函数中常数项,用 R 语言编码的似然函数如下:\n\nlog_lik <- function(x) {\n n <- nrow(topo)\n D <- t(t(rep(1, n)))\n Sigma <- x[1]^2 * exp(-as.matrix(dist(topo[, c(\"x\", \"y\")])) / x[2])\n inv_Sigma <- solve(Sigma)\n P <- diag(1, n) - D %*% solve(t(D) %*% solve(Sigma, D), t(D)) %*% inv_Sigma\n as.vector(-1 / 2 * log(det(Sigma)) - 1 / 2 * t(topo[, \"z\"]) %*% inv_Sigma %*% P %*% topo[, \"z\"])\n}\nlog_lik(x = c(65, 2))\n\n#> [1] -207.1364\n\n\n关于参数的偏导计算复杂,就不计算梯度了,下面调用 R 软件内置的 nlminb 优化器。发现,对不同的初始值,收敛到不同的位置,目标函数值非常接近。\n\nop <- OP(\n objective = F_objective(log_lik, n = 2L),\n bounds = V_bound(lb = c(55, 5), ub = c(75, 8)),\n maximum = TRUE\n)\nnlp <- ROI_solve(op, solver = \"nlminb\", start = c(65, 2))\nnlp$solution\n\n#> [1] 65 5\n\nnlp$objval\n\n#> [1] -197.4197\n\n\n如果初始值靠近局部极值点,则就近收敛到该极值点,比如初值 \\((65, 7)\\) , \\((70, 7.5)\\) 。\n\nnlp <- ROI_solve(op, solver = \"nlminb\", start = c(65, 7))\nnlp$solution\n\n#> [1] 65 7\n\nnlp$objval\n\n#> [1] -196.9407\n\nnlp <- ROI_solve(op, solver = \"nlminb\", start = c(70, 7.5))\nnlp$solution\n\n#> [1] 70.0 7.5\n\nnlp$objval\n\n#> [1] -196.8441\n\n\n尝试调用来自 nloptr 包的全局优化求解器 nloptr.directL ,大大小小的坑都跳过去了,结果还是比较满意的。\n\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\nnlp$solution\n\n#> [1] 63.934432 6.121382\n\nnlp$objval\n\n#> [1] -196.8158\n\n\n目标区域网格化,计算格点处的似然函数值,然后绘制似然函数图像。\n\ndat <- expand.grid(\n sigma = seq(from = 55, to = 75, length.out = 41),\n phi = seq(from = 5, to = 8, length.out = 31)\n)\ndat$fn <- apply(dat, 1, log_lik)\n\n似然函数关于参数 \\((\\sigma,\\phi)\\) 的三维曲面见 图 21.3 。\n\n代码wireframe(\n data = dat, fn ~ sigma * phi,\n shade = TRUE, drape = FALSE,\n xlab = expression(sigma), ylab = expression(phi),\n zlab = list(expression(\n italic(log-lik) ~ group(\"(\", list(sigma, phi), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 21.3: 对数似然函数的曲面图\n\n\n\n\n等高线图呈现一道非常长且平滑的山岭 long flat ridge,山岭上布满许多局部极大值,普通的数值优化求解器常常陷入其中,只有全局优化求解器才可能找到全局极大值点。高斯过程回归模型的对数似然函数是非凸的,多模态的。\n\n代码levelplot(fn ~ sigma * phi,\n data = dat, aspect = 1,\n xlim = c(54.5, 75.5), ylim = c(4.9, 8.1),\n xlab = expression(sigma), ylab = expression(phi),\n col.regions = cm.colors, contour = TRUE,\n scales = list(\n x = list(alternating = 1, tck = c(1, 0)),\n y = list(alternating = 1, tck = c(1, 0))\n ),\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = 0, units = \"inches\"),\n right.padding = list(x = 0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -.5, units = \"inches\"),\n top.padding = list(x = -.5, units = \"inches\")\n )\n )\n)\n\n\n\n\n\n\n图 21.4: 对数似然函数的等高线图\n\n\n\n\n上图中没有看到许多局部极小值,与作者论文中的图 1 似乎不符。原因是什么?似然函数中涉及到的矩阵运算不精确,应该设计精度更高的运算方式?lattice 包绘图引擎无法展示更加细微的差异?还有一种解释,上图是对的,算法迭代时,对不同的初值,常常收敛到不同的结果,而这些不同的结果都位于岭上不同位置,对应的对数似然值却又几乎一样。\n作为验证,下面调用 nlme 包的 gls() 函数拟合数据,参数的极大似然估计结果与全局优化求解器的结果比较一致。参数估计结果 \\((\\sigma, \\phi)= (63.93429, 6.121352)\\) ,对数似然函数值为 -244.6006 ,自编的似然函数 log_lik() 在最优解处的值为 -196.8158,再加上之前扔掉的常数项 -52 / 2 * log(2 * pi) ,就是 -244.6006 ,丝毫不差。\n\nlibrary(nlme)\nfit_topo_ml <- gls(z ~ 1,\n data = topo, method = \"ML\",\n correlation = corExp(value = 65, form = ~ x + y)\n)\nsummary(fit_topo_ml)\n\n#> Generalized least squares fit by maximum likelihood\n#> Model: z ~ 1 \n#> Data: topo \n#> AIC BIC logLik\n#> 495.2012 501.055 -244.6006\n#> \n#> Correlation Structure: Exponential spatial correlation\n#> Formula: ~x + y \n#> Parameter estimate(s):\n#> range \n#> 6.121352 \n#> \n#> Coefficients:\n#> Value Std.Error t-value p-value\n#> (Intercept) 863.708 45.49859 18.98318 0\n#> \n#> Standardized residuals:\n#> Min Q1 Med Q3 Max \n#> -2.7169766 -1.1919732 -0.5272282 0.1453374 1.5061096 \n#> \n#> Residual standard error: 63.93429 \n#> Degrees of freedom: 52 total; 51 residual\n\n\n如果使用限制极大似然估计,会发现参数估计结果与之相距甚远,而对数似然函数值相差无几。参数估计结果 \\((\\sigma,\\phi) = (128.8275, 25.47324)\\) 。\n\nfit_topo_reml <- gls(z ~ 1,\n data = topo, method = \"REML\",\n correlation = corExp(value = 65, form = ~ x + y)\n)\nsummary(fit_topo_reml)\n\n#> Generalized least squares fit by REML\n#> Model: z ~ 1 \n#> Data: topo \n#> AIC BIC logLik\n#> 485.1558 490.9513 -239.5779\n#> \n#> Correlation Structure: Exponential spatial correlation\n#> Formula: ~x + y \n#> Parameter estimate(s):\n#> range \n#> 25.47324 \n#> \n#> Coefficients:\n#> Value Std.Error t-value p-value\n#> (Intercept) 877.8956 116.7163 7.521619 0\n#> \n#> Standardized residuals:\n#> Min Q1 Med Q3 Max \n#> -1.45850506 -0.70167923 -0.37178079 -0.03800119 0.63732032 \n#> \n#> Residual standard error: 128.8275 \n#> Degrees of freedom: 52 total; 51 residual", + "text": "21.3 高斯过程回归\n高斯过程回归模型如下:\n\\[\n\\boldsymbol{y}(x) = D\\boldsymbol{\\beta} + S(x)\n\\]\n其中,\\(\\boldsymbol{\\beta}\\) 是一个 \\(p\\times 1\\) 维列向量,随机过程 \\(S(x)\\) 是均值为零,协方差为 \\(V_{\\boldsymbol{\\theta}}\\) 的平稳高斯过程,协方差矩阵 \\(V_{\\boldsymbol{\\theta}}\\) 的元素如下:\n\\[\n\\mathsf{Cov}\\{S(x_i), S(x_j)\\} = \\sigma^2 \\exp(-\\|x_i - x_j\\| / \\phi)\n\\]\n其中, \\(\\boldsymbol{\\theta} = (\\sigma^2,\\phi)\\) 表示与协方差矩阵相关的参数,随机过程 \\(S(x)\\) 的一个实现服从多元正态分布 \\(\\mathrm{MVN}(\\boldsymbol{0},V_{\\boldsymbol{\\theta}})\\) ,则 \\(\\boldsymbol{y}(x)\\) 也服从多元正态分布 \\(\\mathrm{MVN}(D\\boldsymbol{\\beta},V_{\\boldsymbol{\\theta}})\\) 。参数 \\(\\boldsymbol{\\beta}\\) 的广义最小二乘估计为 \\(\\hat{\\boldsymbol{\\beta}}(\\boldsymbol{\\theta}) = (D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}D)^{-1} D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}\\boldsymbol{y}\\) ,关于参数 \\(\\boldsymbol{\\theta}\\) 的剖面对数似然函数如下:\n\\[\n\\log \\mathcal{L}(\\boldsymbol{\\theta}) = -\\frac{n}{2}\\log (2\\pi) - \\frac{1}{2}\\log (\\det V_{\\boldsymbol{\\theta}}) -\\frac{1}{2}\\boldsymbol{y}^{\\top}V_{\\boldsymbol{\\theta}}^{-1}\\big(I - D(D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}D)^{-1}D^{\\top}V_{\\boldsymbol{\\theta}}^{-1}\\big)\\boldsymbol{y}\n\\]\n下面考虑一个来自 MASS 包真实数据 topo。topo 数据集最初来自 John C. Davis (1973年)所著的书《Statistics and Data Analysis in Geology》。后来, J. J. Warnes 和 B. D. Ripley (1987年)以该数据集为例指出空间高斯过程的协方差函数的似然估计中存在的问题(Warnes 和 Ripley 1987),并将其作为数据集 topo 放在 MASS 包里。Paulo J. Ribeiro Jr 和 Peter J. Diggle (2001年)将该数据集打包成自定义的 geodata 数据类型,放在 geoR 包里,并在他俩合著的书《Model-based Geostatistics》中多次出现。topo 是空间地形数据集,包含有 52 行 3 列,数据点是 310 平方英尺范围内的海拔高度数据,x 坐标每单位 50 英尺,y 坐标单位同 x 坐标,海拔高度 z 单位是英尺。\n\nlibrary(MASS)\ndata(topo)\nstr(topo)\n\n#> 'data.frame': 52 obs. of 3 variables:\n#> $ x: num 0.3 1.4 2.4 3.6 5.7 1.6 2.9 3.4 3.4 4.8 ...\n#> $ y: num 6.1 6.2 6.1 6.2 6.2 5.2 5.1 5.3 5.7 5.6 ...\n#> $ z: int 870 793 755 690 800 800 730 728 710 780 ...\n\n\n根据 topo 数据集, \\(D = \\boldsymbol{1}\\) 是一个 \\(52 \\times 1\\) 的列向量,\\(\\boldsymbol{\\beta} = \\beta\\) 是一个截距项。设置参数初值 \\((\\sigma,\\phi) = (65,2)\\) 。为了与 Ripley 的论文中的图比较,下面扔掉了对数似然函数中常数项,用 R 语言编码的似然函数如下:\n\nlog_lik <- function(x) {\n n <- nrow(topo)\n D <- t(t(rep(1, n)))\n Sigma <- x[1]^2 * exp(-as.matrix(dist(topo[, c(\"x\", \"y\")])) / x[2])\n inv_Sigma <- solve(Sigma)\n P <- diag(1, n) - D %*% solve(t(D) %*% solve(Sigma, D), t(D)) %*% inv_Sigma\n as.vector(-1 / 2 * log(det(Sigma)) - 1 / 2 * t(topo[, \"z\"]) %*% inv_Sigma %*% P %*% topo[, \"z\"])\n}\nlog_lik(x = c(65, 2))\n\n#> [1] -207.1364\n\n\n关于参数的偏导计算复杂,就不计算梯度了,下面调用 R 软件内置的 nlminb 优化器。发现,对不同的初始值,收敛到不同的位置,目标函数值非常接近。\n\nop <- OP(\n objective = F_objective(log_lik, n = 2L),\n bounds = V_bound(lb = c(55, 5), ub = c(75, 8)),\n maximum = TRUE\n)\nnlp <- ROI_solve(op, solver = \"nlminb\", start = c(65, 2))\nnlp$solution\n\n#> [1] 65 5\n\nnlp$objval\n\n#> [1] -197.4197\n\n\n如果初始值靠近局部极值点,则就近收敛到该极值点,比如初值 \\((65, 7)\\) , \\((70, 7.5)\\) 。\n\nnlp <- ROI_solve(op, solver = \"nlminb\", start = c(65, 7))\nnlp$solution\n\n#> [1] 65 7\n\nnlp$objval\n\n#> [1] -196.9407\n\nnlp <- ROI_solve(op, solver = \"nlminb\", start = c(70, 7.5))\nnlp$solution\n\n#> [1] 70.0 7.5\n\nnlp$objval\n\n#> [1] -196.8441\n\n\n尝试调用来自 nloptr 包的全局优化求解器 nloptr.directL ,大大小小的坑都跳过去了,结果还是比较满意的。\n\nnlp <- ROI_solve(op, solver = \"nloptr.directL\")\nnlp$solution\n\n#> [1] 63.934193 6.121331\n\nnlp$objval\n\n#> [1] -196.8158\n\n\n目标区域网格化,计算格点处的似然函数值,然后绘制似然函数图像。\n\ndat <- expand.grid(\n sigma = seq(from = 55, to = 75, length.out = 41),\n phi = seq(from = 5, to = 8, length.out = 31)\n)\ndat$fn <- apply(dat, 1, log_lik)\n\n似然函数关于参数 \\((\\sigma,\\phi)\\) 的三维曲面见 图 21.3 。\n\n代码wireframe(\n data = dat, fn ~ sigma * phi,\n shade = TRUE, drape = FALSE,\n xlab = expression(sigma), ylab = expression(phi),\n zlab = list(expression(\n italic(log-lik) ~ group(\"(\", list(sigma, phi), \")\")\n ), rot = 90),\n scales = list(arrows = FALSE, col = \"black\"),\n shade.colors.palette = custom_palette,\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = -0.5, units = \"inches\"),\n right.padding = list(x = -1.0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -1.5, units = \"inches\"),\n top.padding = list(x = -1.5, units = \"inches\")\n )\n ),\n par.settings = list(axis.line = list(col = \"transparent\")),\n screen = list(z = 30, x = -65, y = 0)\n)\n\n\n\n\n\n\n图 21.3: 对数似然函数的曲面图\n\n\n\n\n等高线图呈现一道非常长且平滑的山岭 long flat ridge,山岭上布满许多局部极大值,普通的数值优化求解器常常陷入其中,只有全局优化求解器才可能找到全局极大值点。高斯过程回归模型的对数似然函数是非凸的,多模态的。\n\n代码levelplot(fn ~ sigma * phi,\n data = dat, aspect = 1,\n xlim = c(54.5, 75.5), ylim = c(4.9, 8.1),\n xlab = expression(sigma), ylab = expression(phi),\n col.regions = cm.colors, contour = TRUE,\n scales = list(\n x = list(alternating = 1, tck = c(1, 0)),\n y = list(alternating = 1, tck = c(1, 0))\n ),\n # 减少三维图形的边空\n lattice.options = list(\n layout.widths = list(\n left.padding = list(x = 0, units = \"inches\"),\n right.padding = list(x = 0, units = \"inches\")\n ),\n layout.heights = list(\n bottom.padding = list(x = -.5, units = \"inches\"),\n top.padding = list(x = -.5, units = \"inches\")\n )\n )\n)\n\n\n\n\n\n\n图 21.4: 对数似然函数的等高线图\n\n\n\n\n上图中没有看到许多局部极小值,与作者论文中的图 1 似乎不符。原因是什么?似然函数中涉及到的矩阵运算不精确,应该设计精度更高的运算方式?lattice 包绘图引擎无法展示更加细微的差异?还有一种解释,上图是对的,算法迭代时,对不同的初值,常常收敛到不同的结果,而这些不同的结果都位于岭上不同位置,对应的对数似然值却又几乎一样。\n作为验证,下面调用 nlme 包的 gls() 函数拟合数据,参数的极大似然估计结果与全局优化求解器的结果比较一致。参数估计结果 \\((\\sigma, \\phi)= (63.93429, 6.121352)\\) ,对数似然函数值为 -244.6006 ,自编的似然函数 log_lik() 在最优解处的值为 -196.8158,再加上之前扔掉的常数项 -52 / 2 * log(2 * pi) ,就是 -244.6006 ,丝毫不差。\n\nlibrary(nlme)\nfit_topo_ml <- gls(z ~ 1,\n data = topo, method = \"ML\",\n correlation = corExp(value = 65, form = ~ x + y)\n)\nsummary(fit_topo_ml)\n\n#> Generalized least squares fit by maximum likelihood\n#> Model: z ~ 1 \n#> Data: topo \n#> AIC BIC logLik\n#> 495.2012 501.055 -244.6006\n#> \n#> Correlation Structure: Exponential spatial correlation\n#> Formula: ~x + y \n#> Parameter estimate(s):\n#> range \n#> 6.121352 \n#> \n#> Coefficients:\n#> Value Std.Error t-value p-value\n#> (Intercept) 863.708 45.49859 18.98318 0\n#> \n#> Standardized residuals:\n#> Min Q1 Med Q3 Max \n#> -2.7169766 -1.1919732 -0.5272282 0.1453374 1.5061096 \n#> \n#> Residual standard error: 63.93429 \n#> Degrees of freedom: 52 total; 51 residual\n\n\n如果使用限制极大似然估计,会发现参数估计结果与之相距甚远,而对数似然函数值相差无几。参数估计结果 \\((\\sigma,\\phi) = (128.8275, 25.47324)\\) 。\n\nfit_topo_reml <- gls(z ~ 1,\n data = topo, method = \"REML\",\n correlation = corExp(value = 65, form = ~ x + y)\n)\nsummary(fit_topo_reml)\n\n#> Generalized least squares fit by REML\n#> Model: z ~ 1 \n#> Data: topo \n#> AIC BIC logLik\n#> 485.1558 490.9513 -239.5779\n#> \n#> Correlation Structure: Exponential spatial correlation\n#> Formula: ~x + y \n#> Parameter estimate(s):\n#> range \n#> 25.47324 \n#> \n#> Coefficients:\n#> Value Std.Error t-value p-value\n#> (Intercept) 877.8956 116.7163 7.521619 0\n#> \n#> Standardized residuals:\n#> Min Q1 Med Q3 Max \n#> -1.45850506 -0.70167923 -0.37178079 -0.03800119 0.63732032 \n#> \n#> Residual standard error: 128.8275 \n#> Degrees of freedom: 52 total; 51 residual", "crumbs": [ "优化建模", "21  优化问题" @@ -1410,7 +1410,7 @@ "href": "optimization-problems.html#sec-poisson-mixture-distributions", "title": "21  优化问题", "section": "\n21.4 泊松混合分布", - "text": "21.4 泊松混合分布\n有限混合模型(Finite Mixtures of Distributions)的应用非常广泛,本节参考 BB 包 (Varadhan 和 Gilbert 2009) 的帮助手册,以泊松混合分布为例,介绍其参数的极大似然估计。更多详细的理论和算法介绍从略,感兴趣的读者可以查阅相关文献 (Hasselblad 1969)。BB 包比内置函数 optim() 功能更强,可以求解大规模非线性方程组,也可以求解带简单约束的非线性优化问题,还可以从多个初始值出发寻找全局最优解。\n两个泊松分布以一定比例 \\(p\\) 混合,以概率 \\(p\\) 服从泊松分布 \\(\\mathrm{Poisson}(\\lambda_1)\\) ,而以概率 \\(1-p\\) 服从泊松分布 \\(\\mathrm{Poisson}(\\lambda_1)\\) 。\n\\[\np\\times \\mathrm{Poisson}(\\lambda_1) + (1 - p)\\times \\mathrm{Poisson}(\\lambda_2)\n\\]\n泊松混合分布的概率密度函数 \\(f(x;p,\\lambda_1,\\lambda_2)\\) 如下:\n\\[\nf(x;p,\\lambda_1,\\lambda_2) = p \\times \\frac{\\lambda_1^x \\exp(-\\lambda_1)}{x!} + (1 - p) \\times \\frac{\\lambda_2^x \\exp(-\\lambda_2)}{x!}\n\\]\n随机变量 \\(X\\) 服从参数为 \\(p\\) 的伯努利分布 \\(X \\sim \\mathrm{Bernoulli}(1, p)\\) ,随机变量 \\(Y\\) 服从泊松混合分布,在伯努利分布的基础上,泊松混合分布也可作如下定义:\n\\[\n\\begin{array}{l}\nY \\sim \\left\\{\n\\begin{array}{l}\n\\mathrm{Poisson}(\\lambda_1), \\quad \\text{当} ~ X = 1 ~ \\text{时},\\\\\n\\mathrm{Poisson}(\\lambda_2), \\quad \\text{当} ~ X = 0 ~ \\text{时}.\n\\end{array} \\right.\n\\end{array}\n\\]\n对数似然函数如下:\n\\[\n\\ell(p,\\lambda_1,\\lambda_2) = \\sum_{i=0}^{n}y_i \\log\\big(p\\times \\exp(-\\lambda_1) \\times\\frac{\\lambda_1^{x_i}}{x_i!} + (1 - p)\\times \\exp(-\\lambda_2) \\times\\frac{\\lambda_2 ^{x_i}}{x_i!} \\big)\n\\]\n下 表格 21.1 数据来自 1947 年 Walter Schilling 发表在 JASA 的一篇文章 (Schilling 1947)。连续三年搜集伦敦《泰晤士报》刊登的死亡告示,每天的告示发布 80 岁及以上女性死亡人数。经过汇总统计,发现,在三年里,没有人死亡的告示出现 162 次,死亡 1 人的告示出现 267 次。\n\n\n表格 21.1: 死亡人数的统计\n\n\n\n死亡人数\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n\n\n发生频次\n162\n267\n271\n185\n111\n61\n27\n8\n3\n1\n\n\n\n\n\n考虑到夏季和冬季对老人死亡率的影响是不同的,因此,引入泊松混合分布来对数据建模。\n\n# 对数似然函数\n# p 是一个长度为 3 的向量\n# y 是观测数据向量\npoissmix_loglik <- function(p, y) {\n i <- 0:(length(y) - 1)\n loglik <- y * log(p[1] * exp(-p[2]) * p[2]^i / exp(lgamma(i + 1)) +\n (1 - p[1]) * exp(-p[3]) * p[3]^i / exp(lgamma(i + 1)))\n sum(loglik)\n}\n# lgamma(i + 1) 表示整数 i 的阶乘的对数\n# 参数的下限\nlo <- c(0, 0, 0)\n# 参数的上限\nhi <- c(1, Inf, Inf)\n# 随机生成一组参数初始值\np0 <- runif(3, c(0.2, 1, 1), c(0.8, 5, 8)) \n# 汇总统计出来的死亡人数的频次分布\ny <- c(162, 267, 271, 185, 111, 61, 27, 8, 3, 1)\n\n调用 BB 包的函数 BBoptim() 求解多元非线性箱式约束优化问题。\n\nlibrary(BB)\n# 参数估计\nans <- BBoptim(\n par = p0, fn = poissmix_loglik, y = y,\n lower = lo, upper = hi, \n control = list(maximize = TRUE)\n)\n\n#> iter: 0 f-value: -2968.501 pgrad: 7.572203 \n#> iter: 10 f-value: -1992.18 pgrad: 3.503607 \n#> iter: 20 f-value: -1991.277 pgrad: 2.365923 \n#> iter: 30 f-value: -1990.325 pgrad: 1.405494 \n#> iter: 40 f-value: -1989.979 pgrad: 1.709452 \n#> iter: 50 f-value: -1989.946 pgrad: 0.02604793 \n#> Successful convergence.\n\nans\n\n#> $par\n#> [1] 0.3598808 1.2560870 2.6633987\n#> \n#> $value\n#> [1] -1989.946\n#> \n#> $gradient\n#> [1] 1.818989e-05\n#> \n#> $fn.reduction\n#> [1] -978.5554\n#> \n#> $iter\n#> [1] 59\n#> \n#> $feval\n#> [1] 61\n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> [1] \"Successful convergence\"\n#> \n#> $cpar\n#> method M \n#> 2 50\n\n\nnumDeriv::hessian 计算极大似然点的黑塞矩阵,然后计算参数估计的标准差。\n\n# 黑塞矩阵\nhess <- numDeriv::hessian(x = ans$par, func = poissmix_loglik, y = y)\nhess\n\n#> [,1] [,2] [,3]\n#> [1,] -907.1131 270.22803 341.25563\n#> [2,] 270.2280 -113.47865 -61.68173\n#> [3,] 341.2556 -61.68173 -192.78329\n\n# 标准差\nse <- sqrt(diag(solve(-hess)))\nse\n\n#> [1] 0.1946826 0.3500306 0.2504754\n\n\nmultiStart 从不同初始值出发寻找全局最大值,先找一系列局部极大值,通过比较获得全局最大值。\n\n# 随机生成 10 组初始值\np0 <- matrix(runif(30, c(0.2, 1, 1), c(0.8, 8, 8)), \n nrow = 10, ncol = 3, byrow = TRUE)\nans <- multiStart(\n par = p0, fn = poissmix_loglik, action = \"optimize\",\n y = y, lower = lo, upper = hi, quiet = TRUE,\n control = list(maximize = TRUE, trace = FALSE)\n)\n# 筛选出迭代收敛的解\npmat <- round(cbind(ans$fvalue[ans$conv], ans$par[ans$conv, ]), 4)\ndimnames(pmat) <- list(NULL, c(\"fvalue\", \"parameter 1\", \n \"parameter 2\", \"parameter 3\"))\n# 去掉结果一样的重复解\npmat[!duplicated(pmat), ]\n\n#> fvalue parameter 1 parameter 2 parameter 3\n#> [1,] -1989.946 0.6401 2.6634 1.2561\n#> [2,] -1989.946 0.3599 1.2561 2.6634\n#> [3,] -1999.873 0.3187 1.9075 2.2792", + "text": "21.4 泊松混合分布\n有限混合模型(Finite Mixtures of Distributions)的应用非常广泛,本节参考 BB 包 (Varadhan 和 Gilbert 2009) 的帮助手册,以泊松混合分布为例,介绍其参数的极大似然估计。更多详细的理论和算法介绍从略,感兴趣的读者可以查阅相关文献 (Hasselblad 1969)。BB 包比内置函数 optim() 功能更强,可以求解大规模非线性方程组,也可以求解带简单约束的非线性优化问题,还可以从多个初始值出发寻找全局最优解。\n两个泊松分布以一定比例 \\(p\\) 混合,以概率 \\(p\\) 服从泊松分布 \\(\\mathrm{Poisson}(\\lambda_1)\\) ,而以概率 \\(1-p\\) 服从泊松分布 \\(\\mathrm{Poisson}(\\lambda_1)\\) 。\n\\[\np\\times \\mathrm{Poisson}(\\lambda_1) + (1 - p)\\times \\mathrm{Poisson}(\\lambda_2)\n\\]\n泊松混合分布的概率密度函数 \\(f(x;p,\\lambda_1,\\lambda_2)\\) 如下:\n\\[\nf(x;p,\\lambda_1,\\lambda_2) = p \\times \\frac{\\lambda_1^x \\exp(-\\lambda_1)}{x!} + (1 - p) \\times \\frac{\\lambda_2^x \\exp(-\\lambda_2)}{x!}\n\\]\n随机变量 \\(X\\) 服从参数为 \\(p\\) 的伯努利分布 \\(X \\sim \\mathrm{Bernoulli}(1, p)\\) ,随机变量 \\(Y\\) 服从泊松混合分布,在伯努利分布的基础上,泊松混合分布也可作如下定义:\n\\[\n\\begin{array}{l}\nY \\sim \\left\\{\n\\begin{array}{l}\n\\mathrm{Poisson}(\\lambda_1), \\quad \\text{当} ~ X = 1 ~ \\text{时},\\\\\n\\mathrm{Poisson}(\\lambda_2), \\quad \\text{当} ~ X = 0 ~ \\text{时}.\n\\end{array} \\right.\n\\end{array}\n\\]\n对数似然函数如下:\n\\[\n\\ell(p,\\lambda_1,\\lambda_2) = \\sum_{i=0}^{n}y_i \\log\\big(p\\times \\exp(-\\lambda_1) \\times\\frac{\\lambda_1^{x_i}}{x_i!} + (1 - p)\\times \\exp(-\\lambda_2) \\times\\frac{\\lambda_2 ^{x_i}}{x_i!} \\big)\n\\]\n下 表格 21.1 数据来自 1947 年 Walter Schilling 发表在 JASA 的一篇文章 (Schilling 1947)。连续三年搜集伦敦《泰晤士报》刊登的死亡告示,每天的告示发布 80 岁及以上女性死亡人数。经过汇总统计,发现,在三年里,没有人死亡的告示出现 162 次,死亡 1 人的告示出现 267 次。\n\n\n表格 21.1: 死亡人数的统计\n\n\n\n死亡人数\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n\n\n发生频次\n162\n267\n271\n185\n111\n61\n27\n8\n3\n1\n\n\n\n\n\n考虑到夏季和冬季对老人死亡率的影响是不同的,因此,引入泊松混合分布来对数据建模。\n\n# 对数似然函数\n# p 是一个长度为 3 的向量\n# y 是观测数据向量\npoissmix_loglik <- function(p, y) {\n i <- 0:(length(y) - 1)\n loglik <- y * log(p[1] * exp(-p[2]) * p[2]^i / exp(lgamma(i + 1)) +\n (1 - p[1]) * exp(-p[3]) * p[3]^i / exp(lgamma(i + 1)))\n sum(loglik)\n}\n# lgamma(i + 1) 表示整数 i 的阶乘的对数\n# 参数的下限\nlo <- c(0, 0, 0)\n# 参数的上限\nhi <- c(1, Inf, Inf)\n# 随机生成一组参数初始值\np0 <- runif(3, c(0.2, 1, 1), c(0.8, 5, 8)) \n# 汇总统计出来的死亡人数的频次分布\ny <- c(162, 267, 271, 185, 111, 61, 27, 8, 3, 1)\n\n调用 BB 包的函数 BBoptim() 求解多元非线性箱式约束优化问题。\n\nlibrary(BB)\n# 参数估计\nans <- BBoptim(\n par = p0, fn = poissmix_loglik, y = y,\n lower = lo, upper = hi, \n control = list(maximize = TRUE)\n)\n\n#> iter: 0 f-value: -2301.554 pgrad: 4.703557 \n#> iter: 10 f-value: -1990.644 pgrad: 2.361774 \n#> iter: 20 f-value: -1989.947 pgrad: 0.2183447 \n#> iter: 30 f-value: -1989.946 pgrad: 0.005798029 \n#> Successful convergence.\n\nans\n\n#> $par\n#> [1] 0.6401137 2.6634054 1.2560965\n#> \n#> $value\n#> [1] -1989.946\n#> \n#> $gradient\n#> [1] 0.0002660272\n#> \n#> $fn.reduction\n#> [1] -311.6079\n#> \n#> $iter\n#> [1] 39\n#> \n#> $feval\n#> [1] 41\n#> \n#> $convergence\n#> [1] 0\n#> \n#> $message\n#> [1] \"Successful convergence\"\n#> \n#> $cpar\n#> method M \n#> 2 50\n\n\nnumDeriv::hessian 计算极大似然点的黑塞矩阵,然后计算参数估计的标准差。\n\n# 黑塞矩阵\nhess <- numDeriv::hessian(x = ans$par, func = poissmix_loglik, y = y)\nhess\n\n#> [,1] [,2] [,3]\n#> [1,] -907.1064 -341.25220 -270.22960\n#> [2,] -341.2522 -192.78034 -61.68217\n#> [3,] -270.2296 -61.68217 -113.48058\n\n# 标准差\nse <- sqrt(diag(solve(-hess)))\nse\n\n#> [1] 0.1946849 0.2504791 0.3500301\n\n\nmultiStart 从不同初始值出发寻找全局最大值,先找一系列局部极大值,通过比较获得全局最大值。\n\n# 随机生成 10 组初始值\np0 <- matrix(runif(30, c(0.2, 1, 1), c(0.8, 8, 8)), \n nrow = 10, ncol = 3, byrow = TRUE)\nans <- multiStart(\n par = p0, fn = poissmix_loglik, action = \"optimize\",\n y = y, lower = lo, upper = hi, quiet = TRUE,\n control = list(maximize = TRUE, trace = FALSE)\n)\n# 筛选出迭代收敛的解\npmat <- round(cbind(ans$fvalue[ans$conv], ans$par[ans$conv, ]), 4)\ndimnames(pmat) <- list(NULL, c(\"fvalue\", \"parameter 1\", \n \"parameter 2\", \"parameter 3\"))\n# 去掉结果一样的重复解\npmat[!duplicated(pmat), ]\n\n#> fvalue parameter 1 parameter 2 parameter 3\n#> [1,] -1989.946 0.3599 1.2561 2.6634\n#> [2,] -1995.912 0.3990 2.5910 1.8588\n#> [3,] -1989.946 0.6401 2.6634 1.2561", "crumbs": [ "优化建模", "21  优化问题" diff --git a/wrangling-objects.html b/wrangling-objects.html index a0739d44..2b28d6f0 100644 --- a/wrangling-objects.html +++ b/wrangling-objects.html @@ -506,7 +506,7 @@

# 数据结构
 str(x)
-
 Time-Series [1:100] from 2017 to 2017: 1.31088 -0.00582 0.48111 -1.56845 -0.03549 ...
+
 Time-Series [1:100] from 2017 to 2017: 0.777 -1.4823 0.1598 0.4565 -0.0718 ...

函数 start()end() 查看开始和结束的时间点。