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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

機械学習

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

Python

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

Q&A

1回答

2891閲覧

SVMを用いた分類問題(sign関数を含んだpythonのコード)

kenkusaba1014

総合スコア3

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

機械学習

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

Python

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

0グッド

0クリップ

投稿2021/12/30 09:11

編集2021/12/30 10:28

【問題】
以下のデータセットがあります。

XY
1-1
2.5-1
3-1
41
51

このとき、f(x) = sign(wx+b) をSVMで学習する場合、wとbの値は次のうちどれでしょうか?

【選択肢】

  1. w=1, b=-3.5
  2. w=1, b=3.5
  3. w=3.5, b=-1
  4. w=3.5, b=1

【私の回答】
単純に、与えられた式に選択肢を代入すると、選択肢1 「f(x) = sign(x+3.5b)」にすることで
与えられたデータセットと整合するのですが、このやり方でよいのでしょうか?
※この導き方でいいのかが判断が出来ないため、今回質問した次第です。

【その他(追記)】
本問題からサポートベクトルの数を導く課題はあるが、これは手計算で解決済
http://study-ai.com/p_ml_5-2-1/

【その他】※こちらはおまけなので無視頂いて大丈夫です。
scikit-learnのアヤメセットのような予めセットされたものであれば、見様見真似(要はコピペ)でpythonに
実装出来るのですが、sign関数とかが出てくると現時点では応用する実力がついておらず、
お恥ずかしながら簡単なデータセットでも実装出来ない状況です。
もしよければコードをお教え頂ければ助かります。

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

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

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

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

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

aokikenichi

2021/12/30 09:48

丸投げの質問はルール違反です。 また、タイトルではSVMとありますが質問内容はSVMが関係ないようです。 何が求められていて、どこまでできて、何がわからないのか を整理するところからかなと思います。
kenkusaba1014

2021/12/30 10:25

大変失礼ですが本質問は丸投げではありません。初学者なりに考えた上でこれといった回答を導くことができず投稿した次第です。尚、本内容はSVMと関係しております。 ※ここには記載していませんが、前段の問いでサポートベクトルの数を算出する問題もあります(これは理解済)。 http://study-ai.com/p_ml_5-2-1/
aokikenichi

2021/12/30 12:26

https://teratail.com/cautions_question をまずご確認ください。 --- コードをください・デバッグしてください等の丸投げの質問 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。 問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。 まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください。 --- またSVMと関係しておりますと言われましても、前段の問いでと言われても質問の中に記載されていなければ分かりません。 初心者だから失礼で良いということではありません。なぜ喧嘩腰なのでしょうか。理解に苦しみます。
kenkusaba1014

2021/12/30 12:59

恐らく回答者様(専門家?)と私(初学者)の認識の違いかと思います。 「何が求められていて、どこまでできて、何がわからないのかを整理するところからかなと思います。」 とありますが、初学者は「どこがわからないかもわからない」事の方が圧倒的に多いため、そのきっかけを掴むべく試行錯誤しております。回答者様は恐らく長年の蓄積があり、「何がわかる、わからない」というのをすぐに判断出来るのかと思われますが、初学者というのはそのきっかけを掴む事すら難しいため、何かを得ながら少しずつ前進していくものだと思っています(これは別にプログラミングの世界に限ったことではないかと)。 そこをご理解頂く事なく、ご自身の認識だけの目線で「何がわかっているかを整理云々」と記載していますが、回答者様こそ何故そこまで上から目線なのか、私こそ理解に苦しみます。 ※逆の立場であれば特に管理人的なコメントは残さず、サッとコメントして????を頂き喜ぶor無視するだけかと思います。 尚、初回投稿後私の質問を一部修正しましたが、私が今回質問させて頂いているのはコードをお教えいただく事ではなく、「私の回答のアプローチが正しいか、もしくは別の方法があるのか」、という事をお伺いしています。そこをご確認頂く事なく「コード丸投げはダメ」という一方的な前提でのご指摘は違うと思います。 長文になりましたが、初学者なりに調べ切った上で投稿させて頂いている分、回答者様のコメントを看過出来なかった為お伝えさせて頂きました。
aokikenichi

2021/12/30 13:08

あなたはコードを例示しておりませんし、「コード丸投げはダメ」とは誰も何も申してませんので 私独自の見解ではなくTeratailでのルールですので https://teratail.com/cautions_question を今一度ご確認ください。
guest

回答1

0

求めるものがf(x) = sign(wx+b)におけるwとbなのであれば、まずg(x) = wx+bの形式に変換することを考える必要があります。つまり、この変換後のモデルをsvmによって学習させることでwとbが求まり、g(x)をf(x)に戻すことで本来の推計したい値が得るようにします。
f(x)には邪魔なsin関数が含まれています。そこでsin関数の逆関数にf(x)を代入させます。(この結果をg(x)とします)そうすることで、g(x)=wx+bとなるのであとはその結果をSVMで学習させればいいことになります。sin関数の逆関数はnumpyのなかにarcsin()という関数があります。よって、被説明変数をnumpy.arcsin()を使って変換します。そして、この変換後の値と元の説明変数を用いてsvmによる学習を行えば求めたいwとbが得られます。
具体的な実装は、svmの学習に何を使っているのかや与えられるデータの変数としての形式がわからないので何とも言えませんが、上記の方向性で試してください。

投稿2021/12/30 17:08

R.Shigemori

総合スコア3376

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問