贝叶斯文本分类算法的JavaScript实现

一. 前言

img

img

( < 黑客与画家 >, Paul )

JavaScript(浏览器端)分词 | Lian (kyouichirou.github.io)这篇文章中提及js分词的实现. 本文则是js版本贝叶斯分类算法的实现, Kyouichirou/BiliBili_Optimizer: enjoy and control bilibili (github.com).

使用统计方法来实现垃圾内容过滤, 很早就想写的了, 但是由于在js端没有好的分词方案(), 一直没捣鼓, 直到发现原来js原生就支持分词, 这个想法马上付诸实现.

以下是对贝叶斯和文本分类算法的简单回顾, 逐步从基础推导出整个数学公式, 并根据python sklearnnative_bayes进行代码的修正, 给出了普通方式计算的代码.

由于需要在毫秒内实现, js脚本使用的分词方案是js原生分词api.

阅读全文 »

JavaScript(浏览器端)分词

一. 前言

基于JavaScript的分词工具实际上不少, 但是大部分是无法运行在浏览器上的, 多数只能在nodejs上运行, 或者是浏览器端的表现不佳(速度, 效果).

一直试图尝试将机器学习(统计/贝叶斯, 效仿垃圾邮件的过滤机制)引入到JavaScript(tampermonkey)实现对内容相对智能 的拦截, 但是一直找不到比较好的解决方案(特别是分词的处理).

阅读全文 »

Excel进阶 - 模拟分析

一. 前言

模拟分析, 可以视作规划求解的组成部分.

Excel规划求解示例 - 上架商品利润最大化 | Lian (kyouichirou.github.io)

二. 模拟分析

img

通过使用 Excel 中的模拟分析工具, 可以在一个或多个公式中使用多个不同的值集来浏览所有不同结果.

例如, 可以执行模拟分析来构建两个预算, 并假设每个预算具有特定收益. 或者可以指定希望公式产生的结果, 然后确定哪个值集产生此结果. Excel 提供数种不同工具来帮助执行适合需求的分析.

阅读全文 »

SSH密钥登录EXSI

一. 前言

小型工控机-软路由配置拾遗 | Lian (kyouichirou.github.io)

在上篇文章中, 介绍了各种远程连接的方式, 在这里还有一个坑要填, 那就是在iPhone上无法ssh连接exsi.

二. 解决

os: ios 14
terminal: PortX (尝试了多个不同的终端还是无法明文密码登录)

SSH access may fail post upgrade to ESXi 7.0 Update 3d (88055) (vmware.com)

不知道是哪边的锅, 看了下vm的文档, 可能是不同版本的ssh使用加密方式上的差异导致.

阅读全文 »

ortools-线性规划求解高阶使用 - 文档翻译

以下翻译并不逐字翻译.

Advanced LP Solving

Despite the maturity of LP technology, some use cases require more advanced techniques. For example, a number of different LP algorithms and implementations are available, each of which has strengths and weaknesses. Furthermore, numerical instability can cause solvers to slow down or fail to solve certain models.

尽管线性规划求解器的技术已经非常成熟, 但是在一些案例中依然需要一些更为先进的技术. 例如, 在大量的不同线性规划的求解算法和其实现中, 不同的算法之间各有优劣. 此外, 数值的不稳定可能导致模型的求解非常缓慢或是无法求解.

This guide introduces the concepts and provides examples to help you get the most performance and reliability out of LP solvers.

以下将介绍相关的案列, 以充分了解各个线性求解算法的性能和可靠性

阅读全文 »

Excel规划求解加载项

img

一. 前言

运用" 规划求解" 定义并求解问题 - Microsoft 支持

打开excel => 开发项 => 勾选确定

正常情况下在数据标签下, 会出现一个"分析"的组.

img

由于excel中集成的规划求解模块来自于:

" 规划求解" 程序代码的部分为 Frontline Systems, Inc 公司 1990-2009 年版权所有, 部分为 Optimal Methods, Inc 公司 1989 年版权所有.

Excel Solver - Using Solver from VBA | solver

阅读全文 »

Python - 规划问题求解器概览

img

(图: 装箱问题图示)

一. 前言

【学界】运筹学数学规划|离散优化求解器大搜罗 - 知乎 (zhihu.com)这篇文章中, 作者罗列了当前市面上的大部分主流(付费)的求解器, 缺少对开源(免费)的(python)库的介绍, 这里做一个补充.

几大扛把子(付费)就不需要多提了, 这里主要看看开源(免费)的几个库, 目前找到的几个start/fork数量较多, 文档较为完善的库.

库名称 是否免费 fork/star 协议类型 开发者 当前活跃/维护状态 项目地址
pyscipopt 236/684 Apache 2.0 License. Zuse Institute Berlin 活跃 scipopt/PySCIPOpt: Python interface for the SCIP Optimization Suite (github.com)
copt / / 已经停止维护 copt - PyPI
ortools 2k/9.8k Apache 2.0 Google 活跃 GitHub - google/or-tools: Google's Operations Research tools
cvxpy 1k/4.8k Apache 2.0 / 活跃 GitHub - cvxpy/cvxpy: A Python-embedded modeling language for convex optimization problems.
pulp 382/1.8k BSD / 活跃 GitHub - coin-or/pulp: A python Linear Programming API
z3-solver 1.4k/9.1k MIT Miscrosoft 活跃 GitHub - Z3Prover/z3: The Z3 Theorem Prover
gurobipy 有限制 / 商业软件, 学术授权免费 / 活跃 gurobipy - PyPI
cplex 有限制 / 社区版, 部分功能开放 / 活跃 cplex - PyPI

就上述的状态来看, Google出品的ortools和微软的z3-solver得到了较多的关注, 但是z3针对的问题和其他的库有一点差异.

多数情况下, 除非特别大的模型(如数以万计的变量)或者是一些冷僻模型, 解决问题的核心多卡在数学建模(基础) - 模型转为代码(主体框架)这个过程型(即如何将数学模型转为代码表示的形式, 这看上去没什么难度, 但是极为容易犯错的一环)上, 不用太过于纠结使用哪个库. 至于使用哪个库作为主力, 主要考虑库api设计的使用难度, 提供文档的友好性(核心部分), 库维护状态. 同时需要看该库的使用用户数量, 问题提交数等, 这些间接反映库质量和维护的状态.

需要注意的是上述(开源)库, 均未有中文文档提供(google的ortools提供的也是机器翻译, 未经人工修正的中文文档).

阅读全文 »