いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

機械学習

【Python】分類問題で遊んでみたい。

・お題:機械学習というやつで遊んでみたくて、画像に写っているものが何か分類する問題をやってみようと思った。有名な問題で、手書きの数字画像がなんの数字か判別するモデルを作るやつがあるらしい。やってみたい。 ・とりあえず、データをロードしてみる…

【KNIME】ParameterをOptimizeしたい。

・機械学習のハイパーパラメータを最適化したいと思って調べてみたところ、以下のKNIME Hubの記事が参考になりそうだった。 hub.knime.com ・まず、Parameter Optimization関連のノードを使うためには、Extensionをインストールする必要がある(以下)。 ・…

【KNIME】Cross Validationしてみたい。

・モデルの汎化性能を評価する目的で、交差検証(Cross Validation)してみようと思った。 ・通常、機械学習の際には、データを学習用とテスト用に分割する。Cross Validationでは、これを何度も実施して、予測性能を検証することになる。例えば、学習用デー…

【KNIME】いろいろな分布の乱数を発生させたい。

・KNIMEでいろいろな分析をしていると、乱数を発生させたくなることがある。 ・EXCELでの乱数の発生のさせ方は以前記事にしたが、KNIMEだともっと簡単たくさんの乱数を発生させることができる。 ・Node Repositoryで調べると、以下の一群のノードが役に立ち…

【KNIME】化合物を扱いたい。

・KNIMEの使い方は様々にあるが、そのうちで特に発達している利用法の1つにケモインフォマティクスがある。化学情報学や計算化学と日本語訳される学問で、化学物質の性質を情報学の観点から表現・解析・予測する学問らしい。せっかくKNIMEを扱っているので、…

【KNIME】グラフ通りのデータを作りたい。

・サンプルデータを使って分析を組んでいると、「こんな感じの分布のデータが欲しいなぁ」と思うことがある。 ・正規分布だったり一様分布だったりするならシンプルなのだが、例えば「平面グラフのこの辺に軸が傾いた楕円状に分布しているデータが欲しい」な…

【KNIME】多変量データをt-sneで可視化したい

・多変量データを可視化する方法には様々あるが、今回はt-sneという手法を試してみたい。ティーズニーと読むらしい。 ・t-SNE (t-distribution Stochastic Neighbor Embedding)は、データ間の距離(類似性)を保持したまま、低次元化する手法だそうだ。・距…

【KNIME】Spectral Clusteringでクラスタリングしたい。

・先日KNIMEでk-meansクラスタリングなどを実施してみた。k-meansクラスタリングの特徴は、プロットした空間中で中心から距離をベースに考えるところで、要は2次元グラフ上なら丸く分布していないと綺麗に分けることができない。 ・歪んだ分布の場合、Spectr…

【KNIME】curve fittingで酵素反応速度論的パラメータを推定してみたい(非線形回帰)。

・酵素反応速度論的解析をする際に、モデルの式に数値を当てはめてパラメータを推定するcurve fittingをやりたかったのだけれど、KNIMEでのやり方が分からなかった。 ・Pythonなら出来そうだったので、KNIMEにPythonを入れ込んで、サンプルデータのfittingを…

【KNIME】データをNormalizationしたい

・数値データを解析する際に、複数の特徴量を使う場合、単位の違いが問題になることがある。Random Forestなどの決定木系の手法ではそれほど問題にならないかも知れないが、その他多くの場合では何らかの手法でNormalizationされることが多い。 ・KNIMEでNor…

【KNIME】回帰分析に適用するモデルを決めたい(Pycaret)

・教師あり学習に使うモデルを決めるために、PythonのライブラリPycaretをKNIMEで実行してみた。 ・まず、先日作成したPythonの仮想環境にPycaretを入れようとインストールしようとしたが、上手くいかなかった。 ・knimeenvを作成した際にconda create -n kn…

【その他】回帰モデルの評価指標のいろいろ

・回帰モデルの評価指標にも、いくつか種類がある。少しまとめてみた。・R2 (決定係数):1 に近いほど精度の高い予測が行えていることになる。が、案外癖のある指標。定義が色々ある。相関係数の二乗は、いろいろある決定係数の一つのらしい(決定係数と呼ば…

【KNIME】Random Forestで特徴量の重要度を算出したい

・以前に記載した通り、機械学習では、無駄な特徴量は捨てるか省くかした方が良い。 ・Random Forestで特徴量の大切さ(寄与度?)を算出する手法がないかと調べてみたところ、Random Forest Learnerノードの真ん中の出力ポートAttribute Statisticsを利用す…

【KNIME】Random Forest Regressionで回帰問題を解きたい

・分類問題を試してみたので、次は回帰問題を試してみたい。 ・やり方は分類問題と全く同じで、Random Forestの回帰問題版を使用した(下図) ・サンプルデータセットとしては、ボストン家賃データセットを用いた。その他の設定はすべてデフォルトで、モデル…

【KNIME】特徴量を削りたい

・機械学習において特徴量を選抜する手法は様々にある。 ・一般的なものとして、分散が小さすぎる特徴量、相関が高すぎる特徴量を除去することは真っ先に挙げられると思う。 ・分散が小さすぎる特徴量を除く際には、Low Variance Filterノード、相関が高すぎ…

【その他】分類問題の評価指標を整理したい

・分類問題の評価指標がややこしいので、自分の言葉で整理することにした。 ・分類問題では、いろいろな指標がモデル評価に用いられる。調べたいことは、「このモデルで、ちゃんと正しく分けられましたか?」ということだが、それぞれ何なのか? ・私のイメ…

【KNIME】Random Forestで分類問題を解いてみたい

・機械学習の教師あり学習というものをKNIMEでやってみたく、多くの場合で用いられるRandom Forestという手法を試してみた。 ・データのサンプルは、教師あり学習の分類問題で一般的なIris分類問題(アヤメの分類問題)を用いた。 ・一連の流れをフローで組…

【KNIME】主成分分析したい

・機械学習で多変量を扱う際に、変量(特徴量)を減らしたいことがある。 ・Uncle Bernie's ruleというもので、学習に必要なデータの数は、説明変数の数の10倍以上は準備しましょうというもので、いたずらに特徴量や説明変数を増やしてモデルするのはよろし…

【KNIME】階層型クラスタリングに使う距離情報を読み込みたい。

・データ間の距離情報のみを得た場合に、階層型クラスタリグを適用したい。 ・そこで、距離情報を読み込んで階層型クラスタリングに適用してみたい。 ・サンプルデータとして、10個のポイントの相互距離を用いた(下図)。 ・これを三角行列風の表に加工し、…

【その他】機械学習に使えるデータセットを探したい

・機械学習でいろいろ試していると、サンプルデータセットを入手したくなることがある。 ・少し調べてみると以下のサイトが便利そうだった。 ・The UCI Machine Learning Repository archive.ics.uci.edu ・kaggle dataset www.kaggle.com ・dataflair data-…

【KNIME】外れ値も加味したクラスタリングをしてみたい(DBSCAN)

・クラスタリングの手法として、密度を基準に、ぎゅっと集まっているところを一つのクラスタ、疎なところを外れ値として解釈するDBSCANという手法がある。 ・ざっくりと組んでみた(下図)。これもデータ間の距離を算出してやる必要があるので、Numeric Dist…

【KNIME】階層型クラスタリングをやってみたい(Hierarchical Clustering)

・これまでは非階層型クラスタリングを試していたが、今回は階層型クラスタリングを試してみたい。 ・試しに組んでみた(下図)。 ・階層型クラスタリングといえば、デンドログラム(樹形図)での表示だと思う。 ・Hierarchical Clusteringのノードを右クリ…

【KNIME】シルエット図を描きたい。

・シルエット図を描きたくて、少し調べてみた。 ・以下の構成で、それっぽいグラフを描くことができた。ちなみに、k=3で、直観的にはそこそこ綺麗に分けられる筈。 ・少々癖があるのがBar Chartノードで、デフォルトだと垂直グラフなので、水平グラフにする…

【KNIME】クラスタ数を決めたい(シルエット係数)

・これまでにいくつかクラスタを扱ったが、k-meansなどの手法はクラスタ数を自分で決めなければならない。 ・何を以て「最適なクラスタ数」というのはは諸説あるが、k-means法でクラスタ数を決めるのに一般的に用いられたいるのは、エルボー法かシルエット法…

【KNIME】もっとクラスタリングしてみたい(k-Medoids)

・先のノード検索の際に出てきたk-Medoidsを使ってみる。 ・細かいことは分からないが、k-Meansのように仮想の重心を置くのではなく、データの中から重心に相当するものを選抜することでクラスタリングをするらしい。 ・特長は外れ値に比較的強いことだとか…

【KNIME】ちょっとFuzzyにクラスタリングしてみたい(Fuzzy c-Means)

・先の記事で、k-Meansで気軽にクラスタリングを試して気づいたが、似たような名前のクラスタリング手法がある。Fuzzy c-Meansとk-Medoidsだ。 ・後者はいったん置いておいて、前者を前回と同じデータに対して試した。 ・Fuzzy c-Meansノードの出力ポートを…

【KNIME】クラスタリングしてみたい(k-Means)

・KNIMEはデータ解析プラットフォームなので、Extensionを追加しなくても、デフォルトで様々な解析が可能。 ・巷で流行っている機械学習などもノードをくっつけてモデルのパラメータを与えてやればある程度実行できる。 ・今回は、クラスタリングというもの…