Amazon Location APIとPythonを使って住所を緯度経度に変換する
位置情報系の分析をしていると、店舗などの住所情報を緯度経度に変換したいケースがあるかと思います。今回は2020年12月にリリースされたAWSの位置情報サービスであるAmazon LocationをPythonから操作することでテキストの住所から緯度経度情報を取得してみました。
Amazon Locationとは
Amazon Locationとは、2020年12月にリリースされたAWSの位置情報サービスです。Amazon Locationは現時点(2021.03)では以下4つの機能を使うことができます。
- Maps
- Place indexes
- Geofence collections
- Trackers
実際にAmazon Locationのコンソール画面で見るとこのような形で上記の機能を画面上で試すことができます。
東京スカイツリーと打つと、東京スカイツリーの場所がマップ上で表示されています。
今回はこちらのPlace index上でクエリを投げて緯度経度を返す処理を、APIを通して実行してみました。
Amazon Location API
今回はAWSで用意されているSearchPlaceIndexForText APIを使って、テキストから緯度経度を取得します。
SearchPlaceIndexForText - Amazon Location Service Places
主なパラメータは以下です。
Amazon Location APIをPythonのboto3で操作する
APIをPythonで操作します。今回はboto3というライブラリでAmazon Location APIにリクエストを投げてみます
まずはboto3をインストール
pip install boto3
それでは実際にboto3を使ってAPIにリクエストを投げていきます。今回はクエリとして東京スカイツリーの住所を指定します。
import boto3 client = boto3.client('location') response = client.search_place_index_for_text( FilterCountries=[ 'JPN', ], IndexName='explore.place', MaxResults=1, Text='東京都墨田区押上1丁目1−2' )
以下のようなエラーが出た場合はIndexNameがうまく設定できていない。下記画像を参考に、Place Indexの名前を追加してあげれば問題なく動く。
ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the SearchPlaceIndexForText operation: resource[explore.plce] not found, reason: resource not found
レスポンスとしては下記のような結果が返ってくる。
{'ResponseMetadata': {'RequestId': '4f80ae56-2ee8-4559-99c1-34b6b32da5ef', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Mon, 08 Mar 2021 16:37:25 GMT', 'content-type': 'application/json', 'content-length': '448', 'connection': 'keep-alive', 'x-amzn-requestid': '4f80ae56-2ee8-4559-99c1-34b6b32da5ef', 'x-amzn-remapped-x-amzn-requestid': '4f80ae56-2ee8-4559-99c1-34b6b32da5ef', 'access-control-allow-origin': '*', 'x-amz-apigw-id': 'b4He5EiOtjMFX3A=', 'access-control-expose-headers': 'x-amzn-errortype,x-amzn-requestid,x-amzn-errormessage,x-amzn-trace-id,x-amzn-requestid,x-amz-apigw-id,date', 'x-amzn-trace-id': 'Root=1-604652c5-5af5c3456fb37df104aef536'}, 'RetryAttempts': 0}, 'Results': [{'Place': {'AddressNumber': '2', 'Country': 'JPN', 'Geometry': {'Point': [139.80945027424463, 35.71003896450161]}, 'Label': '東京都墨田区押上1-1-2', 'Neighborhood': '1', 'PostalCode': '1310045', 'Region': '東京都'}}], 'Summary': {'DataSource': 'Esri', 'FilterCountries': ['JPN'], 'MaxResults': 1, 'ResultBBox': [139.80945027424463, 35.71003896450161, 139.80945027424463, 35.71003896450161], 'Text': '東京都墨田区押上1丁目1−2'}}
Geometryと記載がある箇所に位置情報が入っているので、緯度経度を取得したい場合は下記のように書くと取得可能
response['Results'][0]['Place']['Geometry']['Point']
[139.80945027424463, 35.71003896450161]
位置も合っていることを確認(住所の範囲により、多少ずれるのは住所からの変換による限界)
Amazon Location APIの料金について
Amazon Location APIの特徴として、極めて安価という点があります。1000件あたり$0.5なのでGoogle Maps PlatformのAPIと比べて10倍安い計算になります。これはAWS一択ですね。
まとめ
最近リリースされたAmazon Location APIをPythonから操作してみました。いろいろな例で試してみましたが、住所からの検索であればほぼ正確な位置情報を取得することができるため、Google Maps APIの代わりとして使えそうです。位置情報の分析をしている方はぜひ使ってみてはいかがでしょうか。
【AWS ソリューションアーキテクト試験用まとめ】AWSオートスケーリング
はじめに
AWS 認定ソリューションアーキテクトプロフェッショナル(SAP)試験の勉強に向けた頭の整理として、以下の内容について用語レベルでまとめていきます。
勉強の進捗に合わせて記事の内容をアップデートする場合があります。
- IAMと認証連携
- セキュリティ
- コンピュートおよびロードバランシング
- ストレージ
- キャッシング
- データベース
- サービスコミュニケーション
- データエンジニアリング
- モニタリング
- デプロイおよびインスタンス管理
- コスト管理
- マイグレーション
- VPC
※この項目分類については、UdemyのUltimate AWS Certified Solutions Architect Professional 2020コースを参考にしています。
AWSオートスケーリングとは
- AWSオートスケーリングとは、アプリケーションを監視に応じて自動でリソースを調整する機能。
- EC2, ECS, DynamoDB, Auroraのレプリカなどのサービスのスケーリングに活用可能。
オートスケーリングポリシー
- シンプル/ステップスケーリング:Cloud Watchのメトリック監視に連動してインスタンスを増加・減少させる
- ターゲットトラッキング:メトリックと値を設定することで、平均CPU使用率を40%に維持・リクエストカウントを一定にするなどのカスタムスケーリング設定が可能。
RAMを指標としたスケーリングを実施したい場合はカスタムCloudWatchメトリックの設定が必要。
オートスケーリングのプロセス
オートスケーリングにより下記の操作を自動化可能
【AWS ソリューションアーキテクト試験用まとめ】Amazon EC2
はじめに
AWS 認定ソリューションアーキテクトプロフェッショナル(SAP)試験の勉強に向けた頭の整理として、以下の内容について用語レベルでまとめていきます。
勉強の進捗に合わせて記事の内容をアップデートする場合があります。
- IAMと認証連携
- セキュリティ
- コンピュートおよびロードバランシング
- ストレージ
- キャッシング
- データベース
- サービスコミュニケーション
- データエンジニアリング
- モニタリング
- デプロイおよびインスタンス管理
- コスト管理
- マイグレーション
- VPC
※この項目分類については、UdemyのUltimate AWS Certified Solutions Architect Professional 2020コースを参考にしています。
Amazon EC2とは
- Elastic Compute Cloudの略
- AWSの仮想サーバ構築サービス
EC2のインスタンスタイプ
EC2プレイスメントグループ
インスタンスをグループ化する仕組み。プレイスメント戦略として3つある。
EC2インスタンス起動タイプ
EC2 メトリック
- CPU:CPU使用
- ネットワーク:ネットワークI/O
- ステータスチェック:VMの状態を示すインスタンス状態とハードウェアの状態を示すシステム状態がある
- ディスク:ディスクの読み書き(インスタンスストアがあるEC2のみ)
※RAMはメトリックに含まれない。
スポットインスタンス
【AWSソリューションアーキテクト試験用まとめ】セキュリティ
はじめに
AWS 認定ソリューションアーキテクトプロフェッショナル(SAP)試験の勉強に向けた頭の整理として、以下の内容について用語レベルでまとめていきます。
勉強の進捗に合わせて記事の内容をアップデートする場合があります。
- IAMと認証連携
- セキュリティ【本記事】
- コンピュートおよびロードバランシング
- ストレージ
- キャッシング
- データベース
- サービスコミュニケーション
- データエンジニアリング
- モニタリング
- デプロイおよびインスタンス管理
- コスト管理
- マイグレーション
- VPC
※この項目分類については、UdemyのUltimate AWS Certified Solutions Architect Professional 2020コースを参考にしています。
AWS Cloudtrail
KMS
- KMS(Key Management Service)はAWSが提供する暗号化サービスである。IAMポリシー及びキーポリシーによって許可されたユーザがAPIによりデータを暗号・復号化することが可能。
- KMSではCMK(Customer Master Key)をキーとして暗号化が行われる。このキーはユーザ側で取得することはできず、KMSにて管理される。CMKの種類としてはAWS Managed KeyとCustomer Managed Keyの2種類がある。前者は、S3・EBS・Redshiftなどで使われるAWS管轄のキーであるのに対して、後者はユーザ側で作成・管理・適用が可能なキーである。
- KMSは呼び出しごとに4KBまでのデータしか暗号化することができない。それより大きい容量のデータを暗号化したい場合は、Envelope Encryptionを活用する。
AWS Parameter Store
- 設定と機密を管理するための安全な階層型ストレージ。
- パスワード、データベース文字列、Amazon マシンイメージ (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存可能。KMSによって暗号化した形で保持可能。
Secrets Manager
- 各リソースやアプリケーションにアクセスするための機密情報を管理するためのマネージドサービス。
- Lambdaで定義することにより、任意の日数ごとに機密情報のローテーションを実現可能。RDS(MySQL, PostgreSQL, Aurora)に統合可能。
RDSのセキュリティ
RDS周りのセキュリティ知識
- EBSボリュームやスナップショットにはKMS暗号化が適用される。
- OracleやSQL Serverは透明化データ暗号化(TDE)が適用可能。
- SSL暗号化は全てのDBに適用可能。
- IAM認証はMySQLとPostgreSQLにのみ適用。ただし、IAM以外の認証はその他RDSにて行われる。
- 暗号化されていないRDSスナップショットのコピーを暗号化可能。
- CloudTrailはRDS内で実行されるクエリを追跡することはできない。
SSL/TLS暗号化通信
- SSL(Secure Socket Layer)やTLS(Transport Layer Security)は通信を暗号化する技術。
- SSL証明書は認証局(CA: Certified Authorities)によって発行される。e.g. Symantec, GlobalSignなど。証明書には期限があるため、更新が必要。
- 通信を確立するステップをハンドシェイクと呼ぶ。
SSL通信の仕組み(公開鍵・共通鍵暗号方式の組み合わせ)
https://jp.globalsign.com/ssl-pki-info/ssl_practices/ssl_encryption.html
SNI(Server Name Indication)
中間者攻撃(MITM: Man in the Middle Attack)
CloudHSM
- Cloud HSM(Hardware Security Module)はクラウドベースのハードウェアセキュリティモジュール。
- 商用で利用可能なほとんどの暗号化キーをHSMにエクスポート可能。S3でユーザ提供キーによるサーバサイド暗号化(SSE-C)を利用する際にはCloudHSMの活用を検討すると良い。
- KMSとは異なり、CloudHSMではクライアント側が基本的に鍵の管理を行う。AWSのIAMが制御できるのはCloudHSMクラスタのCRUD権限のみ。
- 共通鍵・公開鍵の両方に対応(KMSは共通鍵のみ)。また、VPC内で管理されるため、他VPCからのアクセスがある場合はVPCピアリングが必要。無料枠なし。
- ELBとEC2インスタンス間の通信をHTTPS化したい場合、各EC2の裏にCloudHSMを用意してSSLオフロードする方法がある。
S3オブジェクトの暗号化
- SSE-S3:AWS管理キーによるサーバサイド暗号化
- SSE-KMS:KMSで管理されるキーによるサーバサイド暗号化
- SSE-C:ユーザ提供キーによるサーバサイド暗号化
- CSE(Client Side Encryption)
- GlacierのオブジェクトはAWS管理のもとすべてAES-256によって暗号化される。
S3イベント
S3のセキュリティ
S3のバケットポリシー
S3署名付きURL
S3オブジェクトロック
- WORM(Write Once Read Many)モデルを採用。一定期間オブジェクトの削除を防ぐ仕組み。
Glacier Vault Lock
- WORM(Write Once Read Many)モデルを採用。永久的に編集・削除を防ぐ仕組み。
セキュリティグループ
- インスタンス単位でのセキュリティ設定。EC2, RDS, LambdaなどのENIに紐づく。
- ステートフル:行きの通信が許可されていれば戻りも許可。逆も然り。
- CIDRまたはセキュリティグループIDを指定可能。
- デフォルトではインバウンドはDeny、アウトバウンドはAllowされている。
NACL(Network Access Control List)
- サブネット単位でのセキュリティ設定。
- ステートレス:行きと戻りの通信は個別に設定。
- CIDRのみ指定可能。(ホスト名なども不可)
- デフォルトではインバウンドもアウトバウンドもDenyされている。
DDoS攻撃(Distributed Denial of Service)への対策
AWS Shield
AWS WAF(Web Application Firewall)
- 第7層(アプリケーション層)の攻撃を対策してくれるサービス。
- ALB, APIゲートウェイ, CloudFrontなどに適用可能。CLB, EC2, S3ウェブサイトなどに適用したい場合はCloudFrontに適用。
- 適用時にはWebACLの設定が必要。IPアドレス、HTTPヘッダ、URI文字列やサイズ制限・地域制限などの設定も可能。SQLインジェクションやクロスサイトスクリプティング(XSS)を防ぐことが可能。
- 同一IPによるアクセスの頻度などをもとにアクセス制御可能。
AWS Inspector
AWS Config
AWS Managed Logs
- ロードバランサアクセスログ:ロードバランサのアクセスログ。S3に保存。
- CloudTrailログ:アカウント内のAPIコールのログ。S3またはCloudWatchLogsに保存。
- VPCフローログ:VPCのネットワークを通るIPトラフィックのログ。S3またはCloudWatchLogsに保存。
- Route53アクセスログ:Route53が受けるクエリのログ。CloudWatchLogsに保存。
- S3アクセスログ:バケットに対するリクエストのログ。S3に保存。
- CloudFrontアクセスログ:CloudFrontが受けるリクエストのログ。S3に保存。
- AWS Config:AWSリソースの変更ログ。S3に保存。
【AWSソリューションアーキテクト試験用まとめ】IAMと認証連携
はじめに
AWS 認定ソリューションアーキテクト – プロフェッショナル(SAP)試験の勉強に向けた頭の整理として、以下の内容について用語レベルでまとめていきます。
- IAMと認証連携【本記事】
- セキュリティ
- コンピュートおよびロードバランシング
- ストレージ
- キャッシング
- データベース
- サービスコミュニケーション
- データエンジニアリング
- モニタリング
- デプロイおよびインスタンス管理
- コスト管理
- マイグレーション
- VPC
※この項目分類については、UdemyのUltimate AWS Certified Solutions Architect Professional 2020コースを参考にしています。
IAM
Cognito
- IAMユーザを作成することなく、匿名ユーザに対してもウェブアイデンティティフェデレーションを実現する仕組み。MFAもサポート。認証されたユーザの権限はIAMポリシーによって制御可能。
SAML2.0
AWS Directory Services
Snowflakeの特徴と導入のメリットについてまとめた
2019年末に日本法人を設立し2020年9月に上場を果たしたSnowflake社が提供する、サービスとしてのSnowflakeについて紹介したいと思います。
Snowflakeのコンセプトおよびその特徴やメリットについて説明し、どのような企業や組織がSnowflakeを導入した方がいいかについてまとめたいと思います。
Snowflakeのコンセプト
SnowflakeとはAWS、GCP、Azureなどの主要なクラウドプラットフォーム上で動くSaaS型のデータウェアハウスです。
このSaaS型のデータウェアハウスはDWaaS (Data Warehouse as a Service)とも呼ばれており、同様なサービスとしてはAWSのAmazon Redshift、GCPのGoogle BigQuery、AzureのAzure SQL Data Warehouseなどがあります。
Snowflakeは3つのクラウドプラットフォーム(AWS, GCP, Azure)に置かれたデータに対してそれぞれ独自のデータエンジンでクエリ処理をすることができるという点で、独自のポジションを築いています。
Snowflake自体はデータや計算資源を持たず、データ処理自体はすべて各クラウド上(AWSなど)で実行されます。Snowflakeはあくまでクエリを入力して集計指示をしたりデータを管理したりするハブもしくはWrapperのような役割を持ったサービスであるというイメージが近いかもしれません。
Snowflakeの特徴
前述したようにSnowflakeにおちてはデータそのものやデータ処理機能はクラウド側で持っているため、Snowflake自体が提供しているのはユーザが触れるウェブサービス部分とAWSなどのクラウド側のサービスの2種類です。いずれもユーザ側ではインストールや管理などの作業が不要であり、メンテナンスはSnowflakeがすべて担っています。
クラウド上のSnowflakeアーキテクチャは大きくストレージ層、クエリ処理層、サービス層の3つの層から構成されています。
ストレージ層では構造的なリレーショナルデータだけでなく、JSONなどの半構造データも最適化した形で保持することができます。ユーザは直接生のデータを見ることはできず、クエリ処理された結果のみを画面上で確認することができます。
クエリ処理層では仮想ウェアハウス(Virtual Warehouse)と呼ばれる複数の独立した計算資源を用意してデータ処理を行います。これによって、複数のユーザなどから同一のデータストレージに対してクエリが発行された場合でもパフォーマンスの低下などの影響がありません。各仮想ウェアハウスの計算リソースのプロビジョニングや構成などはSnowflake側で実施してくれます。
サービス層はSnowflakeによってプロビジョンされたクラウドインスタンスを実行する部分です。サービス層では、認証、インフラ管理、メタデータ管理、クエリのコンパイル・最適化、アクセス制御などの鍵となる複数のサービスを集約した層としての機能を持ちます。
Snowflakeを導入・利用するメリット
ここまでSnowflakeのコンセプトや特徴について説明してきましたが、実際にSnowflakeを導入するメリットはどこにあるのでしょうか。
Snowflake導入の主なメリットは以下の3つであると考えられます。
- 高速なデータ処理と従量課金方式
- 仮想ウェアハウス作成による同時実行
- データおよび権限管理
それぞれについて説明していきます。
高速なデータ処理と従量課金方式
Snowflakeは独自のSQLデータベースエンジンによって高速なデータ処理を実現しています。その速度は業界最速といわれているGoogle BigQueryに匹敵、もしくはそれを超える勢いといわれています。細かいパラメータや、パーティションキー、ソートキーなどの設定をすることなくSnowflake側でチューニングしてくれるため、データサイエンティストはチューニングをほとんど意識することなく分析や集計業務に集中することができます。
また、料金についてはBigQueryなどと同様に従量課金方式です。他サービスとの価格比較については各所で議論されているものの、大量のデータ処理を行うユーザにおいてはSnowflakeの方が安くつくという見方が多いようです。
仮想ウェアハウス作成による同時実行
Snowflakeではデータを処理する際に仮想ウェアハウス(Virtual Warehouse)と呼ばれる複数の独立した計算資源によってデータ処理を実施します。この独特なアーキテクチャによって、同一のデータソースに対して複数ユーザから同時にデータ処理のクエリを投げて処理することができます。これによって複数のクエリデマンドによる遅延などが発生せず、結果としてデータ処理が高速になるというメリットもあります。
副次的にはデータが仮想化されていることによって参照しているデータに変更が加えられないという点もあり、分析者は安心して分析業務を進めることができます。
データ・インフラおよび権限管理
最後に、Snowflakeはデータやインフラの管理を完全にサービス側に任せることができるというメリットがあります。Snowflakeはハードウェアはもちろんのこと、ソフトウェア自体も保持しない完全なSaaSであり、インフラの管理やソフトウェアなどのアップデートなどは当然不要です。
権限管理についても分析者目線で嬉しい機能を持っています。分析者は新たに作成したデータなどをWebUI上から必要なロールやユーザに対して権限付与をすることができます。これによって、従来多くの企業でとっていた「インフラ担当者のみがストレージの権限管理をしている」状態から一部脱却し、分析側で暫定的に加工したデータを特定の人のみに公開するなどといった立ち回りが可能になります。
Sparkで使える機械学習(ML)パッケージについてまとめる
機械学習を扱うSparkアプリケーションの開発を行うにあたり、Spark上で使用することのできる機械学習パッケージ(ライブラリ)について調べてみたのでまとめます。
はじめに
機械学習を扱うような分析タスクや、機械学習を活用したソリューションの開発タスクなどがますます増えています。そのような中で、ビッグデータと呼ばれるような大規模データを扱わなければいけない場面が増えています。数十GB~数TBのデータに対して機械学習を適用しようとした場合、通常の単一マシンで動作するようなPythonプログラムではそのデータを扱いきれないことがほとんどです。このような場合、分散コンピューティングを実現することのできるHadoopやSparkの活用を検討していくことになります。今回はSpark上で使うことのできる機械学習(ML)パッケージについてまとめます。
大規模データに適用する機械学習タスク
扱うデータが大規模であるからといって、必ずしもSpark上で機械学習を実施する必要があるわけではありません。例えば、件数でみれば数十億のレコードを持つログデータがあったとしても、SparkやHiveなどで何かしらの集約処理をすることで単一マシンで扱えるようなデータサイズに圧縮できる場合があります。このような場合には、豊富な機械学習ライブラリが用意されているPythonプログラムで処理をするという選択をとることが多いでしょう。
主に大規模データをSpark上で扱うような機械学習タスクには分類・クラスタリング・異常検知、時系列予測、レコメンデーションなどがあります。
Sparkで使える機械学習パッケージはこのようなタスクを実現する機械学習手法が実装されています。それぞれの機械学習パッケージの特徴に触れつつ、実装されている手法の違いについて比較していきます。
Sparkで使える機械学習パッケージ
Spark上で扱うことのできる機械学習パッケージは年々増えてきていますが、まだまだ数は限られています。近年では、AWSやDatabricksなどのクラウドプラットフォーマーが提供しているSageMaker SparkやDatabricksRunTimeMLなどの機械学習基盤が増えていますが、特定のクラウド上でしか使うことができないという不便さがあります。任意の環境で使用することのできる機械学習パッケージの選択肢は少なく、Sparkが公式で提供しているSparkMLパッケージが有名です。また、Deep LearningをSpark上で扱うことのできるパッケージとしてはYahoo社が開発しているTensorflow on Sparkや、Databricks社が開発しているspark-deep-learningなどがある。
本記事では、このような機械学習パッケージの中からいくつかについて詳しく取り上げ、それらの違いについて比較していきます。
Mahout
Apache Mahout*1は分散コンピューティングの歴史の中で最初期の機械学習パッケージです。MahoutはIBM*2が2011年に発表し、その後Hadoopの発展と共にOSS化が進んだパッケージです。Mahoutの読み方はマハウトであり、アイコンがHadoopの象に乗っていることからもわかるように「象使い」という意味です。現在はほとんど開発が進んでいないようです。
Mahoutは、従来Hadoop上で動く機械学習パッケージでしたが、現在はSpark上で動作します。
用意されている主な機械学習手法は以下の通りです。
このように実装されている手法は極めて限定的であるため、現在では使いどころはないと考えてよいと思います。
SparkMLlib/SparkML
SparkMLlib及びSparkMLはSpark公式*3が提供している機械学習パッケージです。2013年から開発が始まっており、最も広く使われているSparkの機械学習パッケージです。いずれもSpark本体と同様に、Scala, Python, Java, Rなどの言語からアクセスすることができます。SparkMLlibはSpark初期の機械学習パッケージとして一定の支持を得ていましたが、現在ではメンテナンスモードとなっておりこれ以上の追加開発はされない予定となっています。一方で、SparkMLはSpark2.0に向けて開発された比較的新しいパッケージであり、こちらは現在でも広く使われています。
SparkMLlibとSparkMLの違いとしては、SparkMLlibはRDDで扱うことを想定して実装されており、SparkMLはDataFrameおよびDatasetで扱うことを想定して開発されています。このように、大きな違いがある両者ですが、Github上では同一のリポジトリにて管理されています。また、両者に実装されている機械学習手法も共通のものが多いです。以下にその一部を列挙します。
- 分類器: ナイーブベイズ、ロジスティック回帰、SVM、決定木、ランダムフォレスト、GBT
- クラスタリング: Kmeans, LDA, 混合ガウスモデル
- レコメンデーション: Alternating Least Square(ALS), Matrix Factorization
- 回帰モデル: 一般化線形モデル、Ridge回帰、Lasso回帰
このように用意されている手法は限られているものの、一般的によく使われるアルゴリズムはおさえてあるようです。
MMLSpark
MMLSpark*4(Microsoft Machine Learning for Apache Spark)は2017年にMicrosoft社がAzure向けに開発・リリースした機械学習パッケージです。SparkMLと同様に、Scala, Python, Java, Rなどの言語によりアクセスすることができます。本パッケージはAzureクラウド向けに作られているものの、任意の環境で使用することが可能であるという特長があります。
MML Sparkに実装されている主な機械学習手法は以下の通りです。
- 分類器: LightGBM
- レコメンデーション: Smart Adaptive Recommendations (SAR)
- その他: 自然言語処理、画像認識、DeepLearning系モデル
注目すべき点として、データサイエンティストに人気なLightGBMが実装されているということがあります。SparkMLそのものにはxgboostも実装されていないため、この点では優れたパッケージであるといえます。また、レコメンデーション手法である Smart Adaptive Recommendations (SAR)が実装されていることは、ALSによる協調フィルタリングしか存在しないSparkMLと比較するべき点でもあると思います。この手法では、単純な協調フィルタリングではなく、コンテンツ間の情報も活用することでコールドスタート問題を解決するものであるとのことなので、実用面で活用できるのではないかと考えています。