機械学習

ランク学習の解説

今回の記事はPythonのsklearnでランク学習を解説します。 目次 1. ランク学習とは 2. ランク学習のアプローチ 1. ランク学習とは ランク学習は英語では ”Learning to rank” といってLTRの略称、または ”Machine-learned rankingといってMLRとよく省略されます。ランク学習は一般に教師あり、半教師あり、または強化学習を用いてランキング問題を解く方法です。たとえば、どこかの検索エンジンでキーワードを入力して、これらのウェブページをどういう順番で表示するのが良いのかを学習するのがランク学習になります。ランク学習を利用することで、検索エンジンではユーザーに見られる確率が高いページを上位に表示したり、ショッピングサイトではおすすめの商品を提示することができるようになります。 ランク学習機械学習と別の機械学習の違い – LTRの入力データはアイテムのリストです。LTRの目的は、これらのアイテムの最適な順序を見つけることです。 – LTRのアイテムが正確なスコアより、アイテム間の相対的な順序のほうが大切です。 2. ランク学習のアプローチ ポイントワイズアプローチ(Pointwise Approach) ポイントワイズアプローチの入力データには、各単一ドキュメントの特徴ベクトルが含まれています。 出力スペースには、個々のドキュメントの関連度が含まれます。 関連度の観点から、さまざまな種類の判断をグラウンドトゥルースラベルに変換できます。 ペアワイズアプローチ(Pairwise Approach) ペアワイズアプローチの入力データには、特徴ベクトルで表されるドキュメントのペアが含まれています。 出力スペースには、ドキュメントの各ペア間のペアワイズ設定({+ 1、-1}から値を取得)が含まれます。 さまざまな種類の判断は、ペアワイズ設定の観点からグラウンドトゥルースラベルに変換できます。 リストワイズアプローチ(Listwise Approach) リストワイズアプローチの入力データには、クエリに関連付けられたドキュメントのセットが含まれます。リスト方式の出力スペースには、ドキュメントのランク付けされたリスト(または順列)が含まれます。 ランク付けされたリストの観点から、さまざまな種類の判断をグラウンドトゥルースラベルに変換できます。 論文:”Learning to Rank for Information Retrieval”、Tie-Yan Liu of Microsoft Research Asia https://www.cda.cn/uploadfile/image/20151220/20151220115436_46293.pdf

PySparkでのk-meanクラスタリング

関係記事:クラスター数の決め方の1つシルエット分析、 k-means++ ビッグデータ処理や機械学習の場合は、巨大データの取り扱いを目的とした分散処理のフレームワークが必要です。特定のアプリケーションに関する実行性能はSpark MLです。今回の記事はSpark MLでk-meanのクラスタリングを解説します。 目次 1. PySparkのクラスタリング 2. 実験・コード __2.1 ライブラリーのインポート __2.2 データ処理 __2.3. シルエットスコアの比較 __2.4. クラスタリングのモデルを作成 __2.5. 可視化 1. Spark MLのk-meanクラスタリング Spark MLはSparkの統計処理、機械学習を分散処理するライブラリです。k-meanはは最も一般的に使われる、事前に定義したクラスタ数までデータを群にする、クラスタリング アルゴリズムです。 spark.mlでのパラメータ: – k は要求するクラスタの数です。 – maxIterations は実行の繰り返しの最大数です。 – initializationMode はランダム初期化 – initializationSteps は k-meansアルゴリズム内でのステップ数を決定します。 – epsilon はk-meansが収束したと見なす距離の閾値を決定します。 – initialModel は初期化に使用されるクラスタの中心点の任意のセットです。 2. 実験・コード 概要 データセット: UCI機械学習リポジトリの白ワインの属性 環境: Databricks Runtime Version: 6.0 ML (includes …

PySparkでのk-meanクラスタリング Read More »

ハフ変換とLSDによる直線検出の比較

関連記事: 画像解析 前回の記事は「OpenCV + Pythonでの直線検出」を解説しました。今回はPythonでハフ変換(Hough)とLSDによる直線検出を比較します。 目次 1. ハフ変換(Hough Transform) 2. LSD (Line Segment Detector) 3. ハフとLSDの比較 4. 実験・コード __4.1 データロード __4.2 ライブラリのインストール __4.3. 直線検出 __4.4. 結果比較 1. ハフ変換とは ハフ変換 (Hough変換) は、画像処理で画像の特徴抽出法の一つです。現在広く用いられている変換法はRichard Duda及びPeter Hartが1972年に発明しました。ハフ変換の基本原理は点を通る直線は無限個存在し、それぞれが様々な方向を向きます。ハフ変換の目的は、それらの直線の中で、画像の「特徴点」を最も多く通るものを決定します。 直線の式は次のようになる: ハフ変換では画像空間からρ-θパラメータ空間への変換を行います。ある画像空間上に孤立点があり、点の座標が(x, y)である場合、パラメータ空間への変換を行うとどのような結果が得られるのか、考えることにします。 ρ : 座標(x, y)を通る直線に対し、原点から垂線を下ろしたときの長さ θ : 座標(x, y)を通る直線に対し、原点から垂線を下ろしたときにx軸となす角度 論文:Use of the Hough Transformation To. Detect Lines and Curves in Pictures …

ハフ変換とLSDによる直線検出の比較 Read More »

PythonでCatBoostの解説

関連記事: 決定木分析、ランダムフォレスト、Xgboost Kaggleなどのデータ分析競技といえば、XGBoost, Light GBM, CatBoost の決定木アルゴリズムをよく使われています。分類分析系と予測分析系の競技のKaggleの上位にランクされています。今回の記事はCatBoostの新しい決定木アルゴリズムを解説します。 目次 1. CatBoostとは 2. 実験・コード __2.1 データロード __2.2 10,000件くらいサンプルデータを作成 __2.3. XGBoost グリッドサーチで 81モデルから最適なパラメータを探索 __2.4 XGBoost 最適なパラメータのモデルを作成 __2.5. Light GBM グリッドサーチで 81モデルから最適なパラメータを探索 __2.6 Light GBM最適なパラメータのモデルを作成(Categorial Feature除く) __2.7 Light GBM最適なパラメータのモデルを作成(Categorial Feature含む) __2.8. CatBoost グリッドサーチで 81モデルから最適なパラメータを探索 __2.9 CatBoost 最適なパラメータのモデルを作成(Categorial Feature除く) __2.10 CatBoost 最適なパラメータのモデルを作成(Categorial Feature含む 3. モデル評価評価:学習時間 AUC 1. CatBoostとは CatBoostはCategory Boostingの略で、決定木ベースの勾配ブースティングに基づく機械学習ライブラリ。2017にYandex社からCatBoostが発表されました。 特徴: 1)回帰予測、分類の教師あり学習に対応 2)過学習を減らして、高い精度、学習速度を誇る 3)GPU、マルチGPUに対応 決定木ベースのアルゴリズムの歴史 CatBoostは、オーバーフィットを減らし、データセット全体をトレーニングに使用できるようにする、より効率的な戦略を使用します。 …

PythonでCatBoostの解説 Read More »

Python-OpenCVでのRGBからHSVに変換

画像解析一覧 画像解析では、画像の色空間を変換することは一般的な操作になります。OpenCVは150種類以上の色空間の変換を用意しているが,その中で最も広く使われている変換方法は、BGR からGrayに変換とBGRから HSVに変換であります。今回の記事はBGRから HSVに変換する方法を解説します。 目次 1. 色空間とは 1.1 RGB色空間モデル 1.2 HSV色空間モデル 2. RGBからHSVに変換の換算式 3. PythonのOpenCVコード:RGBからHSVに変換 3.1データロード 3.2 RGBの画像を可視化 3.3 HSVに変換 3.4 HSVの画像を可視化 1. 色空間とは 色空間(カラースペース)とは色を定量的に表現方法です。代表的な色空間にはRGBがあるが、これは、赤(Red)、緑(Green)、青(Blue)の光の3原色を利用した色空間であり、コンピュータのモニタへの出力や、アプリケーション上の色設定などでよく用いられます。他には、テレビで用いられているYCbCr/YPbPr、印刷分野で主流であるCMYKやDICなどがあります。 1.1 RGB色空間モデル コンピュータやテレビの映像表示に使われるディスプレイでは、色を区別する方法として RGB モデル(RGB model)が広く使われています。それに合わせて、Webサイトを制作する際に色を指定する場合にも RGB にもとづく色表記が使われます。赤(red)、緑(green)、青(blue)の 3 つであり、これらを総称して原色(primary colors)と呼びます。それぞれの要素の明度を最小の 0 から最大の 255 の間に置きます。すべての原色が混ざると白(white)になります。他方で、すべての原色が欠けると黒(black)になります。 1.2 HSV色空間モデル HSV モデル(HSV model)とは、色相(hue)・明度(lightness)・彩度(saturation)の 3 つの基準から色を分類するモデルです。HSV モデルにおいて使われる 3 つの基準を総称して色の三属性(three attributes of color)と呼びます。HSV モデルは人間が色を知覚する方法と似ていることからデザイナーの間で広く使われています。 …

Python-OpenCVでのRGBからHSVに変換 Read More »

PySparkでの相関行列と可視化(ヒートマップ表)

PySparkのデータ処理一覧 データの2つの系列間の相関関係は統計では一般的な操作になります。今回の記事はPySparkで相関行列行います。PythonのPandasとSpark MLで相関行列を計算してSeabornでヒートマップ表を作成するやり方を比較します。 目次 1.環境とライブラリ(Spark ML) 2.相関行列とは 3.実験のコード 3.1 データセットのロード 3.2 Pandasの相関行列 3.3 ヒートマップ表 3.4 Spark MLの相関行列 3.5ヒートマップ表 4. まとめ 環境 Databricks: Runtime: 5.5 LTS ML (includes Apache Spark 2.4.3, Scala 2.11) 5.5 LTS MLはSpark MLのライブラリがあります。 Spark ML Sparkの統計処理、機械学習を分散処理するライブラリです。spark.mllibとspark.mlの二つのパッケージがあります。SparkのMLlibはMLに移行しつつあります。Spark2.0からはRDDベースのMLlib APIは保守のみになり、今後はDataFrameベースのAPIが標準になるそうです。 ここではPySparkでML APIを使い、相関行列を行います。 2.相関行列とは 相関係数とは、2つのデータの(直線的な)関係性の強さを −1 から +1 の間の値で表した数のこと。相関行列とは、相関係数を並べたものであり、その意味から対称行列になります。 相関係数の計算式 xと yの相関係数 rは次の式で求まる。 ここで、sxy はxとyの共分散 sx は xの標準偏差 sy …

PySparkでの相関行列と可視化(ヒートマップ表) Read More »

DBSCANクラスタリングの解説と実験

前回の記事は密度ベースクラスタリングのOPTICSクラスタリングを解説しました。 今回の記事はもう一つの密度ベースクラスタリングのDBSCANクラスタリングを解説と実験します。 目次: 1.DBSCANとは 2.Sci-kit LearnのDBSCAN 3.コード・実験 (K-Mean++ vs DBSCAN) 4.まとめ DBSCANとは DBSCAN (Density-based spatial clustering of applications with noise ) は、1996 年に Martin Ester, Hans-Peter Kriegel, Jörg Sander および Xiaowei Xu によって提案された密度準拠クラスタリングのアルゴリズムです。半径以内に点がいくつあるかでその領域をクラスタとして判断します。近傍の密度がある閾値を超えている限り,クラスタを成長させ続けます。半径以内に近く点がない点はノイズになります。 長所 1)k-meansと違って,最初にクラスタ数を決めなくてもクラスターを作成できます。 2)とがったクラスターでも分類できます。クラスターが球状であることを前提としない。 3)近傍の密度でクラスターを判断します。 短所 1)border点の概念が微妙で,データによりどのクラスタに属するか変わる可能性があります。 2)データがわからないとパラメータを決めるのが難しいです。 DBSCANの計算プロセスの例1 DBSCANのアルゴリズムは半径以内に確認します。半径以内に3個以上の点があれば、グループを成長させ続けます。左の2列は2点しかないなので、グループに属しません。また、一番下の行は半径以外なので、グループに属しません。 DBSCANの計算プロセスの例2 以上の例と同じ、DBSCANは半径以内に確認して、グループに属するかどうか判断します。最初は上からと下からでグループを確認します。上の確認は半径以外になると、途中に止まりました。このようにDBSCANのアルゴリズムはすべての点はグループを確認します。   DBSCANの論文: A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases …

DBSCANクラスタリングの解説と実験 Read More »

Statsmodelsでの回帰分析

前回の記事は線形回帰を解説しました。 回帰分析の説明はこの記事を参考してください。 線形回帰 回帰分析を行うとき、 Scikit-learn と Statsmodelsのライブラリをよく使います。前回はScikit-learnで回帰分析を行いました。今回はScikit-learnとStatsmodelsのライブラリを比較して、回帰分析を解説・実験します。 目次: 1. ライブラリ 1.1 Scikit-learnの回帰分析 1.2 Statsmodelsの回帰分析 2. コード・実験 2.1 データ準備 2.2 Sklearnの回帰分析 2.3 Statsmodelsの回帰分析 2.4 結果の説明 3. Partial Regression Plots 4.まとめ 1.ライブラリ 1.1 Scikit-learnの回帰分析 sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) パラメータ設定: fit_intercept : boolean, optional, default True: False に設定すると切片を求める計算を含めません。 normalize : boolean, optional, default False: True に設定すると、説明変数を事前に正規化します。 copy_X : …

Statsmodelsでの回帰分析 Read More »

クラスタリングのアルゴリズム評価するFMI( Fowlkes-Mallows Index)

前回の記事はアルゴリズム評価を解説しました。 今回はクラスタリングのアルゴリズム評価するFMIを解説します。 FMI (Fowlkes-Mallows index)とは The Fowlkes-Mallows 指標 または、Fowlkes-Mallows スコアはクラスタリングのアルゴリズム評価する方法です。2つのクラスタリングアルゴリズムの結果間の類似性を判断するために使用されるこの方法。さらに、クラスタリングアルゴリズムの結果と実際のラベルも使われます。FMIの形式は下記になります。 TPは真陽性の数です。つまり、真のラベルと予測ラベルの両方で同じクラスターに属するポイントの数です。 FPはFalse Positiveの数です。予測ラベルではなく、真のラベルの同じクラスターに属するポイントの数です。 FNはFalse Negativeの数です。真のラベルではなく、予測ラベルの同じクラスター内です。 スコアの範囲は0〜1です。高い値は、2つのクラスター間の類似性が高いと示します。 今回は、ラベルがあるクラスタリング方法の評価をしていきます。 FMIのサンプル データセット:digitデータ 8×8の画像が1797枚(0〜9のラベル) クラスターアルゴリズム: K-Means, MeanShift モデル評価:FMI (Fowlkes-Mallows index) ライブラリの読み込む import numpy as np import pandas as pd import os import seaborn as sns import matplotlib.pyplot as plt from tqdm import tqdm_notebook from sklearn import datasets from sklearn.cluster import KMeans …

クラスタリングのアルゴリズム評価するFMI( Fowlkes-Mallows Index) Read More »

密度ベースのOPTICSクラスター

  前回の記事はk-means++, x-meansなどのクラスター分析を解説しました。 今回は密度ベースのOPTICSクラスターを解説します。 OPTICSクラスターとは OPTICS (Ordering Points To Identify the Clustering Structure)は密度ベースのクラスター分析(Density-based Clustering)の手法の一つです。ポイントが集中しているエリアおよび空または疎なエリアによって分離されているエリアを検出します。このアルゴリズムは、空間位置および指定された近傍数までの距離のみに基づいてパターンを自動的に検出します。DBSCANと似ているアルゴリズムになります。そのためクラスター数を決める必要がないアルゴリスムになります。 DBSCAN と OPTICSの検索距離 DBSCAN では、3つの点が存在しています。クラスターの中心、クラスターから到達できるもの、そしてノイズになります。特定のポイントからの検索距離の範囲内でクラスター内にない場合は、そのポイントにはノイズとして他のクラスターだとマークが付けられます。そのためクラスタリングといいつつ外れているものも検出することになります。 OPTICS の場合、検索距離は中心距離と比較される最大距離として扱われます。マルチスケール OPTICS は、最大到達可能性距離の概念を使用します。この距離は、あるポイントから、検索によってまだ訪問されていない最も近いポイントまでの距離です。 sklearn.cluster.cluster_optics_dbscanでOPTICSクラスターを作成します。scikit-learn 0.21.3が必要です。 pip install -U scikit-learn ライブラリのロード %matplotlib inline from sklearn.cluster import OPTICS, cluster_optics_dbscan import matplotlib.gridspec as gridspec import matplotlib.pyplot as plt import numpy as np サンプルを作成 np.random.seed(0) n_points_per_cluster = 250 C1 …

密度ベースのOPTICSクラスター Read More »