コサイン類似度の問題が解ける気がしない

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
jataroさん  
(No.1)
令和5年度の科目B公開問題(https://www.ipa.go.jp/shiken/mondai-kaiotu/sg_fe/koukai/t6hhco0000003zx0-att/2023r05_fe_kamoku_a_qs.pdf)を解いてみました。
ですが問5のコサイン類似度に関する問題に出くわし面喰ってしまいました。
ほかの問題はすべて解けましたが、これだけは解ける気がしません。
こういった問題は捨てる、というのは危険でしょうか?
一応トレースに挑戦しましたが、お恥ずかしい話そもそもコサイン類似度自体が何のことやらなので、こんなのがたくさん出たら...と不安です。
2023.07.07 11:35
電タックさん 
FE ブロンズマイスター
(No.2)
20問ある科目B試験の途中で難しそうだと感じたら飛ばすのは全然有りです。
余った時間で未着手orマークした問題を見ていったほうが確実に合格に近づくと思います。

参考にならないかもしれませんが、私の場合科目Bで50分までは前から解いて、50分経ったら余裕のあるうちに情報セキュリティをやってました。

科目Bの合格点が6割(およそ12問)のはずなので情報セキュリティは確実に拾うとしてプログラム問題を8問取れれば良いはずなので時間をかければわかる問題に時間を使うのが合格の近道だと思ってます。

ちなみに当該問題ですが私も最初の説明を読んでも、で?何が求められるんだ・・・となりますが、問われていることはこの数式を完成させてくださいなので意外にシンプルだったりします。
要は時間に追われず如何に問題を焦らず見れるかだと思ってます。
2023.07.07 12:20
earlierさん 
(No.3)
・コサイン類以度とは…
2つのベクトルがどの程度同じ方向を指してるかを、-1~1の数字で表す尺度

ですが、こんな知識要りません。ベクトルの知識も三角関数の知識も不要です。
私もコサイン類以度なんて知りませんでした。


・問題文には色々書いてますが、
  このプログラムは、

2つの一次配列(ベクトル)
    vector1{a1,a2,…an}
    vector2{b1,b2,…bn}
を入力すると、
    a1b1+a2b2+…+anbn / √(省略)√(省略)
の結果(コサイン類以度)を返す

というだけです。


・計算過程は、
  1つめのfor文で計算式の分子
  2つめのfor文で計算式の分母左側の平方根
  3つめのfor文で計算式の分母右側の平方根
  最後に分子/分母


他の問題が解けているということはこの問題を解ける実力はもっていらっしゃると思います!
捨てるのは危険というより、もったいないですね。

とはいえ、サンプルで出されたってことは、受験者がパッと見分からない単語でビビらせてくるのは本試験でもあると思います。

知らない言葉に惑わされず、問題の本質、何を入力して、何を出力したいかをきちんと捉え、正しい順にコードを追うのが大事だと考えます。


参考になれば幸いです。
2023.07.07 12:41
対象oさん 
(No.4)
自分もコサイン類似度のことは全く分かりませんでしたが、
similarity ← numerator ÷ denominator
の部分でnumeratoが分子、denominatorが分母だということと、vector1がaに対応しててvector2がbに対応してるとわかれば解ける問題だと思います。
一個目のfor文で分子の部分、つまりvictor1[i]とvictor2[i]をかけてそれをすべて足してるので、エかオかカだとわかります。(分子には平方根も乗算もでてこないので、消去法でもわかります)
二個目のfor文はvector1[i](a1,a2, …, an)の計算、つまり分母の左側の部分の計算をしてるので、三個目のfor文ではvector2[i](b1, b2, …, bn)の計算、つまり分母の右側の計算をしてるとわかります。
分母を見ると、左側の部分と右側の部分をかけてるので、二個目のfor文で求めたもの(denominator)に、三個目のfor文で求めたもの(temp)の正の平方根をかけてるのが答えだとわかるので、エが正解だとわかりました。
わかりにくかったらすみません。
2023.07.07 12:46
jataroさん  
(No.5)
電タックさん、earlierさん、対象oさん、ありがとうございます。
皆さんもコサイン類似度を聞いたことがないとの事で、最初は自分の勉強不足を不安に思っていましたが、少し安心できました。
皆さんの解説、わかりやすいです。確かに数式を完成させるというシンプルなものですね。
こういう耳にしたことがないワードを問題にちらつかせ出題者を惑わせるというのは資格試験の定石なのだなと感じました笑

プログラムと数式の対応は理解できました。焦らず確実に解いていこうと思います。
2023.07.07 13:17
まきさん 
(No.6)
この問題を見て解いたのはSUM合計の問題と似ているかと思いました
足した数に更に足す数入れて新しい合計を出す感じかなと思いました
平方根というに変わっただけで
2023.07.07 13:35
jataroさん  
(No.7)
一応明日が試験本番です。
私は以前Java Goldを受験し合格する事が出来たのでトレースや式の回答に苦手意識を持っている訳ではないのですが、こういったコサインなんちゃらとかいう難しいワードを投げてこられるとブレーキがかかってしまうんですよね。

科目Aは800問解いて677問正解の87%で、科目Bサンプルは20問のうち16問程は解けたのでさすがに自信持ってもいいのかなぁと思っています。
2023.07.07 14:44
手紙さん 
(No.8)
ataroさんがんばれー!!!
このスレで、問題の見方が身について自分も勉強なりました。
用報告をお待ちしております!!
2023.07.07 23:33
jataroさん  
(No.9)
基本情報、受験してきました。
結果は科目A670点、科目B795点でで突破しました。

どこまで言っていいのか分かりませんが、科目Aが私の体感では、かなり難しく感じました。
科目Bはサンプル問題を回せば突破できるのでは無いでしょうか。

一発合格できて良かったです。

このスレッドで解き方をレクチャー頂いたこと、ありがとうございました!
皆さまの健闘、願っています!
2023.07.08 18:31
手紙さん 
(No.10)
jataroさんおめでとうございます!!!!
いいなああーーー!!!!
お疲れさまでしたーーー!!!

科目Bに関して、自分はまだ基礎ですが、あやかりたいです!!
科目Aの件、了解です、、、、(21年度までやろうと思っていますが、新しい横文字はどうしましょうかね、、)
2023.07.09 21:20
対象oさん 
(No.11)
jataroさん一発合格おめでとうございます
科目Bに注力してますが、科目Aが難しいと聞いてゾッとしています…
2023.07.09 23:06
手紙さん 
(No.12)
jataroさん、折角合格を手にされたので、おこがましくも、AとBの金言をこれから受ける人に、今一度欲しいです。
B問題は、たぶん私は頭が悪い(初見の問題が意味不明。かわいそうなタイプ)なので何回か受けることになるのだと思います。解説を理解しても(理解した気になっても)試験でこれでは意味がないと思っています。試験を受けた人だからこそ、ポイントを教えてほしいです。
2023.07.10 01:51
jataroさん  
(No.13)
皆さん、お祝いをしていただき本当にありがとうございます...!!!!
恐縮ながら解く際に意識をしたことなどを、残します。

科目Aに関しては、本当に用語の意味や細かな特徴などが識別できて知識として定着しているかが大事だと強く痛感しました。。。
この科目A670点というなんとも言えない点数がどのくらい痛感したかを物語っていると思います笑
あまりにもテキストを読まなさすぎたという自分の愚かさを感じました。
計算問題をしっかり解いていればもう少し取れたのかもしれませんけどね。
まじで計算問題は解きませんでした。おすすめはしないですけどね。
過去問をひたすら回すのはもちろん効果的だとは思いますが、逆に回しすぎも良くないかもしれません。正解の選択肢を覚えるまで回してしまったのを私は逆に後悔しています。
私の勝負どころである用語問題でつっかえてしまったので、選択肢を丸暗記してしまっていた弊害かなと思います。
過去問にも問題文や選択肢が少し異なる類似問題がある通り出題側もあれやこれやと微妙な表現を変えて対抗してきますので...そこは注意点ですかね。
出題者と挑戦者の対戦みたいな感じで挑みました。


科目Bは、何といっても問題文の読解力とトレース能力が物を言うと思います。
もし得意な言語などがありましたらそれに置き換えて考えるのも良しですね。
「これは結局の所何をしようとしているのかな」という疑問を自分の中で立てながら解くことを意識しました!
プログラムの目的を再確認しながら解くということですね。
プログラム読解につっかえたら目的を再確認し、トレースに行き詰まったらもう一度確認...というのを繰り返します。
中にはこんなコサイン類似度を返すとかいう訳分からんプログラムもありますが...
結果を返すプログラムには必ずreturn文がありますが、これこそが目的ですね。

ひとまずは配列、リスト、スタック、キューなど値を格納する系詰め物の仕組みを抑えておけば問題ないです。
大抵はこれらのどれかがうまいこと使われていますね。
問題を見たら「どうせリストか配列が使われてんだろ?」ぐらいには想定して大丈夫です。


...意識したことや感想などを書きましたが、少しでも挑むときの心の持ち様と言いますか、参考にしていただければいいなと思っています。
私も高度試験を突破できるように頑張ります。

皆さんの努力が叶います様、願っています。
2023.07.10 17:57
手紙さん 
(No.14)
ありがとうございます!!!
コピペしてメモ帳に保存しました!!
詰め物系、探す系、並べる系、構えずに自分のものしたいです。。。
やはりトレースですね!!!!
2023.07.10 22:45

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop