Home

PuLPで線形計画問題を解く

最近PuLPという線形計画問題 (や混合整数問題) を解くためのPythonライブラリを触ったのでそれの使い方をメモしておきます。 まず線形計画問題について簡単に説明をします。 線形計画問題とは 用語の復習から。 実数$c_1, \dots, c_n \in \mathbb{R}$に対して、次のように与えられる実変数$x_1, \dots, x_n$の関数 を線形関数 (linear function) と呼びます。$f$が線形関数で、$b$が実定数のとき、 の関係式を線形等式 (linear equality) といい、 や の式を線形不等式 (linear inequality) といいます。 さて線形計画問題 (linear programmin...

Read more

平滑化スプライン

スプライン関数 元の現象が連続的なものであっても、実験や統計の結果として得られるデータは離散的なものです。そのため、測定しなかった入力に対する出力が欲しい場合は、手元にある離散的なデータから推定する必要があります。 古典的な推定法としては、Lagrangeの補完法というものがあります。これは、$n$個の点$\{(x_i, y_i)\}_{i=1}^n,\ \ i\neq j \Rightarrow x_i \neq x_j$が与えられたときに多項式を用いてデータを推定するものです。具体的には、 で表される$P(x)$が補間多項式となります。これは全てのデータ点${(x_i, y_i)}_{i=1}^n$を通る、$n-1$次の多項式です。 しかし、このような多項式による近似は...

Read more

Newton Method 2

前回の記事の続き。 関数$f$が狭義凸関数であるときにヘッセ行列が正則になる証明を行っていく。以下では、ヘッセ行列の各成分は実数であるとする。 流れ 先に証明の流れを書いておく。 1. 正定値対称行列が正則であることを証明する 2. ヘッセ行列が正定値対称行列であることを証明する 2.1. 狭義凸関数の性質である を証明する。 2.2. $f$を2次のテーラー展開して、ヘッセ行列が式中に現れることを確認する。 2.3.下の式が導けるので、 凸関数の性質からヘッセ行列が正定値であることが証明される 正定値対称行列が正則であることの証明 まず正定値対称行列について。 $n\times n$行列$A$が長さ$n$の任意の実数値ベクトル$z$について、$z...

Read more

Newton Method

Newton法について勉強したので記録する1。なお、この記事ではベクトルをボールド体にせず、スカラと同じように表記する。 語句の定義 狭義凸関数 (strictly convex function) 凸集合$X$を定義域とする関数$f$が、任意の2点 $x_0, x_1 \in X$, $0 \le \lambda \le 1$である任意の実数$\lambda$に対して、 が成立するとき、$f$は狭義凸関数とよばれる。 (凸集合の定義は前回の記事を参照のこと。) つまり狭義凸関数は凸関数の定義から等号を除いたバージョンということである。 Newton法がやっていること Newton法は、狭義凸関数 (strictly convex function) $f$に対して...

Read more

凸関数の和は凸関数

凸関数の和は凸関数になるが、それの証明を確認したので記録しておく。 以下では簡単化のために集合$X$は有限次元ユークリッド空間$R^m$の部分集合であるとする。 まず用語の定義から。 凸結合 $X$の2つの点$\boldsymbol{x}_0$, $\boldsymbol{x}_1$をとり、$0 \le \lambda \le 1, \lambda \in \mathbb{R}$である$\lambda$を一つ定める。このとき、 で表される点の集合$\boldsymbol{x}$を、$\boldsymbol{x}_0$, $\boldsymbol{x}_1$の凸結合という。 === この凸結合は2点を結ぶ線分のことです (3点以上に対しても凸結合は定義できる)。 (念...

Read more

macOSで開いた画像ファイルをドラッグ&ドロップする

小ネタだけど地味に便利だったのでメモ。 macOSにおいて、画像ファイルをPreviewなどのアプリで開いた後にその画像をどこかに貼り付けたいときがある。 今まではFinderを開き、画像ファイルが置いてある場所まで移動してファイルをドラッグ&ドロップする、という手順を行っていたが、 Previewで開かれるウィンドウの上にあるファイル名が書いてある隣りにある小さなアイコンはドラッグできるので、 それを直接ドラッグしてペーストしたいところにドロップすればコピペが完了する。 ついでに、ファイル名をクリックするとリネームができる。 Previewに限らず、ウィンドウの上にアイコンとファイル名が表示されるタイプのアプリはおそらく全てこの操作ができる。 結構長いことmac使って...

Read more

MacにLightGBMを再インストール

LightGBMを使おうと思いpyhtonのnotebook上でimportしようとしたら、エラーが出た。 from LightGBM import LGBMClassifier Output (Excerpt): OSError: dlopen(/usr/local/lib/python3.6/site-packages/LightGBM/lib_LightGBM.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/7/libgomp.1.dylib Referenced from: /usr/local/lib/python3.6/site-packages/LightGBM/lib_LightGBM.so ...

Read more

Juliaを使ってKaggleのhouse pricesの問題を試してみた

今回はJuliaという比較的新しめの言語でKaggleをやってみることにした. まだKaggleも大してやれていないのになぜ今まで触ったこと無い言語を試してみたかというと,社内のハッカソンでやることになったから. Juliaは実行時コンパイルすることでPythonより高速に計算できることを売りにしている言語のようだ (だが今回の簡単なKernelではその良さは享受できず...).どんな言語かはこちらとかを見ればわかると思う→Python使いをJuliaに引き込むサンプル集 題材にしたKaggleのコンペはHouse Prices: Advanced Regression Techniquesで,アイオワ州のエイムズにある家についての様々な情報 (特徴量の数が79個) から家の値段を...

Read more