質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

494閲覧

画像や文章の機械学習に、画像や文章以外の特徴量も追加したい場合

shun_31415

総合スコア7

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

4クリップ

投稿2018/09/07 02:54

編集2018/09/07 04:49

初質問です。
タイトルどおり、画像や文章を機械学習させる際に、
画像や文章以外の特徴量も追加したい場合はどうすればよいのかを知りたいです。

例えば、画像の機械学習を行いたいとして、
ニューラルネットワークを用いて、100*100pxの写真を5000枚学習させるとします。
その結果、例えば、馬とか猫とか人とか機械に分類してくれる学習器ができました。

ところで、写真の画像データの他に、この写真には撮影場所や撮影時間いう特徴量(feature)があります。
そこで、この撮影場所、撮影時間という特徴量もデータに追加したいです。
その場合は、特徴量は10001番目、10002番目に追加するのでしょうか。

また、文章の機械学習を行いたいとして、
サイトの文章をベクトル化して、文章の雰囲気(女性向け、男性向け等)を分別するとします。
ベクトル化した結果、長さ2000のリストとなりました。文章は10000文あります。
文章は、10サイトから持ってきたため、どこのサイトの文章かを特徴量として追加したいです。
その場合は、特徴量は2001番目になるのでしょうか。

なんとなく、こうした場合、画像や文章そのものに対して、新しく追加した特徴量は軽視されるような気がしますが、
考え方としてこれであっているのでしょうか。
他に方法があるのか知りたいです。

よろしくお願いいたします。

#補足
10001番目と考えたのは、KojiDoiさんがおっしゃるように、「画像の機械学習の結果」を新しい特徴量として、試しに簡単な機械学習(ロジスティック回帰、SVM)を行ってみた場合、大幅に性能が低下した経験があるためです。(最初の質問にかけばよかったですね、すいません。)

この原因として、今回の例だと、
「画像の機械学習の結果」と、
「「撮影時間」、「撮影場所」等の特徴量(画像以外)からの学習結果」
であれば等価であり、これらの結果からアンサンブル学習を行えば良いのかなと思いましたが、
「画像の機械学習の結果」と「撮影時間」、「撮影場所」では、
重みが違いすぎてうまくいかないのかなと考えました。
もちろん、試しに追加した特徴量が悪かった可能性もありますが、
このケースの「撮影時間」や「撮影場所」のように意味はありそうな特徴量です。

なお、今回質問したいケースとしては、追加の特徴量(「撮影時間」「撮影時間」等)だけでは、
予測精度が出ないため、
「「撮影時間」、「撮影場所」等の特徴量(画像以外)からの学習結果」
は役に立たないけど、一つ一つの特徴量は有効だと考えられる場合です。

set0gut1👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

質問に記載される10000の特徴量が、本来の100×100の2次元をベクトルにしたものということであれば、これに任意の特徴量を付加して学習する方法がありです。追加したものが軽視されることを懸念しているようですが、特徴量は各々を独立して処理するので問題にならないと思います。むしろ、本来は100×100で意味のある情報だった画像がピクセル単位で捉えられてしまうほうが、問題になるかもしれません。

上記を気にするのであれば、いったん、100×100の画像から畳み込みやプーリングなどを使って特徴量を抽出してから任意の特徴量を追加したほうがいいかもしれません。特に文章をOne-Hotでベクトル化している場合はスパースになるので、何らかの処理をしたほうがいいと思われます。

上記は単純に特徴量を追加するアプローチですが、「画像は画像だけで学習させ、任意の特徴量はそれだけで学習させ、その結果(クラスに所属する確率)を使ってもう一度学習させる」という方法もいいかと思います。これであれば、各々(画像とそれ以外)を独立した存在としつつ、統合させることができそうです。

投稿2018/09/08 21:13

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shun_31415

2018/09/09 23:44

わかりやすい説明をありがとうございます。 だいぶクリアになりました。 ご回答いただきありがとうございます。
guest

0

普通はCNN等(教師あり学習でもオートエンコーダーでもいいですが)で画像を数百から数千次元くらいのベクトルに落として、そこにconcatするのでは。

機械学習の結果からやることもできます。

  • 機械学習の出力は確率として出す
  • 子分類器の性能はがんばる
  • まとめるところの分類器の性能でも努力が要る

この2点に注意すればそれなりに性能はあがるはずですが、でも微妙かも。

投稿2018/09/07 08:13

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shun_31415

2018/09/09 23:41

R.shigemoriさんからもご指摘があるとおり、これらの方法が良いようです。 ご回答ありがとうございます。
guest

0

すくなくとも、そこで10001番目という発想が出てくるのはおかしいでしょう。その特徴量は「画像の機械学習の結果」と同列に扱うべきもののはずです。

投稿2018/09/07 04:05

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shun_31415

2018/09/07 04:51

ご回答ありがとうございます。 おっしゃる通りかとも思いましたが、念の為、補足説明を追加しました。
KojiDoi

2018/09/07 04:57

補足説明を見ましたが、上記見解を修正する必要を感じません。重みづけがおかしいなら適切な重みづけを行うアルゴリズムを考えればいいので、「撮影場所」がサンプルの10001番目になるなんてことはありえないでしょう。はっきり言えば論理がめちゃくちゃだと思います。
shun_31415

2018/09/09 23:39

補足に対するご回答もしていただき、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問