How does bayesopt() optimise using categorical optimizable variables?
조회 수: 4 (최근 30일)
이전 댓글 표시
I have been using the bayesopt() function to perform Bayesian optimisation for material design. I have one set of optimisable variables that are of categorical data type. I was wondering how Gaussian process regression is performed when categorical input variables are used? Is it simply a case of using one-hot encoding?
Many thanks,
James
댓글 수: 0
채택된 답변
Don Mathis
2019년 4월 5일
The bayesopt function uses a special technique to handle categorical variables. One-hot coding is not used. Instead, bayesopt encodes the categorical variable as an integer variable, and uses an ARD Gaussian Process kernel with a fixed spatial scale on that dimension that is so small that neighboring integer values have virtually no effect on each other. The value of the objective function model at x=7 has no effect on the model's value at x=8. The result is that the distinct integer values must be probed individually to learn what the objective function is at that value. One-hot coding would probably produce similar behavior but would increase the number of variables and require a constraint between them to make sure only one dimension is probed at a time.
댓글 수: 3
Don Mathis
2019년 4월 5일
Unfortunately, no. As far as I know this is a novel technique. I know of at least one other B.O. package that encodes categoricals as integers, but then it treats the integer variable like any other, estimating a kernel scale that ties neighboring values together, which to me seems inappropriate.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Model Building and Assessment에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!